linux/arch/x86/include/asm/realmode.h
<<
>>
Prefs
   1#ifndef _ARCH_X86_REALMODE_H
   2#define _ARCH_X86_REALMODE_H
   3
   4#include <linux/types.h>
   5#include <asm/io.h>
   6
   7/* This must match data at realmode.S */
   8struct real_mode_header {
   9        u32     text_start;
  10        u32     ro_end;
  11        /* SMP trampoline */
  12        u32     trampoline_start;
  13        u32     trampoline_status;
  14        u32     trampoline_header;
  15#ifdef CONFIG_X86_64
  16        u32     trampoline_pgd;
  17#endif
  18        /* ACPI S3 wakeup */
  19#ifdef CONFIG_ACPI_SLEEP
  20        u32     wakeup_start;
  21        u32     wakeup_header;
  22#endif
  23        /* APM/BIOS reboot */
  24        u32     machine_real_restart_asm;
  25#ifdef CONFIG_X86_64
  26        u32     machine_real_restart_seg;
  27#endif
  28};
  29
  30/* This must match data at trampoline_32/64.S */
  31struct trampoline_header {
  32#ifdef CONFIG_X86_32
  33        u32 start;
  34        u16 gdt_pad;
  35        u16 gdt_limit;
  36        u32 gdt_base;
  37#else
  38        u64 start;
  39        u64 efer;
  40        u32 cr4;
  41#endif
  42};
  43
  44extern struct real_mode_header *real_mode_header;
  45extern unsigned char real_mode_blob_end[];
  46
  47extern unsigned long init_rsp;
  48extern unsigned long initial_code;
  49extern unsigned long initial_gs;
  50
  51extern unsigned char real_mode_blob[];
  52extern unsigned char real_mode_relocs[];
  53
  54#ifdef CONFIG_X86_32
  55extern unsigned char startup_32_smp[];
  56extern unsigned char boot_gdt[];
  57#else
  58extern unsigned char secondary_startup_64[];
  59#endif
  60
  61void reserve_real_mode(void);
  62void setup_real_mode(void);
  63
  64#endif /* _ARCH_X86_REALMODE_H */
  65