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