ia64/xen-unstable

changeset 17355:ffcc213f8711

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>
author Keir Fraser <keir.fraser@citrix.com>
date Mon Mar 31 16:32:33 2008 +0100 (2008-03-31)
parents d434c73ec8b7
children 615ee2933137
files xen/arch/x86/boot/trampoline.S
line diff
     1.1 --- a/xen/arch/x86/boot/trampoline.S	Mon Mar 31 14:21:13 2008 +0100
     1.2 +++ b/xen/arch/x86/boot/trampoline.S	Mon Mar 31 16:32:33 2008 +0100
     1.3 @@ -156,9 +156,12 @@ 1:      mov     $(BOOT_TRAMPOLINE>>4),%a
     1.4          sti
     1.5  
     1.6  #if defined(__x86_64__)
     1.7 -        /* Declare that our target operating mode is long mode. */
     1.8 -        movw    $0xec00,%ax      # declare target operating mode
     1.9 -        movw    $0x0002,%bx      # long mode
    1.10 +        /*
    1.11 +         * Declare that our target operating mode is long mode.
    1.12 +         * Initialise 32-bit registers since some buggy BIOSes depend on it.
    1.13 +         */
    1.14 +        movl    $0xec00,%eax      # declare target operating mode
    1.15 +        movl    $0x0002,%ebx      # long mode
    1.16          int     $0x15
    1.17  #endif
    1.18