xref: /openbmc/linux/arch/x86/include/asm/realmode.h (revision c9b77ccb52a5c77233b0e557b7d4417b00ef4012)
1084ee1c6SJarkko Sakkinen #ifndef _ARCH_X86_REALMODE_H
2084ee1c6SJarkko Sakkinen #define _ARCH_X86_REALMODE_H
3084ee1c6SJarkko Sakkinen 
4084ee1c6SJarkko Sakkinen #include <linux/types.h>
5084ee1c6SJarkko Sakkinen #include <asm/io.h>
6084ee1c6SJarkko Sakkinen 
7084ee1c6SJarkko Sakkinen /* This must match data at realmode.S */
8084ee1c6SJarkko Sakkinen struct real_mode_header {
9084ee1c6SJarkko Sakkinen 	u32	text_start;
10084ee1c6SJarkko Sakkinen 	u32	ro_end;
11084ee1c6SJarkko Sakkinen 	u32	end;
125a8c9aebSJarkko Sakkinen 	/* reboot */
135a8c9aebSJarkko Sakkinen #ifdef CONFIG_X86_32
145a8c9aebSJarkko Sakkinen 	u32	machine_real_restart_asm;
155a8c9aebSJarkko Sakkinen #endif
1648927bbbSJarkko Sakkinen 	/* SMP trampoline */
1748927bbbSJarkko Sakkinen 	u32	trampoline_data;
1848927bbbSJarkko Sakkinen 	u32	trampoline_status;
1948927bbbSJarkko Sakkinen #ifdef CONFIG_X86_32
2048927bbbSJarkko Sakkinen 	u32	startup_32_smp;
2148927bbbSJarkko Sakkinen 	u32	boot_gdt;
2248927bbbSJarkko Sakkinen #else
2348927bbbSJarkko Sakkinen 	u32	startup_64_smp;
2448927bbbSJarkko Sakkinen 	u32	level3_ident_pgt;
2548927bbbSJarkko Sakkinen 	u32	level3_kernel_pgt;
2648927bbbSJarkko Sakkinen #endif
27*c9b77ccbSJarkko Sakkinen #ifdef CONFIG_ACPI_SLEEP
28*c9b77ccbSJarkko Sakkinen 	u32	wakeup_start;
29*c9b77ccbSJarkko Sakkinen 	u32	wakeup_header;
30*c9b77ccbSJarkko Sakkinen #endif
31084ee1c6SJarkko Sakkinen } __attribute__((__packed__));
32084ee1c6SJarkko Sakkinen 
33084ee1c6SJarkko Sakkinen extern struct real_mode_header real_mode_header;
34084ee1c6SJarkko Sakkinen extern unsigned char *real_mode_base;
35084ee1c6SJarkko Sakkinen 
36084ee1c6SJarkko Sakkinen extern unsigned long init_rsp;
37084ee1c6SJarkko Sakkinen extern unsigned long initial_code;
38084ee1c6SJarkko Sakkinen extern unsigned long initial_gs;
39084ee1c6SJarkko Sakkinen 
40084ee1c6SJarkko Sakkinen extern unsigned char real_mode_blob[];
41084ee1c6SJarkko Sakkinen extern unsigned char real_mode_relocs[];
42084ee1c6SJarkko Sakkinen 
4348927bbbSJarkko Sakkinen #ifdef CONFIG_X86_32
4448927bbbSJarkko Sakkinen extern unsigned char startup_32_smp[];
4548927bbbSJarkko Sakkinen extern unsigned char boot_gdt[];
4648927bbbSJarkko Sakkinen #else
4748927bbbSJarkko Sakkinen extern unsigned char secondary_startup_64[];
4848927bbbSJarkko Sakkinen #endif
4948927bbbSJarkko Sakkinen 
50084ee1c6SJarkko Sakkinen extern void __init setup_real_mode(void);
51084ee1c6SJarkko Sakkinen 
52084ee1c6SJarkko Sakkinen #endif /* _ARCH_X86_REALMODE_H */
53