1 #ifndef _ARCH_X86_REALMODE_H 2 #define _ARCH_X86_REALMODE_H 3 4 #include <linux/types.h> 5 #include <asm/io.h> 6 7 /* This must match data at realmode.S */ 8 struct real_mode_header { 9 u32 text_start; 10 u32 ro_end; 11 /* reboot */ 12 #ifdef CONFIG_X86_32 13 u32 machine_real_restart_asm; 14 #endif 15 /* SMP trampoline */ 16 u32 trampoline_data; 17 u32 trampoline_status; 18 #ifdef CONFIG_X86_32 19 u32 startup_32_smp; 20 u32 boot_gdt; 21 #else 22 u32 startup_64_smp; 23 u32 level3_ident_pgt; 24 u32 level3_kernel_pgt; 25 #endif 26 #ifdef CONFIG_ACPI_SLEEP 27 u32 wakeup_start; 28 u32 wakeup_header; 29 #endif 30 } __attribute__((__packed__)); 31 32 extern struct real_mode_header *real_mode_header; 33 extern unsigned char real_mode_blob_end[]; 34 35 extern unsigned long init_rsp; 36 extern unsigned long initial_code; 37 extern unsigned long initial_gs; 38 39 extern unsigned char real_mode_blob[]; 40 extern unsigned char real_mode_relocs[]; 41 42 #ifdef CONFIG_X86_32 43 extern unsigned char startup_32_smp[]; 44 extern unsigned char boot_gdt[]; 45 #else 46 extern unsigned char secondary_startup_64[]; 47 #endif 48 49 extern void __init setup_real_mode(void); 50 51 #endif /* _ARCH_X86_REALMODE_H */ 52