1 /* 2 * Copyright 2001-2002 Pavel Machek <pavel@suse.cz> 3 * Based on code 4 * Copyright 2001 Patrick Mochel <mochel@osdl.org> 5 */ 6 #ifndef _ASM_X86_SUSPEND_32_H 7 #define _ASM_X86_SUSPEND_32_H 8 9 #include <asm/desc.h> 10 #include <asm/i387.h> 11 12 static inline int arch_prepare_suspend(void) { return 0; } 13 14 /* image of the saved processor state */ 15 struct saved_context { 16 u16 es, fs, gs, ss; 17 unsigned long cr0, cr2, cr3, cr4; 18 struct desc_ptr gdt; 19 struct desc_ptr idt; 20 u16 ldt; 21 u16 tss; 22 unsigned long tr; 23 unsigned long safety; 24 unsigned long return_address; 25 } __attribute__((packed)); 26 27 #ifdef CONFIG_ACPI 28 extern unsigned long saved_eip; 29 extern unsigned long saved_esp; 30 extern unsigned long saved_ebp; 31 extern unsigned long saved_ebx; 32 extern unsigned long saved_esi; 33 extern unsigned long saved_edi; 34 35 static inline void acpi_save_register_state(unsigned long return_point) 36 { 37 saved_eip = return_point; 38 asm volatile("movl %%esp,%0" : "=m" (saved_esp)); 39 asm volatile("movl %%ebp,%0" : "=m" (saved_ebp)); 40 asm volatile("movl %%ebx,%0" : "=m" (saved_ebx)); 41 asm volatile("movl %%edi,%0" : "=m" (saved_edi)); 42 asm volatile("movl %%esi,%0" : "=m" (saved_esi)); 43 } 44 45 #define acpi_restore_register_state() do {} while (0) 46 47 /* routines for saving/restoring kernel state */ 48 extern int acpi_save_state_mem(void); 49 #endif 50 51 #endif /* _ASM_X86_SUSPEND_32_H */ 52