aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/include
diff options
context:
space:
mode:
authorJarkko Sakkinen <jarkko.sakkinen@intel.com>2012-05-08 14:22:43 -0400
committerH. Peter Anvin <hpa@linux.intel.com>2012-05-08 14:48:45 -0400
commitf37240f16bec91f15ce564515f70a6ca9715ce96 (patch)
treed1e98241650bfed0d87f60e3e71a8ad716782f6d /arch/x86/include
parentc4845474a01f699966272536e8416222e3f2d2cb (diff)
x86, realmode: header for trampoline code
Added header for trampoline code that can be used to supply input data to it. This makes interface between real mode code and kernel cleaner and simpler. Replaced two confusing pointers to level4 pgt in trampoline_64.S with a single pointer to the beginning of the page table. Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@intel.com> Link: http://lkml.kernel.org/r/1336501366-28617-21-git-send-email-jarkko.sakkinen@intel.com Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Diffstat (limited to 'arch/x86/include')
-rw-r--r--arch/x86/include/asm/realmode.h32
1 files changed, 20 insertions, 12 deletions
diff --git a/arch/x86/include/asm/realmode.h b/arch/x86/include/asm/realmode.h
index d3ae49f4c3ef..1421eed1c8e8 100644
--- a/arch/x86/include/asm/realmode.h
+++ b/arch/x86/include/asm/realmode.h
@@ -8,25 +8,33 @@
8struct real_mode_header { 8struct real_mode_header {
9 u32 text_start; 9 u32 text_start;
10 u32 ro_end; 10 u32 ro_end;
11 /* reboot */
12#ifdef CONFIG_X86_32
13 u32 machine_real_restart_asm;
14#endif
15 /* SMP trampoline */ 11 /* SMP trampoline */
16 u32 trampoline_data; 12 u32 trampoline_start;
17 u32 trampoline_status; 13 u32 trampoline_status;
18#ifdef CONFIG_X86_32 14 u32 trampoline_header;
19 u32 startup_32_smp; 15#ifdef CONFIG_X86_64
20 u32 boot_gdt; 16 u32 trampoline_pgd;
21#else
22 u32 startup_64_smp;
23 u32 level3_ident_pgt;
24 u32 level3_kernel_pgt;
25#endif 17#endif
18 /* ACPI S3 wakeup */
26#ifdef CONFIG_ACPI_SLEEP 19#ifdef CONFIG_ACPI_SLEEP
27 u32 wakeup_start; 20 u32 wakeup_start;
28 u32 wakeup_header; 21 u32 wakeup_header;
29#endif 22#endif
23 /* APM/BIOS reboot */
24#ifdef CONFIG_X86_32
25 u32 machine_real_restart_asm;
26#endif
27} __attribute__((__packed__));
28
29/* This must match data at trampoline_32/64.S */
30struct trampoline_header {
31#ifdef CONFIG_X86_32
32 u32 start;
33 u16 gdt_limit;
34 u32 gdt_base;
35#else
36 u64 start;
37#endif
30} __attribute__((__packed__)); 38} __attribute__((__packed__));
31 39
32extern struct real_mode_header *real_mode_header; 40extern struct real_mode_header *real_mode_header;