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