1 /* 2 * Copyright (c) 2016-2019,2021-2024, Arm Limited and Contributors. All rights reserved. 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 */ 6 7 #ifndef ARM_SIP_SVC_H 8 #define ARM_SIP_SVC_H 9 10 #include <lib/utils_def.h> 11 12 /* SMC function IDs for SiP Service queries */ 13 14 #define ARM_SIP_SVC_CALL_COUNT U(0x8200ff00) 15 #define ARM_SIP_SVC_UID U(0x8200ff01) 16 /* U(0x8200ff02) is reserved */ 17 #define ARM_SIP_SVC_VERSION U(0x8200ff03) 18 19 /* PMF_SMC_GET_TIMESTAMP_32 0x82000010 */ 20 /* PMF_SMC_GET_TIMESTAMP_64 0xC2000010 */ 21 22 /* Function ID for requesting state switch of lower EL */ 23 #define ARM_SIP_SVC_EXE_STATE_SWITCH U(0x82000020) 24 25 /* DEBUGFS_SMC_32 0x82000030U */ 26 /* DEBUGFS_SMC_64 0xC2000030U */ 27 28 /* 29 * Arm(R) Ethos(TM)-N NPU SiP SMC function IDs 30 * 0xC2000050-0xC200005F 31 * 0x82000050-0x8200005F 32 */ 33 34 /* ARM SiP Service Calls version numbers */ 35 #define ARM_SIP_SVC_VERSION_MAJOR U(0x0) 36 #define ARM_SIP_SVC_VERSION_MINOR U(0x2) 37 38 /* 39 * Arm SiP SMC calls that are primarily used for testing purposes. 40 */ 41 #if PLAT_TEST_SPM 42 #define ARM_SIP_SET_INTERRUPT_PENDING U(0x82000100) 43 #endif 44 45 /** 46 * Arm SiP Service Call for the SPM to leverage RME to protect a give memory range. 47 * Protected memory range is one whose PAS was made secure. 48 * Unprotect relates to reverting a protect operation. 49 */ 50 #if SPMD_SPM_AT_SEL2 && ENABLE_RME 51 #define PLAT_PROTECT_MEM_SMC64 0xC2000101 52 #define PLAT_UNPROTECT_MEM_SMC64 0xC2000102 53 #endif 54 55 /* SiP handler specific to each Arm platform. */ 56 uintptr_t plat_arm_sip_handler(uint32_t smc_fid, 57 u_register_t x1, 58 u_register_t x2, 59 u_register_t x3, 60 u_register_t x4, 61 void *cookie, 62 void *handle, 63 u_register_t flags); 64 65 #endif /* ARM_SIP_SVC_H */ 66