linux/arch/x86/kernel/acpi/realmode/wakeup.h
<<
>>
Prefs
   1/*
   2 * Definitions for the wakeup data structure at the head of the
   3 * wakeup code.
   4 */
   5
   6#ifndef ARCH_X86_KERNEL_ACPI_RM_WAKEUP_H
   7#define ARCH_X86_KERNEL_ACPI_RM_WAKEUP_H
   8
   9#ifndef __ASSEMBLY__
  10#include <linux/types.h>
  11
  12/* This must match data at wakeup.S */
  13struct wakeup_header {
  14        u16 video_mode;         /* Video mode number */
  15        u16 _jmp1;              /* ljmpl opcode, 32-bit only */
  16        u32 pmode_entry;        /* Protected mode resume point, 32-bit only */
  17        u16 _jmp2;              /* CS value, 32-bit only */
  18        u32 pmode_cr0;          /* Protected mode cr0 */
  19        u32 pmode_cr3;          /* Protected mode cr3 */
  20        u32 pmode_cr4;          /* Protected mode cr4 */
  21        u32 pmode_efer_low;     /* Protected mode EFER */
  22        u32 pmode_efer_high;
  23        u64 pmode_gdt;
  24        u32 realmode_flags;
  25        u32 real_magic;
  26        u16 trampoline_segment; /* segment with trampoline code, 64-bit only */
  27        u8  _pad1;
  28        u8  wakeup_jmp;
  29        u16 wakeup_jmp_off;
  30        u16 wakeup_jmp_seg;
  31        u64 wakeup_gdt[3];
  32        u32 signature;          /* To check we have correct structure */
  33} __attribute__((__packed__));
  34
  35extern struct wakeup_header wakeup_header;
  36#endif
  37
  38#define WAKEUP_HEADER_OFFSET    8
  39#define WAKEUP_HEADER_SIGNATURE 0x51ee1111
  40#define WAKEUP_END_SIGNATURE    0x65a22c82
  41
  42#endif /* ARCH_X86_KERNEL_ACPI_RM_WAKEUP_H */
  43