xref: /optee_os/core/arch/riscv/include/tee/teeabi_opteed.h (revision fbe66cf83199aa6a2aca9f93384cf1ad9185a5f6)
1 /* SPDX-License-Identifier: BSD-2-Clause */
2 /*
3  * Copyright 2023 NXP
4  * Copyright (c) 2014, Linaro Limited
5  */
6 
7 #ifndef __TEE_TEEABI_OPTEED_H
8 #define __TEE_TEEABI_OPTEED_H
9 
10 /*
11  * This file specify ABI function IDs used when returning from TEE to the
12  * secure monitor if applicable.
13  */
14 
15 /*
16  * Issued when returning from initial entry.
17  *
18  * Register usage:
19  * a0	ABI Function ID, TEEABI_OPTEED_RETURN_ENTRY_DONE
20  * a1	Pointer to entry vector
21  */
22 #define TEEABI_OPTEED_FUNCID_RETURN_ENTRY_DONE		0
23 #define TEEABI_OPTEED_RETURN_ENTRY_DONE \
24 	TEEABI_OPTEED_RV(TEEABI_OPTEED_FUNCID_RETURN_ENTRY_DONE)
25 
26 /*
27  * Issued when returning from "cpu_on" vector
28  *
29  * Register usage:
30  * a0	ABI Function ID, TEEABI_OPTEED_RETURN_ON_DONE
31  * a1	0 on success and anything else to indicate error condition
32  */
33 #define TEEABI_OPTEED_FUNCID_RETURN_ON_DONE		1
34 #define TEEABI_OPTEED_RETURN_ON_DONE \
35 	TEEABI_OPTEED_RV(TEEABI_OPTEED_FUNCID_RETURN_ON_DONE)
36 
37 /*
38  * Issued when returning from "cpu_off" vector
39  *
40  * Register usage:
41  * a0	ABI Function ID, TEEABI_OPTEED_RETURN_OFF_DONE
42  * a1	0 on success and anything else to indicate error condition
43  */
44 #define TEEABI_OPTEED_FUNCID_RETURN_OFF_DONE		2
45 #define TEEABI_OPTEED_RETURN_OFF_DONE \
46 	TEEABI_OPTEED_RV(TEEABI_OPTEED_FUNCID_RETURN_OFF_DONE)
47 
48 /*
49  * Issued when returning from "cpu_suspend" vector
50  *
51  * Register usage:
52  * a0	ABI Function ID, TEEABI_OPTEED_RETURN_SUSPEND_DONE
53  * a1	0 on success and anything else to indicate error condition
54  */
55 #define TEEABI_OPTEED_FUNCID_RETURN_SUSPEND_DONE	3
56 #define TEEABI_OPTEED_RETURN_SUSPEND_DONE \
57 	TEEABI_OPTEED_RV(TEEABI_OPTEED_FUNCID_RETURN_SUSPEND_DONE)
58 
59 /*
60  * Issued when returning from "cpu_resume" vector
61  *
62  * Register usage:
63  * a0	ABI Function ID, TEEABI_OPTEED_RETURN_RESUME_DONE
64  * a1	0 on success and anything else to indicate error condition
65  */
66 #define TEEABI_OPTEED_FUNCID_RETURN_RESUME_DONE		4
67 #define TEEABI_OPTEED_RETURN_RESUME_DONE \
68 	TEEABI_OPTEED_RV(TEEABI_OPTEED_FUNCID_RETURN_RESUME_DONE)
69 
70 /*
71  * Issued when returning from "std_abi" or "fast_abi" vector
72  *
73  * Register usage:
74  * a0	ABI Function ID, TEEABI_OPTEED_RETURN_CALL_DONE
75  * a1-4	Return value 0-3 which will passed to non-secure domain in a0-3
76  */
77 #define TEEABI_OPTEED_FUNCID_RETURN_CALL_DONE		5
78 #define TEEABI_OPTEED_RETURN_CALL_DONE \
79 	TEEABI_OPTEED_RV(TEEABI_OPTEED_FUNCID_RETURN_CALL_DONE)
80 
81 /*
82  * Issued when returning from "fiq" vector
83  *
84  * Register usage:
85  * a0	ABI Function ID, TEEABI_OPTEED_RETURN_FIQ_DONE
86  */
87 #define TEEABI_OPTEED_FUNCID_RETURN_FIQ_DONE		6
88 #define TEEABI_OPTEED_RETURN_FIQ_DONE \
89 	TEEABI_OPTEED_RV(TEEABI_OPTEED_FUNCID_RETURN_FIQ_DONE)
90 
91 /*
92  * Issued when returning from "system_off" vector
93  *
94  * Register usage:
95  * a0	ABI Function ID, TEEABI_OPTEED_RETURN_SYSTEM_OFF_DONE
96  */
97 #define TEEABI_OPTEED_FUNCID_RETURN_SYSTEM_OFF_DONE	7
98 #define TEEABI_OPTEED_RETURN_SYSTEM_OFF_DONE \
99 	TEEABI_OPTEED_RV(TEEABI_OPTEED_FUNCID_RETURN_SYSTEM_OFF_DONE)
100 
101 /*
102  * Issued when returning from "system_reset" vector
103  *
104  * Register usage:
105  * a0	ABI Function ID, TEEABI_OPTEED_RETURN_SYSTEM_RESET_DONE
106  */
107 #define TEEABI_OPTEED_FUNCID_RETURN_SYSTEM_RESET_DONE	8
108 #define TEEABI_OPTEED_RETURN_SYSTEM_RESET_DONE \
109 	TEEABI_OPTEED_RV(TEEABI_OPTEED_FUNCID_RETURN_SYSTEM_RESET_DONE)
110 
111 #endif /*__TEE_TEEABI_OPTEED_H*/
112