aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/boot/trampoline.S
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2008-03-31 16:32:33 +0100
committerKeir Fraser <keir.fraser@citrix.com>2008-03-31 16:32:33 +0100
commit0aa49ebc5e3f9061f5e9d2d94ec29a994f663493 (patch)
tree1807aa816459bb9703e90ba3e40a3fdd3757609e /xen/arch/x86/boot/trampoline.S
parentc0b0636f388fcbdc168e8254188d7f145ecdab98 (diff)
downloadxen-0aa49ebc5e3f9061f5e9d2d94ec29a994f663493.tar.gz
xen-0aa49ebc5e3f9061f5e9d2d94ec29a994f663493.tar.bz2
xen-0aa49ebc5e3f9061f5e9d2d94ec29a994f663493.zip
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 <keir.fraser@citrix.com>
Diffstat (limited to 'xen/arch/x86/boot/trampoline.S')
-rw-r--r--xen/arch/x86/boot/trampoline.S9
1 files changed, 6 insertions, 3 deletions
diff --git a/xen/arch/x86/boot/trampoline.S b/xen/arch/x86/boot/trampoline.S
index 143612c91f..af4de553a8 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