61f5446169
The end signature was defined in wakeup_asm.S as it originally came from the ACPI wakeup code. However, we rely on the existence of the .signature section to expand .bss, otherwise we would have to include code to explicitly zero the .bss depending on the configuration. Since the expanded .bss is just in .init.data anyway, it's easier to always have it expanded. This fixes failures when compiled without CONFIG_ACPI_SLEEP. Reported-by: Ingo Molnar <mingo@kernel.org> Signed-off-by: H. Peter Anvin <hpa@zytor.com> Cc: Jarkko Sakkinen <jarkko.sakkinen@intel.com>
41 lines
1.1 KiB
C
41 lines
1.1 KiB
C
/*
|
|
* Definitions for the wakeup data structure at the head of the
|
|
* wakeup code.
|
|
*/
|
|
|
|
#ifndef ARCH_X86_KERNEL_ACPI_RM_WAKEUP_H
|
|
#define ARCH_X86_KERNEL_ACPI_RM_WAKEUP_H
|
|
|
|
#ifndef __ASSEMBLY__
|
|
#include <linux/types.h>
|
|
|
|
/* This must match data at wakeup.S */
|
|
struct wakeup_header {
|
|
u16 video_mode; /* Video mode number */
|
|
u32 pmode_entry; /* Protected mode resume point, 32-bit only */
|
|
u16 pmode_cs;
|
|
u32 pmode_cr0; /* Protected mode cr0 */
|
|
u32 pmode_cr3; /* Protected mode cr3 */
|
|
u32 pmode_cr4; /* Protected mode cr4 */
|
|
u32 pmode_efer_low; /* Protected mode EFER */
|
|
u32 pmode_efer_high;
|
|
u64 pmode_gdt;
|
|
u32 pmode_misc_en_low; /* Protected mode MISC_ENABLE */
|
|
u32 pmode_misc_en_high;
|
|
u32 pmode_behavior; /* Wakeup routine behavior flags */
|
|
u32 realmode_flags;
|
|
u32 real_magic;
|
|
u32 signature; /* To check we have correct structure */
|
|
} __attribute__((__packed__));
|
|
|
|
extern struct wakeup_header wakeup_header;
|
|
#endif
|
|
|
|
#define WAKEUP_HEADER_OFFSET 8
|
|
#define WAKEUP_HEADER_SIGNATURE 0x51ee1111
|
|
|
|
/* Wakeup behavior bits */
|
|
#define WAKEUP_BEHAVIOR_RESTORE_MISC_ENABLE 0
|
|
|
|
#endif /* ARCH_X86_KERNEL_ACPI_RM_WAKEUP_H */
|