blob: d3ae49f4c3ef82a2aebe1c228cec208f340d22c0 [file] [log] [blame]
Jarkko Sakkinen084ee1c62012-05-08 21:22:26 +03001#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 */
8struct real_mode_header {
9 u32 text_start;
10 u32 ro_end;
Jarkko Sakkinen5a8c9ae2012-05-08 21:22:27 +030011 /* reboot */
12#ifdef CONFIG_X86_32
13 u32 machine_real_restart_asm;
14#endif
Jarkko Sakkinen48927bb2012-05-08 21:22:28 +030015 /* 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
Jarkko Sakkinenc9b77cc2012-05-08 21:22:29 +030026#ifdef CONFIG_ACPI_SLEEP
27 u32 wakeup_start;
28 u32 wakeup_header;
29#endif
Jarkko Sakkinen084ee1c62012-05-08 21:22:26 +030030} __attribute__((__packed__));
31
Jarkko Sakkinenb429dbf2012-05-08 21:22:41 +030032extern struct real_mode_header *real_mode_header;
33extern unsigned char real_mode_blob_end[];
Jarkko Sakkinen084ee1c62012-05-08 21:22:26 +030034
35extern unsigned long init_rsp;
36extern unsigned long initial_code;
37extern unsigned long initial_gs;
38
39extern unsigned char real_mode_blob[];
40extern unsigned char real_mode_relocs[];
41
Jarkko Sakkinen48927bb2012-05-08 21:22:28 +030042#ifdef CONFIG_X86_32
43extern unsigned char startup_32_smp[];
44extern unsigned char boot_gdt[];
45#else
46extern unsigned char secondary_startup_64[];
47#endif
48
Jarkko Sakkinen084ee1c62012-05-08 21:22:26 +030049extern void __init setup_real_mode(void);
50
51#endif /* _ARCH_X86_REALMODE_H */