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