1b61d94a1SMarc Bonnici /* 2*549bc04fSNishant Sharma * Copyright (c) 2017-2023, ARM Limited and Contributors. All rights reserved. 3b61d94a1SMarc Bonnici * 4b61d94a1SMarc Bonnici * SPDX-License-Identifier: BSD-3-Clause 5b61d94a1SMarc Bonnici */ 6b61d94a1SMarc Bonnici 7b61d94a1SMarc Bonnici #ifndef SPM_COMMON_H 8b61d94a1SMarc Bonnici #define SPM_COMMON_H 9b61d94a1SMarc Bonnici 10b61d94a1SMarc Bonnici #include <context.h> 11b61d94a1SMarc Bonnici 12b61d94a1SMarc Bonnici /******************************************************************************* 13b61d94a1SMarc Bonnici * Constants that allow assembler code to preserve callee-saved registers of the 14b61d94a1SMarc Bonnici * C runtime context while performing a security state switch. 15b61d94a1SMarc Bonnici ******************************************************************************/ 16b61d94a1SMarc Bonnici #define SP_C_RT_CTX_X19 0x0 17b61d94a1SMarc Bonnici #define SP_C_RT_CTX_X20 0x8 18b61d94a1SMarc Bonnici #define SP_C_RT_CTX_X21 0x10 19b61d94a1SMarc Bonnici #define SP_C_RT_CTX_X22 0x18 20b61d94a1SMarc Bonnici #define SP_C_RT_CTX_X23 0x20 21b61d94a1SMarc Bonnici #define SP_C_RT_CTX_X24 0x28 22b61d94a1SMarc Bonnici #define SP_C_RT_CTX_X25 0x30 23b61d94a1SMarc Bonnici #define SP_C_RT_CTX_X26 0x38 24b61d94a1SMarc Bonnici #define SP_C_RT_CTX_X27 0x40 25b61d94a1SMarc Bonnici #define SP_C_RT_CTX_X28 0x48 26b61d94a1SMarc Bonnici #define SP_C_RT_CTX_X29 0x50 27b61d94a1SMarc Bonnici #define SP_C_RT_CTX_X30 0x58 28b61d94a1SMarc Bonnici 29b61d94a1SMarc Bonnici #define SP_C_RT_CTX_SIZE 0x60 30b61d94a1SMarc Bonnici #define SP_C_RT_CTX_ENTRIES (SP_C_RT_CTX_SIZE >> DWORD_SHIFT) 31b61d94a1SMarc Bonnici 32b61d94a1SMarc Bonnici #ifndef __ASSEMBLER__ 33b61d94a1SMarc Bonnici 34b61d94a1SMarc Bonnici #include <stdint.h> 35*549bc04fSNishant Sharma #include <lib/xlat_tables/xlat_tables_v2.h> 36b61d94a1SMarc Bonnici 37b61d94a1SMarc Bonnici /* Assembly helpers */ 38b61d94a1SMarc Bonnici uint64_t spm_secure_partition_enter(uint64_t *c_rt_ctx); 39b61d94a1SMarc Bonnici void __dead2 spm_secure_partition_exit(uint64_t c_rt_ctx, uint64_t ret); 40b61d94a1SMarc Bonnici 41*549bc04fSNishant Sharma /* Helper to obtain a reference to the SP's translation table context */ 42*549bc04fSNishant Sharma xlat_ctx_t *spm_get_sp_xlat_context(void); 43*549bc04fSNishant Sharma 44b61d94a1SMarc Bonnici #endif /* __ASSEMBLER__ */ 45b61d94a1SMarc Bonnici 46b61d94a1SMarc Bonnici #endif /* SPM_COMMON_H */ 47