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