]>
git.saurik.com Git - apple/xnu.git/blob - pexpert/pexpert/arm64/apple_arm64_regs.h
8572786349ff0c72acdd071e5bfa8ece523c7845
2 * Copyright (c) 2012-2015 Apple Inc. All rights reserved.
5 #ifndef _PEXPERT_ARM64_COMMON_H
6 #define _PEXPERT_ARM64_COMMON_H
11 #define __MSR_STR1(x) #x
12 #define __MSR_STR(x) __MSR_STR1(x)
15 #ifdef APPLE_ARM64_ARCH_FAMILY
17 #define ARM64_REG_HID0 S3_0_c15_c0_0
18 #define ARM64_REG_HID0_LoopBuffDisb (1<<20)
19 #define ARM64_REG_HID0_AMXCacheFusionDisb (1ULL<<21)
20 #define ARM64_REG_HID0_ICPrefLimitOneBrn (1<<25)
21 #define ARM64_REG_HID0_FetchWidthDisb (1ULL<<28)
22 #define ARM64_REG_HID0_PMULLFuseDisable (1ULL<<33)
23 #define ARM64_REG_HID0_CacheFusionDisable (1ULL<<36)
24 #define ARM64_REG_HID0_SamePgPwrOpt (1ULL<<45)
25 #define ARM64_REG_HID0_ICPrefDepth_bshift 60
26 #define ARM64_REG_HID0_ICPrefDepth_bmsk (7ULL <<ARM64_REG_HID0_ICPrefDepth_bshift)
27 #define ARM64_REG_HID0_ICPrefDepth_VALUE (1ULL <<ARM64_REG_HID0_ICPrefDepth_bshift)
29 #define ARM64_REG_EHID0 S3_0_c15_c0_1
30 #define ARM64_REG_EHID0_nfpRetFwdDisb (1ULL<<45)
32 #define ARM64_REG_HID1 S3_0_c15_c1_0
33 #define ARM64_REG_HID1_disCmpBrFusion (1<<14)
34 #define ARM64_REG_HID1_forceNexL3ClkOn (1<<15)
35 #define ARM64_REG_HID1_rccForceAllIexL3ClksOn (1<<23)
36 #define ARM64_REG_HID1_rccDisStallInactiveIexCtl (1<<24)
37 #define ARM64_REG_HID1_disLspFlushWithContextSwitch (1<<25)
38 #define ARM64_REG_HID1_disAESFuseAcrossGrp (1<<44)
39 #define ARM64_REG_HID1_disMSRSpecDAIF (1ULL << 49)
40 #define ARM64_REG_HID1_trapSMC (1ULL << 54)
41 #define ARM64_REG_HID1_enMDSBStallPipeLineECO (1ULL << 58)
42 #define ARM64_REG_HID1_enaBrKillLimit (1ULL << 60)
43 #define ARM64_REG_HID1_SpareBit6 (1ULL << 60)
45 #define ARM64_REG_EHID1 S3_0_c15_c1_1
46 #define ARM64_REG_EHID1_disMSRSpecDAIF (1ULL << 30)
48 #define ARM64_REG_HID2 S3_0_c15_c2_0
49 #define ARM64_REG_HID2_disMMUmtlbPrefetch (1<<13)
50 #define ARM64_REG_HID2_ForcePurgeMtb (1<<17)
52 #define ARM64_REG_EHID2 S3_0_c15_c2_1
53 #define ARM64_REG_EHID2_ForcePurgeMtb (1<<17)
55 #define ARM64_REG_HID3 S3_0_c15_c3_0
56 #define ARM64_REG_HID3_DisColorOpt (1<<2)
57 #define ARM64_REG_HID3_DisDcZvaCmdOnly (1<<25)
58 #define ARM64_REG_HID3_DisArbFixBifCrd (1ULL<<44)
59 #define ARM64_REG_HID3_DisXmonSnpEvictTriggerL2StarvationMode (1<<54)
60 #define ARM64_REG_HID3_DevPcieThrottleEna (1ULL<<63)
62 #define ARM64_REG_EHID3 S3_0_c15_c3_1
63 #define ARM64_REG_EHID3_DisColorOpt (1<<2)
64 #define ARM64_REG_EHID3_DisDcZvaCmdOnly (1<<25)
66 #define ARM64_REG_HID4 S3_0_c15_c4_0
67 #define ARM64_REG_EHID4 S3_0_c15_c4_1
69 #define ARM64_REG_HID4_DisDcMVAOps (1<<11)
70 #define ARM64_REG_HID4_DisSpecLnchRead (1<<33)
71 #define ARM64_REG_HID4_ForceNsOrdLdReqNoOlderLd (1<<39)
72 #define ARM64_REG_HID4_CnfCntrThresh_shift (40)
73 #define ARM64_REG_HID4_CnfCntrThresh_mask (0x3ULL << ARM64_REG_HID4_CnfCntrThresh_shift)
74 #define ARM64_REG_HID4_CnfCntrThresh_VALUE (0x3ULL << ARM64_REG_HID4_CnfCntrThresh_shift)
75 #define ARM64_REG_HID4_DisDcSWL2Ops (1<<44)
76 #define ARM64_REG_HID4_EnLfsrStallLoadPipe2Issue (1<<49)
77 #define ARM64_REG_HID4_EnLfsrStallStqReplay (1<<53)
78 #define ARM64_REG_HID4_disSpecLSRedirect (1<<9)
79 #define ARM64_REG_HID4_DisSTNTWidget (1<<1)
81 #define ARM64_REG_HID5 S3_0_c15_c5_0
82 #define ARM64_REG_HID5_DisHwpLd (1<<44)
83 #define ARM64_REG_HID5_DisHwpSt (1<<45)
84 #define ARM64_REG_HID5_DisFill2cMerge (1ULL << 61)
85 #define ARM64_REG_HID5_EnableDnFIFORdStall (1ULL << 54)
86 #define ARM64_REG_HID5_DisFullLineWr (1ULL << 57)
87 #define ARM64_REG_HID5_CrdEdbSnpRsvd_mask (3ULL << 14)
88 #define ARM64_REG_HID5_CrdEdbSnpRsvd_VALUE (2ULL << 14)
89 #define ARM64_REG_HID5_CrdPrbSnpRsvd_shift (0)
90 #define ARM64_REG_HID5_CrdPrbSnpRsvd_mask (0xFULL << ARM64_REG_HID5_CrdPrbSnpRsvd_shift)
91 #define ARM64_REG_HID5_CrdPrbSnpRsvd_VALUE(x) (x << ARM64_REG_HID5_CrdPrbSnpRsvd_shift)
93 #define ARM64_REG_EHID5 S3_0_c15_c5_1
94 #define ARM64_REG_EHID5_DisFillByp (1 << 35)
96 #define ARM64_REG_HID6 S3_0_c15_c6_0
97 #define ARM64_REG_HID6_UpCrdTknInitC2_shift (5)
98 #define ARM64_REG_HID6_UpCrdTknInitC2_mask (0x1FULL << ARM64_REG_HID6_UpCrdTknInitC2_shift)
99 #define ARM64_REG_HID6_DisClkDivGating (1ULL << 55)
101 #define ARM64_REG_HID7 S3_0_c15_c7_0
102 #define ARM64_REG_HID7_forceNonSpecTargetedTimerSel_shift (24)
103 #define ARM64_REG_HID7_forceNonSpecTargetedTimerSel_mask (3ULL << ARM64_REG_HID7_forceNonSpecTargetedTimerSel_shift)
104 #define ARM64_REG_HID7_forceNonSpecTargetedTimerSel_VALUE (3ULL << ARM64_REG_HID7_forceNonSpecTargetedTimerSel_shift)
105 #define ARM64_REG_HID7_forceNonSpecIfStepping (1ULL << 20)
106 #define ARM64_REG_HID7_forceNonSpecIfSpecFlushPtrInvalidAndMPValid (1ULL << 16)
107 #define ARM64_REG_HID7_disNexFastFmul (1 << 10)
108 #define ARM64_REG_HID7_disCrossPick2 (1ULL << 7)
110 #define ARM64_REG_HID8 S3_0_c15_c8_0
111 #define ARM64_REG_HID8_DataSetID0_VALUE (0xF << 4)
112 #define ARM64_REG_HID8_DataSetID1_VALUE (0xF << 8)
113 #define ARM64_REG_HID8_WkeForceStrictOrder (0x1ULL << 35)
114 #define ARM64_REG_HID8_DataSetID2_VALUE (0xF << 56)
115 #define ARM64_REG_HID8_DataSetID3_VALUE (0xF << 60)
117 #define ARM64_REG_HID9 S3_0_c15_c9_0
118 #define ARM64_REG_HID9_TSOAllowDcZvaWC (1ULL << 26)
119 #define ARM64_REG_HID9_TSOSerializeVLDmicroops (1ULL << 29)
120 #define ARM64_REG_HID9_EnableFixBug51667805 (1ULL << 48)
121 #define ARM64_REG_HID9_EnableFixBug51667717 (1ULL << 49)
122 #define ARM64_REG_HID9_EnableFixBug57817908 (1ULL << 50)
123 #define ARM64_REG_HID9_DisSTNTWidgetForUnalign (1ULL << 52)
124 #define ARM64_REG_HID9_TSO_ENABLE (1ULL << 16)
125 #define ARM64_REG_HID9_EnableFixBug47221499 (1ULL << 54)
126 #define ARM64_REG_HID9_EnableFixBug58566122 (3ULL << 53)
127 #define ARM64_REG_HID9_HidEnFix55719865 (1ULL << 55)
129 #define ARM64_REG_EHID9 S3_0_c15_c9_1
130 #define ARM64_REG_EHID9_DevThrottle2Ena (1ULL << 5)
132 #define ARM64_REG_HID10 S3_0_c15_c10_0
133 #define ARM64_REG_HID10_DisHwpGups (1ULL << 0)
135 #define ARM64_REG_EHID10 S3_0_c15_c10_1
136 #define ARM64_REG_EHID10_rccDisPwrSavePrfClkOff (1ULL << 19)
137 #define ARM64_REG_EHID10_ForceWStDrainUc (1ULL << 32)
138 #define ARM64_REG_EHID10_DisZVATemporalTSO (1ULL << 49)
140 #if defined(APPLETYPHOON) || defined(APPLETWISTER)
141 #define ARM64_REG_HID11 S3_0_c15_c13_0
142 #else /* defined(APPLECYCLONE) || defined(APPLETYPHOON) || defined(APPLETWISTER) */
143 #define ARM64_REG_HID11 S3_0_c15_c11_0
144 #endif /* defined(APPLECYCLONE) || defined(APPLETYPHOON) || defined(APPLETWISTER) */
145 #define ARM64_REG_HID11_DisX64NTLnchOpt (1ULL << 1)
146 #define ARM64_REG_HID11_DisFillC1BubOpt (1ULL << 7)
147 #define ARM64_REG_HID11_HidEnFixUc55719865 (1ULL << 15)
148 #define ARM64_REG_HID11_DisFastDrainOpt (1ULL << 23)
149 #define ARM64_REG_HID11_DisLDNTWidget (1ULL << 59)
151 #define ARM64_REG_EHID11 S3_0_c15_c11_1
152 #define ARM64_REG_EHID11_SmbDrainThresh_mask (3ULL << 40)
154 #define ARM64_REG_HID13 S3_0_c15_c14_0
155 #define ARM64_REG_HID13_PreCyc_shift (14)
156 #define ARM64_REG_HID13_PreCyc_mask (0xFULL << ARM64_REG_HID13_PreCyc_shift)
157 #define ARM64_REG_HID13_PreCyc_VALUE (0x4ULL << ARM64_REG_HID13_PreCyc_shift)
159 #define ARM64_REG_HID14 S3_0_c15_c15_0
160 #define ARM64_REG_HID14_NexSleepTimeOutCyc_shift (0)
161 #define ARM64_REG_HID14_NexSleepTimeOutCyc_VALUE 0x7D0ULL
163 #define ARM64_REG_HID16 S3_0_c15_c15_2
164 #define ARM64_REG_HID16_leqThrottleAggr (1ULL << 18)
165 #define ARM64_REG_HID16_SpareBit0 (1ULL << 56)
166 #define ARM64_REG_HID16_EnRs4Sec (1ULL << 57)
167 #define ARM64_REG_HID16_SpareBit3 (1ULL << 59)
168 #define ARM64_REG_HID16_DisxPickRs45 (1ULL << 60)
169 #define ARM64_REG_HID16_EnMPxPick45 (1ULL << 61)
170 #define ARM64_REG_HID16_EnMPCyc7 (1ULL << 62)
171 #define ARM64_REG_HID16_SpareBit7 (1ULL << 63)
173 #define ARM64_REG_HID17 S3_0_c15_c15_5
174 #define ARM64_REG_HID17_CrdEdbSnpRsvd_shift (0)
175 #define ARM64_REG_HID17_CrdEdbSnpRsvd_mask (0x7ULL << ARM64_REG_HID17_CrdEdbSnpRsvd_shift)
176 #define ARM64_REG_HID17_CrdEdbSnpRsvd_VALUE (0x2ULL << ARM64_REG_HID17_CrdEdbSnpRsvd_shift)
178 #define ARM64_REG_HID18 S3_0_c15_c11_2
179 #define ARM64_REG_HID18_HVCSpecDisable (1ULL << 14)
180 #define ARM64_REG_HID18_SpareBit17 (1ULL << 49)
182 #define ARM64_REG_HID21 S3_0_c15_c1_3
183 #define ARM64_REG_HID21_EnLdrexFillRply (1ULL << 19)
184 #define ARM64_REG_HID21_LdqRtrWaitForOldStRelCmpl (1ULL << 33)
185 #define ARM64_REG_HID21_DisCdpRplyPurgedTrans (1ULL << 34)
187 #if defined(APPLETYPHOON) || defined(APPLETWISTER)
188 #define ARM64_REG_CYC_CFG S3_5_c15_c4_0
189 #define ARM64_REG_CYC_CFG_skipInit (1ULL<<30)
190 #define ARM64_REG_CYC_CFG_deepSleep (1ULL<<24)
191 #else /* defined(APPLECYCLONE) || defined(APPLETYPHOON) || defined(APPLETWISTER) */
192 #define ARM64_REG_ACC_OVRD S3_5_c15_c6_0
193 #if defined(APPLEMONSOON)
194 #define ARM64_REG_ACC_EBLK_OVRD S3_5_c15_c6_1 // EBLK_OVRD on Zephyr
195 #endif /* defined(APPLEMONSOON) */
197 #define ARM64_REG_ACC_OVRD_enDeepSleep (1ULL << 34)
198 #define ARM64_REG_ACC_OVRD_disPioOnWfiCpu (1ULL << 32)
199 #define ARM64_REG_ACC_OVRD_dsblClkDtr (1ULL << 29)
200 #define ARM64_REG_ACC_OVRD_cpmWakeUp_mask (3ULL << 27)
201 #define ARM64_REG_ACC_OVRD_cpmWakeUp_force (3ULL << 27)
202 #define ARM64_REG_ACC_OVRD_ok2PwrDnCPM_mask (3ULL << 25)
203 #define ARM64_REG_ACC_OVRD_ok2PwrDnCPM_deny (2ULL << 25)
204 #define ARM64_REG_ACC_OVRD_ok2PwrDnCPM_deepsleep (3ULL << 25)
205 #define ARM64_REG_ACC_OVRD_ok2TrDnLnk_mask (3ULL << 17)
206 #define ARM64_REG_ACC_OVRD_ok2TrDnLnk_deepsleep (3ULL << 17)
207 #define ARM64_REG_ACC_OVRD_disL2Flush4AccSlp_mask (3ULL << 15)
208 #define ARM64_REG_ACC_OVRD_disL2Flush4AccSlp_deepsleep (2ULL << 15)
209 #define ARM64_REG_ACC_OVRD_ok2PwrDnSRM_mask (3ULL << 13)
210 #define ARM64_REG_ACC_OVRD_ok2PwrDnSRM_deepsleep (3ULL << 13)
212 #endif /* defined(APPLECYCLONE) || defined(APPLETYPHOON) || defined(APPLETWISTER) */
214 #define ARM64_REG_CYC_OVRD S3_5_c15_c5_0
215 #define ARM64_REG_CYC_OVRD_irq_mask (3<<22)
216 #define ARM64_REG_CYC_OVRD_irq_disable (2<<22)
217 #define ARM64_REG_CYC_OVRD_fiq_mask (3<<20)
218 #define ARM64_REG_CYC_OVRD_fiq_disable (2<<20)
219 #define ARM64_REG_CYC_OVRD_ok2pwrdn_force_up (2<<24)
220 #define ARM64_REG_CYC_OVRD_ok2pwrdn_force_down (3<<24)
221 #define ARM64_REG_CYC_OVRD_disWfiRetn (1<<0)
223 #if defined(APPLEMONSOON)
224 #define ARM64_REG_CYC_OVRD_dsblSnoopTime_mask (3ULL << 30)
225 #define ARM64_REG_CYC_OVRD_dsblSnoopPTime (1ULL << 31) /// Don't fetch the timebase from the P-block
226 #endif /* APPLEMONSOON */
228 #define ARM64_REG_LSU_ERR_STS S3_3_c15_c0_0
229 #define ARM64_REG_LSU_ERR_STS_L1DTlbMultiHitEN (1ULL<<54)
231 #define ARM64_REG_E_LSU_ERR_STS S3_3_c15_c2_0
233 #define ARM64_REG_LSU_ERR_CTL S3_3_c15_c1_0
234 #define ARM64_REG_LSU_ERR_CTL_L1DTlbMultiHitEN (1ULL<<3)
236 #define ARM64_REG_FED_ERR_STS S3_4_C15_C0_0
238 #define ARM64_REG_E_FED_ERR_STS S3_4_C15_C0_2
240 #define ARM64_REG_MMU_ERR_STS S3_6_c15_c0_0
242 #define ARM64_REG_E_MMU_ERR_STS s3_6_c15_c2_0
244 #define ARM64_REG_L2C_ERR_STS S3_3_c15_c8_0
246 #define ARM64_REG_L2C_ERR_ADR S3_3_c15_c9_0
248 #define ARM64_REG_L2C_ERR_INF S3_3_c15_c10_0
250 #define ARM64_REG_MIGSTS_EL1 S3_4_c15_c0_4
252 #define ARM64_REG_DPC_ERR_STS S3_5_c15_c0_5
254 #if defined(HAS_KTRR)
257 #define ARM64_REG_KTRR_LOWER_EL1 S3_4_c15_c2_3
258 #define ARM64_REG_KTRR_UPPER_EL1 S3_4_c15_c2_4
259 #define ARM64_REG_KTRR_LOCK_EL1 S3_4_c15_c2_2
260 #else /* ASSEMBLER */
261 #define ARM64_REG_KTRR_LOWER_EL1 "S3_4_c15_c2_3"
262 #define ARM64_REG_KTRR_UPPER_EL1 "S3_4_c15_c2_4"
263 #define ARM64_REG_KTRR_LOCK_EL1 "S3_4_c15_c2_2"
264 #endif /* ASSEMBLER */
266 #endif /* defined (HAS_KTRR) */
268 #if defined(HAS_CTRR)
271 #define ARM64_REG_CTRR_A_LWR_EL1 S3_4_c15_c2_3
272 #define ARM64_REG_CTRR_A_UPR_EL1 S3_4_c15_c2_4
273 #define ARM64_REG_CTRR_CTL_EL1 S3_4_c15_c2_5
274 #define ARM64_REG_CTRR_LOCK_EL1 S3_4_c15_c2_2
276 #define ACC_CTRR_A_LWR_EL2 S3_4_c15_c11_0
277 #define ACC_CTRR_A_UPR_EL2 S3_4_c15_c11_1
278 #define ACC_CTRR_CTL_EL2 S3_4_c15_c11_4
279 #define ACC_CTRR_LOCK_EL2 S3_4_c15_c11_5
280 #else /* ASSEMBLER */
281 #define ARM64_REG_CTRR_A_LWR_EL1 "S3_4_c15_c2_3"
282 #define ARM64_REG_CTRR_A_UPR_EL1 "S3_4_c15_c2_4"
283 #define ARM64_REG_CTRR_CTL_EL1 "S3_4_c15_c2_5"
284 #define ARM64_REG_CTRR_LOCK_EL1 "S3_4_c15_c2_2"
286 #define ACC_CTRR_A_LWR_EL2 "S3_4_c15_c11_0"
287 #define ACC_CTRR_A_UPR_EL2 "S3_4_c15_c11_1"
288 #define ACC_CTRR_CTL_EL2 "S3_4_c15_c11_4"
289 #define ACC_CTRR_LOCK_EL2 "S3_4_c15_c11_5"
290 #endif /* ASSEMBLER */
292 #define CTRR_CTL_EL1_A_MMUOFF_WRPROTECT (1 << 0)
293 #define CTRR_CTL_EL1_A_MMUON_WRPROTECT (1 << 1)
294 #define CTRR_CTL_EL1_B_MMUOFF_WRPROTECT (1 << 2)
295 #define CTRR_CTL_EL1_B_MMUON_WRPROTECT (1 << 3)
296 #define CTRR_CTL_EL1_A_PXN (1 << 4)
297 #define CTRR_CTL_EL1_B_PXN (1 << 5)
298 #define CTRR_CTL_EL1_A_UXN (1 << 6)
299 #define CTRR_CTL_EL1_B_UXN (1 << 7)
301 #endif /* defined (HAS_CTRR) */
305 #define ARM64_REG_IPI_RR_TYPE_IMMEDIATE (0 << 28)
306 #define ARM64_REG_IPI_RR_TYPE_RETRACT (1 << 28)
307 #define ARM64_REG_IPI_RR_TYPE_DEFERRED (2 << 28)
308 #define ARM64_REG_IPI_RR_TYPE_NOWAKE (3 << 28)
310 #if defined(HAS_CLUSTER)
311 #define ARM64_REG_IPI_RR_LOCAL __MSR_STR(S3_5_c15_c0_0)
312 #define ARM64_REG_IPI_RR_GLOBAL __MSR_STR(S3_5_c15_c0_1)
313 #else /* defined(HAS_CLUSTER) */
314 #define ARM64_REG_IPI_RR __MSR_STR(S3_5_c15_c0_1)
315 #endif /* defined(HAS_CLUSTER) */
317 #define ARM64_REG_IPI_SR __MSR_STR(S3_5_c15_c1_1)
318 #define ARM64_REG_IPI_CR __MSR_STR(S3_5_c15_c3_1)
320 #endif /* defined(HAS_IPI) */
323 #endif /* APPLE_ARM64_ARCH_FAMILY */
325 #if defined(HAS_NEX_PG)
326 #define ARM64_REG_HID13 S3_0_c15_c14_0
327 #define ARM64_REG_HID13_RstCyc_mask (0xfULL << 60)
328 #define ARM64_REG_HID13_RstCyc_val (0xcULL << 60)
330 #define ARM64_REG_HID14 S3_0_c15_c15_0
331 #define ARM64_REG_HID14_NexPwgEn (1ULL << 32)
332 #endif /* defined(HAS_NEX_PG) */
334 #define ARM64_REG_EHID20 S3_0_c15_c1_2
335 #define ARM64_REG_EHID20_forceNonSpecTargetedTimerSel_shift (21)
336 #define ARM64_REG_EHID20_forceNonSpecTargetedTimerSel_mask (3ULL << ARM64_REG_EHID20_forceNonSpecTargetedTimerSel_shift)
337 #define ARM64_REG_EHID20_forceNonSpecTargetedTimerSel_VALUE (3ULL << ARM64_REG_EHID20_forceNonSpecTargetedTimerSel_shift)
338 #define ARM64_REG_EHID20_forceNonSpecIfSpecFlushPtrNEBlkRtrPtr (1ULL << 16)
339 #define ARM64_REG_EHID20_trapSMC (1ULL << 8)
340 #define ARM64_REG_EHID20_forceNonSpecIfOldestRedirVldAndOlder (1ULL << 15)
342 #if defined(HAS_BP_RET)
343 #define ARM64_REG_ACC_CFG S3_5_c15_c4_0
344 #define ARM64_REG_ACC_CFG_bdpSlpEn (1ULL << 2)
345 #define ARM64_REG_ACC_CFG_btpSlpEn (1ULL << 3)
346 #define ARM64_REG_ACC_CFG_bpSlp_mask 3
347 #define ARM64_REG_ACC_CFG_bpSlp_shift 2
348 #endif /* defined(HAS_BP_RET) */
351 #if defined(HAS_APPLE_PAC)
354 #define ARM64_REG_APCTL_EL1 S3_4_c15_c0_4
355 #define ARM64_REG_APSTS_EL1 S3_6_c15_c12_4
356 #else /* ASSEMBLER */
357 #define ARM64_REG_APCTL_EL1 "S3_4_c15_c0_4"
358 #define ARM64_REG_APSTS_EL1 "S3_6_c15_c12_4"
359 #endif /* ASSEMBLER */
362 #define ARM64_REG_KERNELKEYLO_EL1 S3_4_c15_c1_0
363 #define ARM64_REG_KERNELKEYHI_EL1 S3_4_c15_c1_1
365 #define ARM64_REG_APIAKEYLO_EL1 S3_0_c2_c1_0
366 #define ARM64_REG_APIAKEYHI_EL1 S3_0_c2_c1_1
367 #define ARM64_REG_APIBKEYLO_EL1 S3_0_c2_c1_2
368 #define ARM64_REG_APIBKEYHI_EL1 S3_0_c2_c1_3
370 #define ARM64_REG_APDAKEYLO_EL1 S3_0_c2_c2_0
371 #define ARM64_REG_APDAKEYHI_EL1 S3_0_c2_c2_1
372 #define ARM64_REG_APDBKEYLO_EL1 S3_0_c2_c2_2
373 #define ARM64_REG_APDBKEYHI_EL1 S3_0_c2_c2_3
375 #define ARM64_REG_APGAKEYLO_EL1 S3_0_c2_c3_0
376 #define ARM64_REG_APGAKEYHI_EL1 S3_0_c2_c3_1
377 #else /* ASSEMBLER */
378 #define ARM64_REG_APCTL_EL1 "S3_4_c15_c0_4"
380 #define ARM64_REG_KERNELKEYLO_EL1 "S3_4_c15_c1_0"
381 #define ARM64_REG_KERNELKEYHI_EL1 "S3_4_c15_c1_1"
383 #define ARM64_REG_APIAKEYLO_EL1 "S3_0_c2_c1_0"
384 #define ARM64_REG_APIAKEYHI_EL1 "S3_0_c2_c1_1"
385 #define ARM64_REG_APIBKEYLO_EL1 "S3_0_c2_c1_2"
386 #define ARM64_REG_APIBKEYHI_EL1 "S3_0_c2_c1_3"
388 #define ARM64_REG_APDAKEYLO_EL1 "S3_0_c2_c2_0"
389 #define ARM64_REG_APDAKEYHI_EL1 "S3_0_c2_c2_1"
390 #define ARM64_REG_APDBKEYLO_EL1 "S3_0_c2_c2_2"
391 #define ARM64_REG_APDBKEYHI_EL1 "S3_0_c2_c2_3"
393 #define ARM64_REG_APGAKEYLO_EL1 "S3_0_c2_c3_0"
394 #define ARM64_REG_APGAKEYHI_EL1 "S3_0_c2_c3_1"
395 #endif /* ASSEMBLER */
396 #endif /* HAS_APPLE_PAC */
398 #if defined(HAS_VMSA_LOCK)
400 #define ARM64_REG_VMSA_LOCK_EL1 S3_4_c15_c1_2
402 #define VMSA_LOCK_VBAR_EL1 (1ULL << 0)
403 #define VMSA_LOCK_SCTLR_EL1 (1ULL << 1)
404 #define VMSA_LOCK_TCR_EL1 (1ULL << 2)
405 #define VMSA_LOCK_TTBR0_EL1 (1ULL << 3)
406 #define VMSA_LOCK_TTBR1_EL1 (1ULL << 4)
407 #define VMSA_LOCK_SCTLR_M_BIT (1ULL << 63)
409 #endif /* HAS_VMSA_LOCK */
413 #define MPIDR_PNE_SHIFT 16 // pcore not ecore
414 #define MPIDR_PNE (1 << MPIDR_PNE_SHIFT)
418 #define CPU_PIO_CPU_STS_OFFSET (0x100ULL)
419 #define CPU_PIO_CPU_STS_cpuRunSt_mask (0xff)
425 * arg0: register in which to store result
426 * 0=>not a p-core, non-zero=>p-core
428 .macro ARM64_IS_PCORE
429 #if defined(APPLEMONSOON) || HAS_CLUSTER
431 and $
0, $
0, #(MPIDR_PNE)
432 #endif /* defined(APPLEMONSOON) || HAS_CLUSTER */
436 * reads a special purpose register, using a different msr for e- vs. p-cores
437 * arg0: register indicating the current core type, see ARM64_IS_PCORE
438 * arg1: register in which to store the result of the read
439 * arg2: SPR to use for e-core
440 * arg3: SPR to use for p-core or non-AMP architecture
442 .macro ARM64_READ_EP_SPR
443 #if defined(APPLEMONSOON) || HAS_CLUSTER
450 #endif /* defined(APPLEMONSOON) || HAS_CLUSTER */
456 * writes a special purpose register, using a different msr for e- vs. p-cores
457 * arg0: register indicating the current core type, see ARM64_IS_PCORE
458 * arg1: register containing the value to write
459 * arg2: SPR to use for e-core
460 * arg3: SPR to use for p-core or non-AMP architecture
462 .macro ARM64_WRITE_EP_SPR
463 #if defined(APPLEMONSOON) || HAS_CLUSTER
470 #endif /* defined(APPLEMONSOON) || HAS_CLUSTER */
475 #endif /* ASSEMBLER */
477 #endif /* ! _PEXPERT_ARM_ARM64_H */