1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * Copyright 2001-2002 Pavel Machek <pavel@suse.cz> 4 * Based on code 5 * Copyright 2001 Patrick Mochel <mochel@osdl.org> 6 */ 7 #ifndef _ASM_X86_SUSPEND_32_H 8 #define _ASM_X86_SUSPEND_32_H 9 10 #include <asm/desc.h> 11 #include <asm/fpu/api.h> 12 #include <asm/msr.h> 13 14 /* image of the saved processor state */ 15 struct saved_context { 16 unsigned long cr0, cr2, cr3, cr4; 17 u64 misc_enable; 18 struct saved_msrs saved_msrs; 19 struct desc_ptr gdt_desc; 20 struct desc_ptr idt; 21 u16 ldt; 22 u16 tss; 23 unsigned long tr; 24 unsigned long safety; 25 unsigned long return_address; 26 /* 27 * On x86_32, all segment registers except gs are saved at kernel 28 * entry in pt_regs. 29 */ 30 u16 gs; 31 bool misc_enable_saved; 32 } __attribute__((packed)); 33 34 /* routines for saving/restoring kernel state */ 35 extern char core_restore_code[]; 36 extern char restore_registers[]; 37 38 #endif /* _ASM_X86_SUSPEND_32_H */ 39