xref: /rk3399_ARM-atf/include/services/arm_arch_svc.h (revision 8db170524de1eb83c21ee6344d628961f9b84456)
13a1b0676SDimitris Papastamos /*
2*8db17052SBoyan Karatotev  * Copyright (c) 2018-2024, Arm Limited and Contributors. All rights reserved.
33a1b0676SDimitris Papastamos  *
43a1b0676SDimitris Papastamos  * SPDX-License-Identifier: BSD-3-Clause
53a1b0676SDimitris Papastamos  */
63a1b0676SDimitris Papastamos 
7c3cf06f1SAntonio Nino Diaz #ifndef ARM_ARCH_SVC_H
8c3cf06f1SAntonio Nino Diaz #define ARM_ARCH_SVC_H
93a1b0676SDimitris Papastamos 
103a1b0676SDimitris Papastamos #define SMCCC_VERSION			U(0x80000000)
113a1b0676SDimitris Papastamos #define SMCCC_ARCH_FEATURES		U(0x80000001)
120e753437SManish V Badarkhe #define SMCCC_ARCH_SOC_ID		U(0x80000002)
133a1b0676SDimitris Papastamos #define SMCCC_ARCH_WORKAROUND_1		U(0x80008000)
14b8a25bbbSDimitris Papastamos #define SMCCC_ARCH_WORKAROUND_2		U(0x80007FFF)
159b2510b6SBipin Ravi #define SMCCC_ARCH_WORKAROUND_3		U(0x80003FFF)
16*8db17052SBoyan Karatotev #define SMCCC_ARCH_FEATURE_AVAILABILITY		U(0x80000003)
17b8a25bbbSDimitris Papastamos 
180e753437SManish V Badarkhe #define SMCCC_GET_SOC_VERSION		U(0)
190e753437SManish V Badarkhe #define SMCCC_GET_SOC_REVISION		U(1)
200e753437SManish V Badarkhe 
21*8db17052SBoyan Karatotev #ifndef __ASSEMBLER__
22*8db17052SBoyan Karatotev #if ARCH_FEATURE_AVAILABILITY
23*8db17052SBoyan Karatotev #include <lib/cassert.h>
24*8db17052SBoyan Karatotev 
25*8db17052SBoyan Karatotev #if ENABLE_FEAT_FGT2
26*8db17052SBoyan Karatotev #define SCR_FEAT_FGT2 SCR_FGTEN2_BIT
27*8db17052SBoyan Karatotev #else
28*8db17052SBoyan Karatotev #define SCR_FEAT_FGT2 (0)
29*8db17052SBoyan Karatotev #endif
30*8db17052SBoyan Karatotev 
31*8db17052SBoyan Karatotev #if ENABLE_FEAT_FPMR
32*8db17052SBoyan Karatotev #define SCR_FEAT_FPMR SCR_EnFPM_BIT
33*8db17052SBoyan Karatotev #else
34*8db17052SBoyan Karatotev #define SCR_FEAT_FPMR
35*8db17052SBoyan Karatotev #endif
36*8db17052SBoyan Karatotev 
37*8db17052SBoyan Karatotev #if ENABLE_FEAT_D128
38*8db17052SBoyan Karatotev #define SCR_FEAT_D128 SCR_D128En_BIT
39*8db17052SBoyan Karatotev #else
40*8db17052SBoyan Karatotev #define SCR_FEAT_D128 (0)
41*8db17052SBoyan Karatotev #endif
42*8db17052SBoyan Karatotev 
43*8db17052SBoyan Karatotev #if ENABLE_FEAT_S1PIE
44*8db17052SBoyan Karatotev #define SCR_FEAT_S1PIE SCR_PIEN_BIT
45*8db17052SBoyan Karatotev #else
46*8db17052SBoyan Karatotev #define SCR_FEAT_S1PIE (0)
47*8db17052SBoyan Karatotev #endif
48*8db17052SBoyan Karatotev 
49*8db17052SBoyan Karatotev #if ENABLE_FEAT_SCTLR2
50*8db17052SBoyan Karatotev #define SCR_FEAT_SCTLR2 SCR_SCTLR2En_BIT
51*8db17052SBoyan Karatotev #else
52*8db17052SBoyan Karatotev #define SCR_FEAT_SCTLR2 (0)
53*8db17052SBoyan Karatotev #endif
54*8db17052SBoyan Karatotev 
55*8db17052SBoyan Karatotev #if ENABLE_FEAT_TCR2
56*8db17052SBoyan Karatotev #define SCR_FEAT_TCR2 SCR_TCR2EN_BIT
57*8db17052SBoyan Karatotev #else
58*8db17052SBoyan Karatotev #define SCR_FEAT_TCR2 (0)
59*8db17052SBoyan Karatotev #endif
60*8db17052SBoyan Karatotev 
61*8db17052SBoyan Karatotev #if ENABLE_FEAT_THE
62*8db17052SBoyan Karatotev #define SCR_FEAT_THE SCR_RCWMASKEn_BIT
63*8db17052SBoyan Karatotev #else
64*8db17052SBoyan Karatotev #define SCR_FEAT_THE (0)
65*8db17052SBoyan Karatotev #endif
66*8db17052SBoyan Karatotev 
67*8db17052SBoyan Karatotev #if ENABLE_SME_FOR_NS
68*8db17052SBoyan Karatotev #define SCR_FEAT_SME SCR_ENTP2_BIT
69*8db17052SBoyan Karatotev #else
70*8db17052SBoyan Karatotev #define SCR_FEAT_SME (0)
71*8db17052SBoyan Karatotev #endif
72*8db17052SBoyan Karatotev 
73*8db17052SBoyan Karatotev #if ENABLE_FEAT_GCS
74*8db17052SBoyan Karatotev #define SCR_FEAT_GCS SCR_GCSEn_BIT
75*8db17052SBoyan Karatotev #else
76*8db17052SBoyan Karatotev #define SCR_FEAT_GCS (0)
77*8db17052SBoyan Karatotev #endif
78*8db17052SBoyan Karatotev 
79*8db17052SBoyan Karatotev #if ENABLE_FEAT_HCX
80*8db17052SBoyan Karatotev #define SCR_FEAT_HCX SCR_HXEn_BIT
81*8db17052SBoyan Karatotev #else
82*8db17052SBoyan Karatotev #define SCR_FEAT_HCX (0)
83*8db17052SBoyan Karatotev #endif
84*8db17052SBoyan Karatotev 
85*8db17052SBoyan Karatotev #if ENABLE_FEAT_LS64_ACCDATA
86*8db17052SBoyan Karatotev #define SCR_FEAT_LS64_ACCDATA (SCR_ADEn_BIT | SCR_EnAS0_BIT)
87*8db17052SBoyan Karatotev #else
88*8db17052SBoyan Karatotev #define SCR_FEAT_LS64_ACCDATA (0)
89*8db17052SBoyan Karatotev #endif
90*8db17052SBoyan Karatotev 
91*8db17052SBoyan Karatotev #if ENABLE_FEAT_AMUv1p1
92*8db17052SBoyan Karatotev #define SCR_FEAT_AMUv1p1 SCR_AMVOFFEN_BIT
93*8db17052SBoyan Karatotev #else
94*8db17052SBoyan Karatotev #define SCR_FEAT_AMUv1p1 (0)
95*8db17052SBoyan Karatotev #endif
96*8db17052SBoyan Karatotev 
97*8db17052SBoyan Karatotev #if ENABLE_FEAT_ECV
98*8db17052SBoyan Karatotev #define SCR_FEAT_ECV SCR_ECVEN_BIT
99*8db17052SBoyan Karatotev #else
100*8db17052SBoyan Karatotev #define SCR_FEAT_ECV (0)
101*8db17052SBoyan Karatotev #endif
102*8db17052SBoyan Karatotev 
103*8db17052SBoyan Karatotev #if ENABLE_FEAT_FGT
104*8db17052SBoyan Karatotev #define SCR_FEAT_FGT SCR_FGTEN_BIT
105*8db17052SBoyan Karatotev #else
106*8db17052SBoyan Karatotev #define SCR_FEAT_FGT (0)
107*8db17052SBoyan Karatotev #endif
108*8db17052SBoyan Karatotev 
109*8db17052SBoyan Karatotev #if ENABLE_FEAT_MTE2
110*8db17052SBoyan Karatotev #define SCR_FEAT_MTE2 SCR_ATA_BIT
111*8db17052SBoyan Karatotev #else
112*8db17052SBoyan Karatotev #define SCR_FEAT_MTE2 (0)
113*8db17052SBoyan Karatotev #endif
114*8db17052SBoyan Karatotev 
115*8db17052SBoyan Karatotev #if ENABLE_FEAT_CSV2_2
116*8db17052SBoyan Karatotev #define SCR_FEAT_CSV2_2 SCR_EnSCXT_BIT
117*8db17052SBoyan Karatotev #else
118*8db17052SBoyan Karatotev #define SCR_FEAT_CSV2_2 (0)
119*8db17052SBoyan Karatotev #endif
120*8db17052SBoyan Karatotev 
121*8db17052SBoyan Karatotev #if ENABLE_FEAT_RAS
122*8db17052SBoyan Karatotev #define SCR_FEAT_RAS SCR_TERR_BIT
123*8db17052SBoyan Karatotev #else
124*8db17052SBoyan Karatotev #define SCR_FEAT_RAS (0)
125*8db17052SBoyan Karatotev #endif
126*8db17052SBoyan Karatotev 
127*8db17052SBoyan Karatotev #ifndef SCR_PLAT_FEATS
128*8db17052SBoyan Karatotev #define SCR_PLAT_FEATS (0)
129*8db17052SBoyan Karatotev #endif
130*8db17052SBoyan Karatotev #ifndef SCR_PLAT_FLIPPED
131*8db17052SBoyan Karatotev #define SCR_PLAT_FLIPPED (0)
132*8db17052SBoyan Karatotev #endif
133*8db17052SBoyan Karatotev #ifndef SCR_PLAT_IGNORED
134*8db17052SBoyan Karatotev #define SCR_PLAT_IGNORED (0)
135*8db17052SBoyan Karatotev #endif
136*8db17052SBoyan Karatotev 
137*8db17052SBoyan Karatotev #ifndef CPTR_PLAT_FEATS
138*8db17052SBoyan Karatotev #define CPTR_PLAT_FEATS (0)
139*8db17052SBoyan Karatotev #endif
140*8db17052SBoyan Karatotev #ifndef CPTR_PLAT_FLIPPED
141*8db17052SBoyan Karatotev #define CPTR_PLAT_FLIPPED (0)
142*8db17052SBoyan Karatotev #endif
143*8db17052SBoyan Karatotev 
144*8db17052SBoyan Karatotev #ifndef MDCR_PLAT_FEATS
145*8db17052SBoyan Karatotev #define MDCR_PLAT_FEATS (0)
146*8db17052SBoyan Karatotev #endif
147*8db17052SBoyan Karatotev #ifndef MDCR_PLAT_FLIPPED
148*8db17052SBoyan Karatotev #define MDCR_PLAT_FLIPPED (0)
149*8db17052SBoyan Karatotev #endif
150*8db17052SBoyan Karatotev #ifndef MDCR_PLAT_IGNORED
151*8db17052SBoyan Karatotev #define MDCR_PLAT_IGNORED (0)
152*8db17052SBoyan Karatotev #endif
153*8db17052SBoyan Karatotev /*
154*8db17052SBoyan Karatotev  * XYZ_EL3_FEATS - list all bits that are relevant for feature enablement. It's
155*8db17052SBoyan Karatotev  * a constant list based on what features are expected. This relies on the fact
156*8db17052SBoyan Karatotev  * that if the feature is in any way disabled, then the relevant bit will not be
157*8db17052SBoyan Karatotev  * written by context management.
158*8db17052SBoyan Karatotev  *
159*8db17052SBoyan Karatotev  * XYZ_EL3_FLIPPED - bits with an active 0, rather than the usual active 1. The
160*8db17052SBoyan Karatotev  * spec always uses active 1 to mean that the feature will not trap.
161*8db17052SBoyan Karatotev  *
162*8db17052SBoyan Karatotev  * XYZ_EL3_IGNORED - list of all bits that are not relevant for feature
163*8db17052SBoyan Karatotev  * enablement and should not be reported to lower ELs
164*8db17052SBoyan Karatotev  */
165*8db17052SBoyan Karatotev #define SCR_EL3_FEATS (								\
166*8db17052SBoyan Karatotev 	SCR_FEAT_FGT2		|						\
167*8db17052SBoyan Karatotev 	SCR_FEAT_FPMR		|						\
168*8db17052SBoyan Karatotev 	SCR_FEAT_D128		|						\
169*8db17052SBoyan Karatotev 	SCR_FEAT_S1PIE		|						\
170*8db17052SBoyan Karatotev 	SCR_FEAT_SCTLR2		|						\
171*8db17052SBoyan Karatotev 	SCR_FEAT_TCR2		|						\
172*8db17052SBoyan Karatotev 	SCR_FEAT_THE		|						\
173*8db17052SBoyan Karatotev 	SCR_FEAT_SME		|						\
174*8db17052SBoyan Karatotev 	SCR_FEAT_GCS		|						\
175*8db17052SBoyan Karatotev 	SCR_FEAT_HCX		|						\
176*8db17052SBoyan Karatotev 	SCR_FEAT_LS64_ACCDATA	|						\
177*8db17052SBoyan Karatotev 	SCR_FEAT_AMUv1p1	|						\
178*8db17052SBoyan Karatotev 	SCR_FEAT_ECV		|						\
179*8db17052SBoyan Karatotev 	SCR_FEAT_FGT		|						\
180*8db17052SBoyan Karatotev 	SCR_FEAT_MTE2		|						\
181*8db17052SBoyan Karatotev 	SCR_FEAT_CSV2_2		|						\
182*8db17052SBoyan Karatotev 	SCR_APK_BIT		| /* FEAT_Pauth */				\
183*8db17052SBoyan Karatotev 	SCR_FEAT_RAS		|						\
184*8db17052SBoyan Karatotev 	SCR_PLAT_FEATS)
185*8db17052SBoyan Karatotev #define SCR_EL3_FLIPPED (							\
186*8db17052SBoyan Karatotev 	SCR_FEAT_RAS		|						\
187*8db17052SBoyan Karatotev 	SCR_PLAT_FLIPPED)
188*8db17052SBoyan Karatotev #define SCR_EL3_IGNORED (							\
189*8db17052SBoyan Karatotev 	SCR_API_BIT		|						\
190*8db17052SBoyan Karatotev 	SCR_RW_BIT		|						\
191*8db17052SBoyan Karatotev 	SCR_SIF_BIT		|						\
192*8db17052SBoyan Karatotev 	SCR_HCE_BIT		|						\
193*8db17052SBoyan Karatotev 	SCR_FIQ_BIT		|						\
194*8db17052SBoyan Karatotev 	SCR_IRQ_BIT		|						\
195*8db17052SBoyan Karatotev 	SCR_NS_BIT		|						\
196*8db17052SBoyan Karatotev 	SCR_RES1_BITS		|						\
197*8db17052SBoyan Karatotev 	SCR_PLAT_IGNORED)
198*8db17052SBoyan Karatotev CASSERT((SCR_EL3_FEATS & SCR_EL3_IGNORED) == 0, scr_feat_is_ignored);
199*8db17052SBoyan Karatotev CASSERT((SCR_EL3_FLIPPED & SCR_EL3_FEATS) == SCR_EL3_FLIPPED, scr_flipped_not_a_feat);
200*8db17052SBoyan Karatotev 
201*8db17052SBoyan Karatotev #if ENABLE_SYS_REG_TRACE_FOR_NS
202*8db17052SBoyan Karatotev #define CPTR_SYS_REG_TRACE (TCPAC_BIT | TTA_BIT)
203*8db17052SBoyan Karatotev #else
204*8db17052SBoyan Karatotev #define CPTR_SYS_REG_TRACE (0)
205*8db17052SBoyan Karatotev #endif
206*8db17052SBoyan Karatotev 
207*8db17052SBoyan Karatotev #if ENABLE_FEAT_AMU
208*8db17052SBoyan Karatotev #define CPTR_FEAT_AMU TAM_BIT
209*8db17052SBoyan Karatotev #else
210*8db17052SBoyan Karatotev #define CPTR_FEAT_AMU (0)
211*8db17052SBoyan Karatotev #endif
212*8db17052SBoyan Karatotev 
213*8db17052SBoyan Karatotev #if ENABLE_SME_FOR_NS
214*8db17052SBoyan Karatotev #define CPTR_FEAT_SME ESM_BIT
215*8db17052SBoyan Karatotev #else
216*8db17052SBoyan Karatotev #define CPTR_FEAT_SME (0)
217*8db17052SBoyan Karatotev #endif
218*8db17052SBoyan Karatotev 
219*8db17052SBoyan Karatotev #if ENABLE_SVE_FOR_NS
220*8db17052SBoyan Karatotev #define CPTR_FEAT_SVE CPTR_EZ_BIT
221*8db17052SBoyan Karatotev #else
222*8db17052SBoyan Karatotev #define CPTR_FEAT_SVE (0)
223*8db17052SBoyan Karatotev #endif
224*8db17052SBoyan Karatotev 
225*8db17052SBoyan Karatotev #define CPTR_EL3_FEATS (							\
226*8db17052SBoyan Karatotev 	CPTR_SYS_REG_TRACE	|						\
227*8db17052SBoyan Karatotev 	CPTR_FEAT_AMU		|						\
228*8db17052SBoyan Karatotev 	CPTR_FEAT_SME		|						\
229*8db17052SBoyan Karatotev 	TFP_BIT			|						\
230*8db17052SBoyan Karatotev 	CPTR_FEAT_SVE		|						\
231*8db17052SBoyan Karatotev 	CPTR_PLAT_FEATS)
232*8db17052SBoyan Karatotev #define CPTR_EL3_FLIPPED (							\
233*8db17052SBoyan Karatotev 	CPTR_SYS_REG_TRACE	|						\
234*8db17052SBoyan Karatotev 	CPTR_FEAT_AMU		|						\
235*8db17052SBoyan Karatotev 	TFP_BIT			|						\
236*8db17052SBoyan Karatotev 	CPTR_PLAT_FLIPPED)
237*8db17052SBoyan Karatotev CASSERT((CPTR_EL3_FLIPPED & CPTR_EL3_FEATS) == CPTR_EL3_FLIPPED, cptr_flipped_not_a_feat);
238*8db17052SBoyan Karatotev 
239*8db17052SBoyan Karatotev /*
240*8db17052SBoyan Karatotev  * Some features enables are expressed with more than 1 bit in order to cater
241*8db17052SBoyan Karatotev  * for multi world enablement. In those cases (BRB, TRB, SPE) only the last bit
242*8db17052SBoyan Karatotev  * is used and reported. This (ab)uses the convenient fact that the last bit
243*8db17052SBoyan Karatotev  * always means "enabled for this world" when context switched correctly.
244*8db17052SBoyan Karatotev  * The per-world values have been adjusted such that this is always true.
245*8db17052SBoyan Karatotev  */
246*8db17052SBoyan Karatotev #if ENABLE_BRBE_FOR_NS
247*8db17052SBoyan Karatotev #define MDCR_FEAT_BRBE MDCR_SBRBE(1UL)
248*8db17052SBoyan Karatotev #else
249*8db17052SBoyan Karatotev #define MDCR_FEAT_BRBE (0)
250*8db17052SBoyan Karatotev #endif
251*8db17052SBoyan Karatotev 
252*8db17052SBoyan Karatotev #if ENABLE_FEAT_FGT
253*8db17052SBoyan Karatotev #define MDCR_FEAT_FGT MDCR_TDCC_BIT
254*8db17052SBoyan Karatotev #else
255*8db17052SBoyan Karatotev #define MDCR_FEAT_FGT (0)
256*8db17052SBoyan Karatotev #endif
257*8db17052SBoyan Karatotev 
258*8db17052SBoyan Karatotev #if ENABLE_TRBE_FOR_NS
259*8db17052SBoyan Karatotev #define MDCR_FEAT_TRBE MDCR_NSTB(1UL)
260*8db17052SBoyan Karatotev #else
261*8db17052SBoyan Karatotev #define MDCR_FEAT_TRBE (0)
262*8db17052SBoyan Karatotev #endif
263*8db17052SBoyan Karatotev 
264*8db17052SBoyan Karatotev #if ENABLE_TRF_FOR_NS
265*8db17052SBoyan Karatotev #define MDCR_FEAT_TRF MDCR_TTRF_BIT
266*8db17052SBoyan Karatotev #else
267*8db17052SBoyan Karatotev #define MDCR_FEAT_TRF (0)
268*8db17052SBoyan Karatotev #endif
269*8db17052SBoyan Karatotev 
270*8db17052SBoyan Karatotev #if ENABLE_SPE_FOR_NS
271*8db17052SBoyan Karatotev #define MDCR_FEAT_SPE MDCR_NSPB(1UL)
272*8db17052SBoyan Karatotev #else
273*8db17052SBoyan Karatotev #define MDCR_FEAT_SPE (0)
274*8db17052SBoyan Karatotev #endif
275*8db17052SBoyan Karatotev 
276*8db17052SBoyan Karatotev #define MDCR_EL3_FEATS (							\
277*8db17052SBoyan Karatotev 	MDCR_FEAT_BRBE		|						\
278*8db17052SBoyan Karatotev 	MDCR_FEAT_FGT		|						\
279*8db17052SBoyan Karatotev 	MDCR_FEAT_TRBE		|						\
280*8db17052SBoyan Karatotev 	MDCR_FEAT_TRF		|						\
281*8db17052SBoyan Karatotev 	MDCR_FEAT_SPE		|						\
282*8db17052SBoyan Karatotev 	MDCR_TDOSA_BIT		|						\
283*8db17052SBoyan Karatotev 	MDCR_TDA_BIT		|						\
284*8db17052SBoyan Karatotev 	MDCR_TPM_BIT		| /* FEAT_PMUv3 */				\
285*8db17052SBoyan Karatotev 	MDCR_PLAT_FEATS)
286*8db17052SBoyan Karatotev #define MDCR_EL3_FLIPPED (							\
287*8db17052SBoyan Karatotev 	MDCR_FEAT_FGT		|						\
288*8db17052SBoyan Karatotev 	MDCR_FEAT_TRF		|						\
289*8db17052SBoyan Karatotev 	MDCR_TDOSA_BIT		|						\
290*8db17052SBoyan Karatotev 	MDCR_TDA_BIT		|						\
291*8db17052SBoyan Karatotev 	MDCR_TPM_BIT		|						\
292*8db17052SBoyan Karatotev 	MDCR_PLAT_FLIPPED)
293*8db17052SBoyan Karatotev #define MDCR_EL3_IGNORED (							\
294*8db17052SBoyan Karatotev 	MDCR_EBWE_BIT		|						\
295*8db17052SBoyan Karatotev 	MDCR_EnPMSN_BIT		|						\
296*8db17052SBoyan Karatotev 	MDCR_SBRBE(2UL)		|						\
297*8db17052SBoyan Karatotev 	MDCR_MTPME_BIT		|						\
298*8db17052SBoyan Karatotev 	MDCR_NSTBE_BIT		|						\
299*8db17052SBoyan Karatotev 	MDCR_NSTB(2UL)		|						\
300*8db17052SBoyan Karatotev 	MDCR_SDD_BIT		|						\
301*8db17052SBoyan Karatotev 	MDCR_SPD32(3UL)		|						\
302*8db17052SBoyan Karatotev 	MDCR_NSPB(2UL)		|						\
303*8db17052SBoyan Karatotev 	MDCR_NSPBE_BIT		|						\
304*8db17052SBoyan Karatotev 	MDCR_PLAT_IGNORED)
305*8db17052SBoyan Karatotev CASSERT((MDCR_EL3_FEATS & MDCR_EL3_IGNORED) == 0, mdcr_feat_is_ignored);
306*8db17052SBoyan Karatotev CASSERT((MDCR_EL3_FLIPPED & MDCR_EL3_FEATS) == MDCR_EL3_FLIPPED, mdcr_flipped_not_a_feat);
307*8db17052SBoyan Karatotev 
308*8db17052SBoyan Karatotev #define MPAM3_EL3_FEATS		(MPAM3_EL3_TRAPLOWER_BIT)
309*8db17052SBoyan Karatotev #define MPAM3_EL3_FLIPPED	(MPAM3_EL3_TRAPLOWER_BIT)
310*8db17052SBoyan Karatotev #define MPAM3_EL3_IGNORED	(MPAM3_EL3_MPAMEN_BIT)
311*8db17052SBoyan Karatotev CASSERT((MPAM3_EL3_FEATS & MPAM3_EL3_IGNORED) == 0, mpam3_feat_is_ignored);
312*8db17052SBoyan Karatotev CASSERT((MPAM3_EL3_FLIPPED & MPAM3_EL3_FEATS) == MPAM3_EL3_FLIPPED, mpam3_flipped_not_a_feat);
313*8db17052SBoyan Karatotev 
314*8db17052SBoyan Karatotev /* The hex representations of these registers' S3 encoding */
315*8db17052SBoyan Karatotev #define SCR_EL3_OPCODE  			U(0x1E1100)
316*8db17052SBoyan Karatotev #define CPTR_EL3_OPCODE 			U(0x1E1140)
317*8db17052SBoyan Karatotev #define MDCR_EL3_OPCODE 			U(0x1E1320)
318*8db17052SBoyan Karatotev #define MPAM3_EL3_OPCODE 			U(0x1EA500)
319*8db17052SBoyan Karatotev 
320*8db17052SBoyan Karatotev #endif /* ARCH_FEATURE_AVAILABILITY */
321*8db17052SBoyan Karatotev #endif /* __ASSEMBLER__ */
322c3cf06f1SAntonio Nino Diaz #endif /* ARM_ARCH_SVC_H */
323