From: Keir Fraser Date: Mon, 31 Mar 2008 15:40:34 +0000 (+0100) Subject: x86_64: Initialise upper half of 32-bit parameter registers when X-Git-Tag: 3.2.1-rc3~9 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=00d2a35ea05024ead4c5c4d9ec4c696d7020c892;p=people%2Fvhanquez%2Fxen.git x86_64: Initialise upper half of 32-bit parameter registers when making Target Mode BIOS call. Fixes boot problems with some buggy BIOSes. Signed-off-by: Keir Fraser xen-unstable changeset: 17325:ffcc213f87112a9bcae2524dc9dd08bc13911d8c xen-unstable date: Mon Mar 31 16:32:33 2008 +0100 --- diff --git a/xen/arch/x86/boot/trampoline.S b/xen/arch/x86/boot/trampoline.S index 143612c91..af4de553a 100644 --- a/xen/arch/x86/boot/trampoline.S +++ b/xen/arch/x86/boot/trampoline.S @@ -156,9 +156,12 @@ trampoline_boot_cpu_entry: sti #if defined(__x86_64__) - /* Declare that our target operating mode is long mode. */ - movw $0xec00,%ax # declare target operating mode - movw $0x0002,%bx # long mode + /* + * Declare that our target operating mode is long mode. + * Initialise 32-bit registers since some buggy BIOSes depend on it. + */ + movl $0xec00,%eax # declare target operating mode + movl $0x0002,%ebx # long mode int $0x15 #endif