Pavel Machek | e44b7b7 | 2008-04-10 23:28:10 +0200 | [diff] [blame] | 1 | /* |
| 2 | * Definitions for the wakeup data structure at the head of the |
| 3 | * wakeup code. |
| 4 | */ |
| 5 | |
| 6 | #ifndef ARCH_X86_KERNEL_ACPI_RM_WAKEUP_H |
| 7 | #define ARCH_X86_KERNEL_ACPI_RM_WAKEUP_H |
| 8 | |
| 9 | #ifndef __ASSEMBLY__ |
| 10 | #include <linux/types.h> |
| 11 | |
| 12 | /* This must match data at wakeup.S */ |
| 13 | struct wakeup_header { |
| 14 | u16 video_mode; /* Video mode number */ |
Pavel Machek | e44b7b7 | 2008-04-10 23:28:10 +0200 | [diff] [blame] | 15 | u32 pmode_entry; /* Protected mode resume point, 32-bit only */ |
Jarkko Sakkinen | c9b77cc | 2012-05-08 21:22:29 +0300 | [diff] [blame] | 16 | u16 pmode_cs; |
Pavel Machek | e44b7b7 | 2008-04-10 23:28:10 +0200 | [diff] [blame] | 17 | u32 pmode_cr0; /* Protected mode cr0 */ |
| 18 | u32 pmode_cr3; /* Protected mode cr3 */ |
| 19 | u32 pmode_cr4; /* Protected mode cr4 */ |
| 20 | u32 pmode_efer_low; /* Protected mode EFER */ |
| 21 | u32 pmode_efer_high; |
| 22 | u64 pmode_gdt; |
Kees Cook | 7a31366 | 2011-07-06 18:10:34 -0700 | [diff] [blame] | 23 | u32 pmode_misc_en_low; /* Protected mode MISC_ENABLE */ |
| 24 | u32 pmode_misc_en_high; |
| 25 | u32 pmode_behavior; /* Wakeup routine behavior flags */ |
Pavel Machek | e44b7b7 | 2008-04-10 23:28:10 +0200 | [diff] [blame] | 26 | u32 realmode_flags; |
| 27 | u32 real_magic; |
Pavel Machek | e44b7b7 | 2008-04-10 23:28:10 +0200 | [diff] [blame] | 28 | u32 signature; /* To check we have correct structure */ |
| 29 | } __attribute__((__packed__)); |
| 30 | |
| 31 | extern struct wakeup_header wakeup_header; |
| 32 | #endif |
| 33 | |
H. Peter Anvin | d1ee433 | 2011-02-14 15:42:46 -0800 | [diff] [blame] | 34 | #define WAKEUP_HEADER_OFFSET 8 |
| 35 | #define WAKEUP_HEADER_SIGNATURE 0x51ee1111 |
Pavel Machek | e44b7b7 | 2008-04-10 23:28:10 +0200 | [diff] [blame] | 36 | |
Kees Cook | 7a31366 | 2011-07-06 18:10:34 -0700 | [diff] [blame] | 37 | /* Wakeup behavior bits */ |
| 38 | #define WAKEUP_BEHAVIOR_RESTORE_MISC_ENABLE 0 |
H. Peter Anvin | 73201db | 2012-09-26 15:02:34 -0700 | [diff] [blame] | 39 | #define WAKEUP_BEHAVIOR_RESTORE_CR4 1 |
| 40 | #define WAKEUP_BEHAVIOR_RESTORE_EFER 2 |
Kees Cook | 7a31366 | 2011-07-06 18:10:34 -0700 | [diff] [blame] | 41 | |
Pavel Machek | e44b7b7 | 2008-04-10 23:28:10 +0200 | [diff] [blame] | 42 | #endif /* ARCH_X86_KERNEL_ACPI_RM_WAKEUP_H */ |