18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Definitions for the wakeup data structure at the head of the 48c2ecf20Sopenharmony_ci * wakeup code. 58c2ecf20Sopenharmony_ci */ 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_ci#ifndef ARCH_X86_KERNEL_ACPI_RM_WAKEUP_H 88c2ecf20Sopenharmony_ci#define ARCH_X86_KERNEL_ACPI_RM_WAKEUP_H 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci#ifndef __ASSEMBLY__ 118c2ecf20Sopenharmony_ci#include <linux/types.h> 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ci/* This must match data at wakeup.S */ 148c2ecf20Sopenharmony_cistruct wakeup_header { 158c2ecf20Sopenharmony_ci u16 video_mode; /* Video mode number */ 168c2ecf20Sopenharmony_ci u32 pmode_entry; /* Protected mode resume point, 32-bit only */ 178c2ecf20Sopenharmony_ci u16 pmode_cs; 188c2ecf20Sopenharmony_ci u32 pmode_cr0; /* Protected mode cr0 */ 198c2ecf20Sopenharmony_ci u32 pmode_cr3; /* Protected mode cr3 */ 208c2ecf20Sopenharmony_ci u32 pmode_cr4; /* Protected mode cr4 */ 218c2ecf20Sopenharmony_ci u32 pmode_efer_low; /* Protected mode EFER */ 228c2ecf20Sopenharmony_ci u32 pmode_efer_high; 238c2ecf20Sopenharmony_ci u64 pmode_gdt; 248c2ecf20Sopenharmony_ci u32 pmode_misc_en_low; /* Protected mode MISC_ENABLE */ 258c2ecf20Sopenharmony_ci u32 pmode_misc_en_high; 268c2ecf20Sopenharmony_ci u32 pmode_behavior; /* Wakeup routine behavior flags */ 278c2ecf20Sopenharmony_ci u32 realmode_flags; 288c2ecf20Sopenharmony_ci u32 real_magic; 298c2ecf20Sopenharmony_ci u32 signature; /* To check we have correct structure */ 308c2ecf20Sopenharmony_ci} __attribute__((__packed__)); 318c2ecf20Sopenharmony_ci 328c2ecf20Sopenharmony_ciextern struct wakeup_header wakeup_header; 338c2ecf20Sopenharmony_ci#endif 348c2ecf20Sopenharmony_ci 358c2ecf20Sopenharmony_ci#define WAKEUP_HEADER_OFFSET 8 368c2ecf20Sopenharmony_ci#define WAKEUP_HEADER_SIGNATURE 0x51ee1111 378c2ecf20Sopenharmony_ci 388c2ecf20Sopenharmony_ci/* Wakeup behavior bits */ 398c2ecf20Sopenharmony_ci#define WAKEUP_BEHAVIOR_RESTORE_MISC_ENABLE 0 408c2ecf20Sopenharmony_ci#define WAKEUP_BEHAVIOR_RESTORE_CR4 1 418c2ecf20Sopenharmony_ci#define WAKEUP_BEHAVIOR_RESTORE_EFER 2 428c2ecf20Sopenharmony_ci 438c2ecf20Sopenharmony_ci#endif /* ARCH_X86_KERNEL_ACPI_RM_WAKEUP_H */ 44