x86, realmode: header for trampoline code
[firefly-linux-kernel-4.4.55.git] / arch / x86 / include / asm / realmode.h
index d3ae49f4c3ef82a2aebe1c228cec208f340d22c0..1421eed1c8e8586eff49fec7fd9aab7001cb6be8 100644 (file)
@@ -8,24 +8,32 @@
 struct real_mode_header {
        u32     text_start;
        u32     ro_end;
-       /* reboot */
-#ifdef CONFIG_X86_32
-       u32     machine_real_restart_asm;
-#endif
        /* SMP trampoline */
-       u32     trampoline_data;
+       u32     trampoline_start;
        u32     trampoline_status;
-#ifdef CONFIG_X86_32
-       u32     startup_32_smp;
-       u32     boot_gdt;
-#else
-       u32     startup_64_smp;
-       u32     level3_ident_pgt;
-       u32     level3_kernel_pgt;
+       u32     trampoline_header;
+#ifdef CONFIG_X86_64
+       u32     trampoline_pgd;
 #endif
+       /* ACPI S3 wakeup */
 #ifdef CONFIG_ACPI_SLEEP
        u32     wakeup_start;
        u32     wakeup_header;
+#endif
+       /* APM/BIOS reboot */
+#ifdef CONFIG_X86_32
+       u32     machine_real_restart_asm;
+#endif
+} __attribute__((__packed__));
+
+/* This must match data at trampoline_32/64.S */
+struct trampoline_header {
+#ifdef CONFIG_X86_32
+       u32 start;
+       u16 gdt_limit;
+       u32 gdt_base;
+#else
+       u64 start;
 #endif
 } __attribute__((__packed__));