From 9010bfbe7f5b924e65ba626939d0888f4634c19f Mon Sep 17 00:00:00 2001 From: Tom Cosgrove Date: Sun, 13 Mar 2005 22:14:55 +0000 Subject: On return from real mode, reload the GDT using a 16-bit pointer rather than a 32-bit value. Found by Tim Fletcher using Etherboot; thanks to Tim and the Etherboot developers who narrowed this down. Also bump the pxeboot version to 1.01. Tested by Okan Demirmen and krw@: thanks guys. "get these changes into the amd64" deraadt@ --- sys/arch/amd64/stand/libsa/pxe_call.S | 8 ++++---- sys/arch/amd64/stand/pxeboot/conf.c | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) (limited to 'sys') diff --git a/sys/arch/amd64/stand/libsa/pxe_call.S b/sys/arch/amd64/stand/libsa/pxe_call.S index 81247ebe423..25b13a52820 100644 --- a/sys/arch/amd64/stand/libsa/pxe_call.S +++ b/sys/arch/amd64/stand/libsa/pxe_call.S @@ -1,4 +1,4 @@ -/* $OpenBSD: pxe_call.S,v 1.1 2004/03/21 21:37:41 tom Exp $ */ +/* $OpenBSD: pxe_call.S,v 1.2 2005/03/13 22:14:54 tom Exp $ */ /* $NetBSD: pxe_call.S,v 1.2 2002/03/27 17:24:22 kanaoka Exp $ */ /* @@ -172,9 +172,9 @@ p2r16real: real_to_prot: .code16 - xorw %ax, %ax - movw %ax, %ds /* Load %ds so we can get at Gdtr */ - data32 addr32 lgdt Gdtr /* Load the GDT */ + movw $LINKADDR >> 4, %ax /* We're linked to LINKADDR/16:0000 */ + movw %ax, %ds + addr32 lgdt (Gdtr - LINKADDR) /* Reload the GDT */ movl %cr0, %eax /* Enable protected mode */ orl $CR0_PE, %eax diff --git a/sys/arch/amd64/stand/pxeboot/conf.c b/sys/arch/amd64/stand/pxeboot/conf.c index 4344babdf2a..ed9fdd6852e 100644 --- a/sys/arch/amd64/stand/pxeboot/conf.c +++ b/sys/arch/amd64/stand/pxeboot/conf.c @@ -1,4 +1,4 @@ -/* $OpenBSD: conf.c,v 1.1 2004/03/21 21:37:41 tom Exp $ */ +/* $OpenBSD: conf.c,v 1.2 2005/03/13 22:14:54 tom Exp $ */ /* * Copyright (c) 2004 Tom Cosgrove @@ -45,7 +45,7 @@ #include "pxeboot.h" #include "pxe_net.h" -const char version[] = "1.00"; +const char version[] = "1.01"; int debug = 0; #undef _TEST -- cgit v1.2.3