blob: 59a5b0f1e81c3274f3c1c5c0ffb4ce4014ce35c2 [file] [log] [blame]
Lorenzo Pieralisi6732bc62013-07-17 10:14:45 +01001#ifndef __ASM_SUSPEND_H
2#define __ASM_SUSPEND_H
3
4#define NR_CTX_REGS 11
5
6/*
7 * struct cpu_suspend_ctx must be 16-byte aligned since it is allocated on
8 * the stack, which must be 16-byte aligned on v8
9 */
10struct cpu_suspend_ctx {
11 /*
12 * This struct must be kept in sync with
13 * cpu_do_{suspend/resume} in mm/proc.S
14 */
15 u64 ctx_regs[NR_CTX_REGS];
16 u64 sp;
17} __aligned(16);
Lorenzo Pieralisi95322522013-07-22 12:22:13 +010018
19struct sleep_save_sp {
20 phys_addr_t *save_ptr_stash;
21 phys_addr_t save_ptr_stash_phys;
22};
23
Sudeep Hollaaf391b12015-06-18 15:41:32 +010024extern int cpu_suspend(unsigned long arg, int (*fn)(unsigned long));
Lorenzo Pieralisi95322522013-07-22 12:22:13 +010025extern void cpu_resume(void);
Lorenzo Pieralisi6732bc62013-07-17 10:14:45 +010026#endif