x86 setup: add a near jump to serialize %cr0 on 386/486
authorH. Peter Anvin <hpa@zytor.com>
Mon, 5 Nov 2007 01:50:12 +0000 (17:50 -0800)
committerH. Peter Anvin <hpa@zytor.com>
Mon, 5 Nov 2007 03:47:46 +0000 (19:47 -0800)
The 386 and 486 needs a jump immediately after setting %cr0 in order
to serialize the pipeline.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
arch/x86/boot/pmjump.S

index 2e55923..26baeab 100644 (file)
@@ -31,14 +31,14 @@ protected_mode_jump:
        xorl    %ebx, %ebx              # Flag to indicate this is a boot
        movl    %edx, %esi              # Pointer to boot_params table
        movl    %eax, 2f                # Patch ljmpl instruction
-       jmp     1f                      # Short jump to flush instruction q.
 
-1:
        movw    $__BOOT_DS, %cx
 
        movl    %cr0, %edx
        orb     $1, %dl                 # Protected mode (PE) bit
        movl    %edx, %cr0
+       jmp     1f                      # Short jump to serialize on 386/486
+1:
 
        movw    %cx, %ds
        movw    %cx, %es