|
1 /* |
|
2 * Copyright 2001-2003 Pavel Machek <pavel@suse.cz> |
|
3 * Based on code |
|
4 * Copyright 2001 Patrick Mochel <mochel@osdl.org> |
|
5 */ |
|
6 #ifndef _ASM_X86_SUSPEND_64_H |
|
7 #define _ASM_X86_SUSPEND_64_H |
|
8 |
|
9 #include <asm/desc.h> |
|
10 #include <asm/i387.h> |
|
11 |
|
12 static inline int arch_prepare_suspend(void) |
|
13 { |
|
14 return 0; |
|
15 } |
|
16 |
|
17 /* |
|
18 * Image of the saved processor state, used by the low level ACPI suspend to |
|
19 * RAM code and by the low level hibernation code. |
|
20 * |
|
21 * If you modify it, fix arch/x86/kernel/acpi/wakeup_64.S and make sure that |
|
22 * __save/__restore_processor_state(), defined in arch/x86/kernel/suspend_64.c, |
|
23 * still work as required. |
|
24 */ |
|
25 struct saved_context { |
|
26 struct pt_regs regs; |
|
27 u16 ds, es, fs, gs, ss; |
|
28 unsigned long gs_base, gs_kernel_base, fs_base; |
|
29 unsigned long cr0, cr2, cr3, cr4, cr8; |
|
30 unsigned long efer; |
|
31 u16 gdt_pad; |
|
32 u16 gdt_limit; |
|
33 unsigned long gdt_base; |
|
34 u16 idt_pad; |
|
35 u16 idt_limit; |
|
36 unsigned long idt_base; |
|
37 u16 ldt; |
|
38 u16 tss; |
|
39 unsigned long tr; |
|
40 unsigned long safety; |
|
41 unsigned long return_address; |
|
42 } __attribute__((packed)); |
|
43 |
|
44 #define loaddebug(thread,register) \ |
|
45 set_debugreg((thread)->debugreg##register, register) |
|
46 |
|
47 /* routines for saving/restoring kernel state */ |
|
48 extern int acpi_save_state_mem(void); |
|
49 extern char core_restore_code; |
|
50 extern char restore_registers; |
|
51 |
|
52 #endif /* _ASM_X86_SUSPEND_64_H */ |