root/arch/x86/include/asm/suspend_64.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 /*
   3  * Copyright 2001-2003 Pavel Machek <pavel@suse.cz>
   4  * Based on code
   5  * Copyright 2001 Patrick Mochel <mochel@osdl.org>
   6  */
   7 #ifndef _ASM_X86_SUSPEND_64_H
   8 #define _ASM_X86_SUSPEND_64_H
   9 
  10 #include <asm/desc.h>
  11 #include <asm/fpu/api.h>
  12 
  13 /*
  14  * Image of the saved processor state, used by the low level ACPI suspend to
  15  * RAM code and by the low level hibernation code.
  16  *
  17  * If you modify it, fix arch/x86/kernel/acpi/wakeup_64.S and make sure that
  18  * __save/__restore_processor_state(), defined in arch/x86/kernel/suspend_64.c,
  19  * still work as required.
  20  */
  21 struct saved_context {
  22         struct pt_regs regs;
  23 
  24         /*
  25          * User CS and SS are saved in current_pt_regs().  The rest of the
  26          * segment selectors need to be saved and restored here.
  27          */
  28         u16 ds, es, fs, gs;
  29 
  30         /*
  31          * Usermode FSBASE and GSBASE may not match the fs and gs selectors,
  32          * so we save them separately.  We save the kernelmode GSBASE to
  33          * restore percpu access after resume.
  34          */
  35         unsigned long kernelmode_gs_base, usermode_gs_base, fs_base;
  36 
  37         unsigned long cr0, cr2, cr3, cr4;
  38         u64 misc_enable;
  39         bool misc_enable_saved;
  40         struct saved_msrs saved_msrs;
  41         unsigned long efer;
  42         u16 gdt_pad; /* Unused */
  43         struct desc_ptr gdt_desc;
  44         u16 idt_pad;
  45         struct desc_ptr idt;
  46         u16 ldt;
  47         u16 tss;
  48         unsigned long tr;
  49         unsigned long safety;
  50         unsigned long return_address;
  51 } __attribute__((packed));
  52 
  53 #define loaddebug(thread,register) \
  54         set_debugreg((thread)->debugreg##register, register)
  55 
  56 /* routines for saving/restoring kernel state */
  57 extern char core_restore_code[];
  58 extern char restore_registers[];
  59 
  60 #endif /* _ASM_X86_SUSPEND_64_H */

/* [<][>][^][v][top][bottom][index][help] */