diff options
Diffstat (limited to 'include/asm-x86/suspend_32.h')
-rw-r--r-- | include/asm-x86/suspend_32.h | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/include/asm-x86/suspend_32.h b/include/asm-x86/suspend_32.h new file mode 100644 index 000000000000..a2520732ffd6 --- /dev/null +++ b/include/asm-x86/suspend_32.h | |||
@@ -0,0 +1,46 @@ | |||
1 | /* | ||
2 | * Copyright 2001-2002 Pavel Machek <pavel@suse.cz> | ||
3 | * Based on code | ||
4 | * Copyright 2001 Patrick Mochel <mochel@osdl.org> | ||
5 | */ | ||
6 | #include <asm/desc.h> | ||
7 | #include <asm/i387.h> | ||
8 | |||
9 | static inline int arch_prepare_suspend(void) { return 0; } | ||
10 | |||
11 | /* image of the saved processor state */ | ||
12 | struct saved_context { | ||
13 | u16 es, fs, gs, ss; | ||
14 | unsigned long cr0, cr2, cr3, cr4; | ||
15 | struct Xgt_desc_struct gdt; | ||
16 | struct Xgt_desc_struct idt; | ||
17 | u16 ldt; | ||
18 | u16 tss; | ||
19 | unsigned long tr; | ||
20 | unsigned long safety; | ||
21 | unsigned long return_address; | ||
22 | } __attribute__((packed)); | ||
23 | |||
24 | #ifdef CONFIG_ACPI | ||
25 | extern unsigned long saved_eip; | ||
26 | extern unsigned long saved_esp; | ||
27 | extern unsigned long saved_ebp; | ||
28 | extern unsigned long saved_ebx; | ||
29 | extern unsigned long saved_esi; | ||
30 | extern unsigned long saved_edi; | ||
31 | |||
32 | static inline void acpi_save_register_state(unsigned long return_point) | ||
33 | { | ||
34 | saved_eip = return_point; | ||
35 | asm volatile ("movl %%esp,%0" : "=m" (saved_esp)); | ||
36 | asm volatile ("movl %%ebp,%0" : "=m" (saved_ebp)); | ||
37 | asm volatile ("movl %%ebx,%0" : "=m" (saved_ebx)); | ||
38 | asm volatile ("movl %%edi,%0" : "=m" (saved_edi)); | ||
39 | asm volatile ("movl %%esi,%0" : "=m" (saved_esi)); | ||
40 | } | ||
41 | |||
42 | #define acpi_restore_register_state() do {} while (0) | ||
43 | |||
44 | /* routines for saving/restoring kernel state */ | ||
45 | extern int acpi_save_state_mem(void); | ||
46 | #endif | ||