*
* We jump into arch/x86/kernel/head_32.S.
*
- * On entry to trampoline_data, the processor is in real mode
+ * On entry to trampoline_start, the processor is in real mode
* with 16-bit addressing and 16-bit data. CS has some value
* and IP is zero. Thus, we load CS to the physical segment
* of the real mode code before doing anything further.
- *
- * The structure real_mode_header includes entries that need
- * to be set up before executing this code:
- *
- * startup_32_smp
- * boot_gdt
*/
#include <linux/linkage.h>
.text
.code16
- .globl trampoline_data
- .balign PAGE_SIZE
-trampoline_data:
+ .balign PAGE_SIZE
+ENTRY(trampoline_start)
wbinvd # Needed for NUMA-Q should be harmless for others
LJMPW_RM(1f)
cli # We should be safe anyway
- movl startup_32_smp, %eax # where we need to go
+ movl tr_start, %eax # where we need to go
movl $0xA5A5A5A5, trampoline_status
# write marker for master knows we're running
* operand size is 16bit. Use lgdtl instead to force operand size
* to 32 bit.
*/
- lidtl boot_idt_descr # load idt with 0, 0
- lgdtl boot_gdt_descr # load gdt with whatever is appropriate
+ lidtl tr_idt # load idt with 0, 0
+ lgdtl tr_gdt # load gdt with whatever is appropriate
movw $1, %dx # protected mode (PE) bit
lmsw %dx # into protected mode
ENTRY(startup_32) # note: also used from wakeup_asm.S
jmp *%eax
- .data
- .globl startup_32_smp, boot_gdt, trampoline_status
- .balign 4
-boot_gdt_descr:
- .word __BOOT_DS + 7 # gdt limit
-boot_gdt:
- .long 0 # gdt base
-
-boot_idt_descr:
- .word 0 # idt limit = 0
- .long 0 # idt base = 0L
-
-trampoline_status:
- .long 0
-
-startup_32_smp:
- .long 0
+#include "trampoline_common.S"