xref: /rk3399_ARM-atf/services/std_svc/spm/common/include/spm_common.h (revision ad4e978774176a2b0dc6e94c7f63c7e90e031b1e)
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