Commit | Line | Data |
---|---|---|
e44b7b75 PM |
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 */ | |
e44b7b75 | 15 | u32 pmode_entry; /* Protected mode resume point, 32-bit only */ |
c9b77ccb | 16 | u16 pmode_cs; |
e44b7b75 PM |
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; | |
7a313666 KC |
23 | u32 pmode_misc_en_low; /* Protected mode MISC_ENABLE */ |
24 | u32 pmode_misc_en_high; | |
25 | u32 pmode_behavior; /* Wakeup routine behavior flags */ | |
e44b7b75 PM |
26 | u32 realmode_flags; |
27 | u32 real_magic; | |
e44b7b75 PM |
28 | u32 signature; /* To check we have correct structure */ |
29 | } __attribute__((__packed__)); | |
30 | ||
31 | extern struct wakeup_header wakeup_header; | |
32 | #endif | |
33 | ||
d1ee4335 PA |
34 | #define WAKEUP_HEADER_OFFSET 8 |
35 | #define WAKEUP_HEADER_SIGNATURE 0x51ee1111 | |
e44b7b75 | 36 | |
7a313666 KC |
37 | /* Wakeup behavior bits */ |
38 | #define WAKEUP_BEHAVIOR_RESTORE_MISC_ENABLE 0 | |
73201dbe PA |
39 | #define WAKEUP_BEHAVIOR_RESTORE_CR4 1 |
40 | #define WAKEUP_BEHAVIOR_RESTORE_EFER 2 | |
7a313666 | 41 | |
e44b7b75 | 42 | #endif /* ARCH_X86_KERNEL_ACPI_RM_WAKEUP_H */ |