xref: /linux/arch/x86/realmode/rm/wakeup.h (revision 498495dba268b20e8eadd7fe93c140c68b6cc9d2)
1*b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
2c4845474SJarkko Sakkinen /*
3c4845474SJarkko Sakkinen  * Definitions for the wakeup data structure at the head of the
4c4845474SJarkko Sakkinen  * wakeup code.
5c4845474SJarkko Sakkinen  */
6c4845474SJarkko Sakkinen 
7c4845474SJarkko Sakkinen #ifndef ARCH_X86_KERNEL_ACPI_RM_WAKEUP_H
8c4845474SJarkko Sakkinen #define ARCH_X86_KERNEL_ACPI_RM_WAKEUP_H
9c4845474SJarkko Sakkinen 
10c4845474SJarkko Sakkinen #ifndef __ASSEMBLY__
11c4845474SJarkko Sakkinen #include <linux/types.h>
12c4845474SJarkko Sakkinen 
13c4845474SJarkko Sakkinen /* This must match data at wakeup.S */
14c4845474SJarkko Sakkinen struct wakeup_header {
15c4845474SJarkko Sakkinen 	u16 video_mode;		/* Video mode number */
16c4845474SJarkko Sakkinen 	u32 pmode_entry;	/* Protected mode resume point, 32-bit only */
17c4845474SJarkko Sakkinen 	u16 pmode_cs;
18c4845474SJarkko Sakkinen 	u32 pmode_cr0;		/* Protected mode cr0 */
19c4845474SJarkko Sakkinen 	u32 pmode_cr3;		/* Protected mode cr3 */
20c4845474SJarkko Sakkinen 	u32 pmode_cr4;		/* Protected mode cr4 */
21c4845474SJarkko Sakkinen 	u32 pmode_efer_low;	/* Protected mode EFER */
22c4845474SJarkko Sakkinen 	u32 pmode_efer_high;
23c4845474SJarkko Sakkinen 	u64 pmode_gdt;
24c4845474SJarkko Sakkinen 	u32 pmode_misc_en_low;	/* Protected mode MISC_ENABLE */
25c4845474SJarkko Sakkinen 	u32 pmode_misc_en_high;
26c4845474SJarkko Sakkinen 	u32 pmode_behavior;	/* Wakeup routine behavior flags */
27c4845474SJarkko Sakkinen 	u32 realmode_flags;
28c4845474SJarkko Sakkinen 	u32 real_magic;
29c4845474SJarkko Sakkinen 	u32 signature;		/* To check we have correct structure */
30c4845474SJarkko Sakkinen } __attribute__((__packed__));
31c4845474SJarkko Sakkinen 
32c4845474SJarkko Sakkinen extern struct wakeup_header wakeup_header;
33c4845474SJarkko Sakkinen #endif
34c4845474SJarkko Sakkinen 
35c4845474SJarkko Sakkinen #define WAKEUP_HEADER_OFFSET	8
36c4845474SJarkko Sakkinen #define WAKEUP_HEADER_SIGNATURE 0x51ee1111
37c4845474SJarkko Sakkinen 
38c4845474SJarkko Sakkinen /* Wakeup behavior bits */
39c4845474SJarkko Sakkinen #define WAKEUP_BEHAVIOR_RESTORE_MISC_ENABLE     0
4073201dbeSH. Peter Anvin #define WAKEUP_BEHAVIOR_RESTORE_CR4		1
4173201dbeSH. Peter Anvin #define WAKEUP_BEHAVIOR_RESTORE_EFER		2
42c4845474SJarkko Sakkinen 
43c4845474SJarkko Sakkinen #endif /* ARCH_X86_KERNEL_ACPI_RM_WAKEUP_H */
44