/* SPDX-License-Identifier: GPL-2.0 */ 
 | 
/* 
 | 
 * 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 
 | 
#define WAKEUP_BEHAVIOR_RESTORE_CR4        1 
 | 
#define WAKEUP_BEHAVIOR_RESTORE_EFER        2 
 | 
  
 | 
#endif /* ARCH_X86_KERNEL_ACPI_RM_WAKEUP_H */ 
 |