Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | /* |
2 | * Copyright 2001-2002 Pavel Machek <pavel@suse.cz> | |
3 | * Based on code | |
4 | * Copyright 2001 Patrick Mochel <mochel@osdl.org> | |
5 | */ | |
77ef50a5 VN |
6 | #ifndef ASM_X86__SUSPEND_32_H |
7 | #define ASM_X86__SUSPEND_32_H | |
0db125c4 | 8 | |
1da177e4 LT |
9 | #include <asm/desc.h> |
10 | #include <asm/i387.h> | |
11 | ||
2d4a34c9 | 12 | static inline int arch_prepare_suspend(void) { return 0; } |
1da177e4 LT |
13 | |
14 | /* image of the saved processor state */ | |
15 | struct saved_context { | |
cf030ebd | 16 | u16 es, fs, gs, ss; |
1da177e4 | 17 | unsigned long cr0, cr2, cr3, cr4; |
6b68f01b GOC |
18 | struct desc_ptr gdt; |
19 | struct desc_ptr idt; | |
1da177e4 LT |
20 | u16 ldt; |
21 | u16 tss; | |
22 | unsigned long tr; | |
23 | unsigned long safety; | |
24 | unsigned long return_address; | |
25 | } __attribute__((packed)); | |
26 | ||
e8b2fd01 | 27 | #ifdef CONFIG_ACPI |
1da177e4 LT |
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; | |
cf030ebd JP |
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)); | |
1da177e4 LT |
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 | |
0db125c4 | 50 | |
77ef50a5 | 51 | #endif /* ASM_X86__SUSPEND_32_H */ |