blob: ec821bae4eb3e4f5d1dd5d465574ec4366db6592 [file] [log] [blame]
Jens Wiklanderc2888862014-08-04 15:39:58 +02001/*
Paul Beesley1fbc97b2019-01-11 18:26:51 +00002 * Copyright (c) 2014-2019, ARM Limited and Contributors. All rights reserved.
Jens Wiklanderc2888862014-08-04 15:39:58 +02003 *
dp-armfa3cf0b2017-05-03 09:38:09 +01004 * SPDX-License-Identifier: BSD-3-Clause
Jens Wiklanderc2888862014-08-04 15:39:58 +02005 */
6
7/* Copyright (c) 2014, Linaro Limited. All rights reserved. */
8
9#ifndef TEESMC_OPTEED_H
10#define TEESMC_OPTEED_H
11
12/*
Paul Beesley1fbc97b2019-01-11 18:26:51 +000013 * This file specifies SMC function IDs used when returning from TEE to the
Jens Wiklanderc2888862014-08-04 15:39:58 +020014 * secure monitor.
15 *
16 * All SMC Function IDs indicates SMC32 Calling Convention but will carry
17 * full 64 bit values in the argument registers if invoked from Aarch64
18 * mode. This violates the SMC Calling Convention, but since this
Paul Beesley1fbc97b2019-01-11 18:26:51 +000019 * convention only coveres API towards Normal World it's something that
Jens Wiklanderc2888862014-08-04 15:39:58 +020020 * only concerns the OP-TEE Dispatcher in ARM Trusted Firmware and OP-TEE
21 * OS at Secure EL1.
22 */
23
24/*
25 * Issued when returning from initial entry.
26 *
27 * Register usage:
28 * r0/x0 SMC Function ID, TEESMC_OPTEED_RETURN_ENTRY_DONE
29 * r1/x1 Pointer to entry vector
30 */
31#define TEESMC_OPTEED_FUNCID_RETURN_ENTRY_DONE 0
32#define TEESMC_OPTEED_RETURN_ENTRY_DONE \
33 TEESMC_OPTEED_RV(TEESMC_OPTEED_FUNCID_RETURN_ENTRY_DONE)
34
35
36
37/*
38 * Issued when returning from "cpu_on" vector
39 *
40 * Register usage:
41 * r0/x0 SMC Function ID, TEESMC_OPTEED_RETURN_ON_DONE
42 * r1/x1 0 on success and anything else to indicate error condition
43 */
44#define TEESMC_OPTEED_FUNCID_RETURN_ON_DONE 1
45#define TEESMC_OPTEED_RETURN_ON_DONE \
46 TEESMC_OPTEED_RV(TEESMC_OPTEED_FUNCID_RETURN_ON_DONE)
47
48/*
49 * Issued when returning from "cpu_off" vector
50 *
51 * Register usage:
52 * r0/x0 SMC Function ID, TEESMC_OPTEED_RETURN_OFF_DONE
53 * r1/x1 0 on success and anything else to indicate error condition
54 */
55#define TEESMC_OPTEED_FUNCID_RETURN_OFF_DONE 2
56#define TEESMC_OPTEED_RETURN_OFF_DONE \
57 TEESMC_OPTEED_RV(TEESMC_OPTEED_FUNCID_RETURN_OFF_DONE)
58
59/*
60 * Issued when returning from "cpu_suspend" vector
61 *
62 * Register usage:
63 * r0/x0 SMC Function ID, TEESMC_OPTEED_RETURN_SUSPEND_DONE
64 * r1/x1 0 on success and anything else to indicate error condition
65 */
66#define TEESMC_OPTEED_FUNCID_RETURN_SUSPEND_DONE 3
67#define TEESMC_OPTEED_RETURN_SUSPEND_DONE \
68 TEESMC_OPTEED_RV(TEESMC_OPTEED_FUNCID_RETURN_SUSPEND_DONE)
69
70/*
71 * Issued when returning from "cpu_resume" vector
72 *
73 * Register usage:
74 * r0/x0 SMC Function ID, TEESMC_OPTEED_RETURN_RESUME_DONE
75 * r1/x1 0 on success and anything else to indicate error condition
76 */
77#define TEESMC_OPTEED_FUNCID_RETURN_RESUME_DONE 4
78#define TEESMC_OPTEED_RETURN_RESUME_DONE \
79 TEESMC_OPTEED_RV(TEESMC_OPTEED_FUNCID_RETURN_RESUME_DONE)
80
81/*
82 * Issued when returning from "std_smc" or "fast_smc" vector
83 *
84 * Register usage:
85 * r0/x0 SMC Function ID, TEESMC_OPTEED_RETURN_CALL_DONE
86 * r1-4/x1-4 Return value 0-3 which will passed to normal world in
87 * r0-3/x0-3
88 */
89#define TEESMC_OPTEED_FUNCID_RETURN_CALL_DONE 5
90#define TEESMC_OPTEED_RETURN_CALL_DONE \
91 TEESMC_OPTEED_RV(TEESMC_OPTEED_FUNCID_RETURN_CALL_DONE)
92
93/*
94 * Issued when returning from "fiq" vector
95 *
96 * Register usage:
97 * r0/x0 SMC Function ID, TEESMC_OPTEED_RETURN_FIQ_DONE
98 */
99#define TEESMC_OPTEED_FUNCID_RETURN_FIQ_DONE 6
100#define TEESMC_OPTEED_RETURN_FIQ_DONE \
101 TEESMC_OPTEED_RV(TEESMC_OPTEED_FUNCID_RETURN_FIQ_DONE)
102
103/*
104 * Issued when returning from "system_off" vector
105 *
106 * Register usage:
107 * r0/x0 SMC Function ID, TEESMC_OPTEED_RETURN_SYSTEM_OFF_DONE
108 */
109#define TEESMC_OPTEED_FUNCID_RETURN_SYSTEM_OFF_DONE 7
110#define TEESMC_OPTEED_RETURN_SYSTEM_OFF_DONE \
111 TEESMC_OPTEED_RV(TEESMC_OPTEED_FUNCID_RETURN_SYSTEM_OFF_DONE)
112
113/*
114 * Issued when returning from "system_reset" vector
115 *
116 * Register usage:
117 * r0/x0 SMC Function ID, TEESMC_OPTEED_RETURN_SYSTEM_RESET_DONE
118 */
119#define TEESMC_OPTEED_FUNCID_RETURN_SYSTEM_RESET_DONE 8
120#define TEESMC_OPTEED_RETURN_SYSTEM_RESET_DONE \
121 TEESMC_OPTEED_RV(TEESMC_OPTEED_FUNCID_RETURN_SYSTEM_RESET_DONE)
122
123#endif /*TEESMC_OPTEED_H*/