diff options
-rw-r--r-- | arch/x86_64/kernel/trampoline.S | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/arch/x86_64/kernel/trampoline.S b/arch/x86_64/kernel/trampoline.S index 6d9c9a8e7d0e..23a03eb91fc7 100644 --- a/arch/x86_64/kernel/trampoline.S +++ b/arch/x86_64/kernel/trampoline.S | |||
@@ -42,8 +42,15 @@ r_base = . | |||
42 | movl $0xA5A5A5A5, trampoline_data - r_base | 42 | movl $0xA5A5A5A5, trampoline_data - r_base |
43 | # write marker for master knows we're running | 43 | # write marker for master knows we're running |
44 | 44 | ||
45 | lidt idt_48 - r_base # load idt with 0, 0 | 45 | /* |
46 | lgdt gdt_48 - r_base # load gdt with whatever is appropriate | 46 | * GDT tables in non default location kernel can be beyond 16MB and |
47 | * lgdt will not be able to load the address as in real mode default | ||
48 | * operand size is 16bit. Use lgdtl instead to force operand size | ||
49 | * to 32 bit. | ||
50 | */ | ||
51 | |||
52 | lidtl idt_48 - r_base # load idt with 0, 0 | ||
53 | lgdtl gdt_48 - r_base # load gdt with whatever is appropriate | ||
47 | 54 | ||
48 | xor %ax, %ax | 55 | xor %ax, %ax |
49 | inc %ax # protected mode (PE) bit | 56 | inc %ax # protected mode (PE) bit |