xref: /openbmc/linux/arch/x86/include/asm/realmode.h (revision b429dbf6e866bd6dadb56fae66f61f611cde57ff)
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