Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git] / arch / x86_64 / kernel / trampoline.S
index 6d9c9a8..23a03eb 100644 (file)
@@ -42,8 +42,15 @@ r_base = .
        movl    $0xA5A5A5A5, trampoline_data - r_base
                                # write marker for master knows we're running
 
-       lidt    idt_48 - r_base # load idt with 0, 0
-       lgdt    gdt_48 - r_base # load gdt with whatever is appropriate
+       /*
+        * GDT tables in non default location kernel can be beyond 16MB and
+        * lgdt will not be able to load the address as in real mode default
+        * operand size is 16bit. Use lgdtl instead to force operand size
+        * to 32 bit.
+        */
+
+       lidtl   idt_48 - r_base # load idt with 0, 0
+       lgdtl   gdt_48 - r_base # load gdt with whatever is appropriate
 
        xor     %ax, %ax
        inc     %ax             # protected mode (PE) bit