diff options
author | H. Peter Anvin <hpa@zytor.com> | 2008-06-30 15:42:47 -0700 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-07-01 10:53:29 +0200 |
commit | 2ee2394b682c0ee99b0f083abe6c57727e6edb69 (patch) | |
tree | 7ff33c81815193ffce2133060cbad1365aea819d /arch/x86/boot/pmjump.S | |
parent | 908ec7afacfdc83dc10938ed1d3c38b3526034ec (diff) | |
download | linux-2ee2394b682c0ee99b0f083abe6c57727e6edb69.tar.gz linux-2ee2394b682c0ee99b0f083abe6c57727e6edb69.tar.bz2 linux-2ee2394b682c0ee99b0f083abe6c57727e6edb69.zip |
x86: fix regression: boot failure on AMD Elan TS-5500
Jeremy Fitzhardinge wrote:
>
> Maybe it really does require the far jump immediately after setting PE
> in cr0...
>
> Hm, I don't remember this paragraph being in vol 3a, section 8.9.1
> before. Is it a recent addition?
>
> Random failures can occur if other instructions exist between steps
> 3 and 4 above. Failures will be readily seen in some situations,
> such as when instructions that reference memory are inserted between
> steps 3 and 4 while in system management mode.
>
I don't remember that, either.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/boot/pmjump.S')
-rw-r--r-- | arch/x86/boot/pmjump.S | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/x86/boot/pmjump.S b/arch/x86/boot/pmjump.S index ab049d40a884..141b6e20ed31 100644 --- a/arch/x86/boot/pmjump.S +++ b/arch/x86/boot/pmjump.S @@ -33,6 +33,8 @@ protected_mode_jump: movw %cs, %bx shll $4, %ebx addl %ebx, 2f + jmp 1f # Short jump to serialize on 386/486 +1: movw $__BOOT_DS, %cx movw $__BOOT_TSS, %di @@ -40,8 +42,6 @@ protected_mode_jump: movl %cr0, %edx orb $X86_CR0_PE, %dl # Protected mode movl %edx, %cr0 - jmp 1f # Short jump to serialize on 386/486 -1: # Transition to 32-bit mode .byte 0x66, 0xea # ljmpl opcode |