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