1
2 #ifndef __ASM_SUSPEND_H
3 #define __ASM_SUSPEND_H
4
5 #define NR_CTX_REGS 12
6 #define NR_CALLEE_SAVED_REGS 12
7
8
9
10
11
12 struct cpu_suspend_ctx {
13
14
15
16
17 u64 ctx_regs[NR_CTX_REGS];
18 u64 sp;
19 } __aligned(16);
20
21
22
23
24
25
26
27
28
29
30
31
32
33 struct sleep_stack_data {
34 struct cpu_suspend_ctx system_regs;
35 unsigned long callee_saved_regs[NR_CALLEE_SAVED_REGS];
36 };
37
38 extern unsigned long *sleep_save_stash;
39
40 extern int cpu_suspend(unsigned long arg, int (*fn)(unsigned long));
41 extern void cpu_resume(void);
42 int __cpu_suspend_enter(struct sleep_stack_data *state);
43 void __cpu_suspend_exit(void);
44 void _cpu_resume(void);
45
46 int swsusp_arch_suspend(void);
47 int swsusp_arch_resume(void);
48 int arch_hibernation_header_save(void *addr, unsigned int max_size);
49 int arch_hibernation_header_restore(void *addr);
50
51
52 int hibernate_resume_nonboot_cpu_disable(void);
53
54 #endif