162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Definitions for the wakeup data structure at the head of the 462306a36Sopenharmony_ci * wakeup code. 562306a36Sopenharmony_ci */ 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci#ifndef ARCH_X86_KERNEL_ACPI_RM_WAKEUP_H 862306a36Sopenharmony_ci#define ARCH_X86_KERNEL_ACPI_RM_WAKEUP_H 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci#ifndef __ASSEMBLY__ 1162306a36Sopenharmony_ci#include <linux/types.h> 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci/* This must match data at wakeup.S */ 1462306a36Sopenharmony_cistruct wakeup_header { 1562306a36Sopenharmony_ci u16 video_mode; /* Video mode number */ 1662306a36Sopenharmony_ci u32 pmode_entry; /* Protected mode resume point, 32-bit only */ 1762306a36Sopenharmony_ci u16 pmode_cs; 1862306a36Sopenharmony_ci u32 pmode_cr0; /* Protected mode cr0 */ 1962306a36Sopenharmony_ci u32 pmode_cr3; /* Protected mode cr3 */ 2062306a36Sopenharmony_ci u32 pmode_cr4; /* Protected mode cr4 */ 2162306a36Sopenharmony_ci u32 pmode_efer_low; /* Protected mode EFER */ 2262306a36Sopenharmony_ci u32 pmode_efer_high; 2362306a36Sopenharmony_ci u64 pmode_gdt; 2462306a36Sopenharmony_ci u32 pmode_misc_en_low; /* Protected mode MISC_ENABLE */ 2562306a36Sopenharmony_ci u32 pmode_misc_en_high; 2662306a36Sopenharmony_ci u32 pmode_behavior; /* Wakeup routine behavior flags */ 2762306a36Sopenharmony_ci u32 realmode_flags; 2862306a36Sopenharmony_ci u32 real_magic; 2962306a36Sopenharmony_ci u32 signature; /* To check we have correct structure */ 3062306a36Sopenharmony_ci} __attribute__((__packed__)); 3162306a36Sopenharmony_ci 3262306a36Sopenharmony_ciextern struct wakeup_header wakeup_header; 3362306a36Sopenharmony_ci#endif 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ci#define WAKEUP_HEADER_OFFSET 8 3662306a36Sopenharmony_ci#define WAKEUP_HEADER_SIGNATURE 0x51ee1111 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_ci/* Wakeup behavior bits */ 3962306a36Sopenharmony_ci#define WAKEUP_BEHAVIOR_RESTORE_MISC_ENABLE 0 4062306a36Sopenharmony_ci#define WAKEUP_BEHAVIOR_RESTORE_CR4 1 4162306a36Sopenharmony_ci#define WAKEUP_BEHAVIOR_RESTORE_EFER 2 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ci#endif /* ARCH_X86_KERNEL_ACPI_RM_WAKEUP_H */ 44