xref: /linux/arch/riscv/include/asm/suspend.h (revision 0a94608f0f7de9b1135ffea3546afe68eafef57f)
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  * Copyright (c) 2021 Western Digital Corporation or its affiliates.
4  * Copyright (c) 2022 Ventana Micro Systems Inc.
5  */
6 
7 #ifndef _ASM_RISCV_SUSPEND_H
8 #define _ASM_RISCV_SUSPEND_H
9 
10 #include <asm/ptrace.h>
11 
12 struct suspend_context {
13 	/* Saved and restored by low-level functions */
14 	struct pt_regs regs;
15 	/* Saved and restored by high-level functions */
16 	unsigned long scratch;
17 	unsigned long tvec;
18 	unsigned long ie;
19 #ifdef CONFIG_MMU
20 	unsigned long satp;
21 #endif
22 };
23 
24 /* Low-level CPU suspend entry function */
25 int __cpu_suspend_enter(struct suspend_context *context);
26 
27 /* High-level CPU suspend which will save context and call finish() */
28 int cpu_suspend(unsigned long arg,
29 		int (*finish)(unsigned long arg,
30 			      unsigned long entry,
31 			      unsigned long context));
32 
33 /* Low-level CPU resume entry function */
34 int __cpu_resume_enter(unsigned long hartid, unsigned long context);
35 
36 #endif
37