ArmV7.h revision 53205a55e87259864453bc187e7607732c6fbd0e
1/** @file 2 3 Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR> 4 5 This program and the accompanying materials 6 are licensed and made available under the terms and conditions of the BSD License 7 which accompanies this distribution. The full text of the license may be found at 8 http://opensource.org/licenses/bsd-license.php 9 10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 12 13**/ 14 15#ifndef __ARM_V7_H__ 16#define __ARM_V7_H__ 17 18// Domain Access Control Register 19#define DOMAIN_ACCESS_CONTROL_MASK(a) (3UL << (2 * (a))) 20#define DOMAIN_ACCESS_CONTROL_NONE(a) (0UL << (2 * (a))) 21#define DOMAIN_ACCESS_CONTROL_CLIENT(a) (1UL << (2 * (a))) 22#define DOMAIN_ACCESS_CONTROL_RESERVED(a) (2UL << (2 * (a))) 23#define DOMAIN_ACCESS_CONTROL_MANAGER(a) (3UL << (2 * (a))) 24 25#define TTBR_NOT_OUTER_SHAREABLE BIT5 26#define TTBR_RGN_OUTER_NON_CACHEABLE 0 27#define TTBR_RGN_OUTER_WRITE_BACK_ALLOC BIT3 28#define TTBR_RGN_OUTER_WRITE_THROUGH BIT4 29#define TTBR_RGN_OUTER_WRITE_BACK_NO_ALLOC (BIT3|BIT4) 30#define TTBR_SHAREABLE BIT1 31#define TTBR_NON_SHAREABLE 0 32#define TTBR_INNER_CACHEABLE BIT0 33#define TTBR_NON_INNER_CACHEABLE BIT0 34#define TTBR_RGN_INNER_NON_CACHEABLE 0 35#define TTBR_RGN_INNER_WRITE_BACK_ALLOC BIT6 36#define TTBR_RGN_INNER_WRITE_THROUGH BIT0 37#define TTBR_RGN_INNER_WRITE_BACK_NO_ALLOC (BIT0|BIT6) 38 39#define TTBR_WRITE_THROUGH_NO_ALLOC ( TTBR_RGN_OUTER_WRITE_BACK_ALLOC | TTBR_RGN_INNER_WRITE_BACK_ALLOC ) 40#define TTBR_WRITE_BACK_NO_ALLOC ( TTBR_RGN_OUTER_WRITE_BACK_NO_ALLOC | TTBR_RGN_INNER_WRITE_BACK_NO_ALLOC ) 41#define TTBR_NON_CACHEABLE ( TTBR_RGN_OUTER_NON_CACHEABLE | TTBR_RGN_INNER_NON_CACHEABLE ) 42#define TTBR_WRITE_BACK_ALLOC ( TTBR_RGN_OUTER_WRITE_BACK_ALLOC | TTBR_RGN_INNER_WRITE_BACK_ALLOC ) 43 44 45#define TRANSLATION_TABLE_SECTION_COUNT 4096 46#define TRANSLATION_TABLE_SECTION_SIZE (sizeof(UINT32) * TRANSLATION_TABLE_SECTION_COUNT) 47#define TRANSLATION_TABLE_SECTION_ALIGNMENT (sizeof(UINT32) * TRANSLATION_TABLE_SECTION_COUNT) 48#define TRANSLATION_TABLE_SECTION_ALIGNMENT_MASK (TRANSLATION_TABLE_SECTION_ALIGNMENT - 1) 49 50#define TRANSLATION_TABLE_PAGE_COUNT 256 51#define TRANSLATION_TABLE_PAGE_SIZE (sizeof(UINT32) * TRANSLATION_TABLE_PAGE_COUNT) 52#define TRANSLATION_TABLE_PAGE_ALIGNMENT (sizeof(UINT32) * TRANSLATION_TABLE_PAGE_COUNT) 53#define TRANSLATION_TABLE_PAGE_ALIGNMENT_MASK (TRANSLATION_TABLE_PAGE_ALIGNMENT - 1) 54 55#define TRANSLATION_TABLE_ENTRY_FOR_VIRTUAL_ADDRESS(table, address) ((UINT32 *)(table) + (((UINTN)(address)) >> 20)) 56 57// Translation table descriptor types 58#define TT_DESCRIPTOR_SECTION_TYPE_MASK ((1UL << 18) | (3UL << 0)) 59#define TT_DESCRIPTOR_SECTION_TYPE_FAULT (0UL << 0) 60#define TT_DESCRIPTOR_SECTION_TYPE_PAGE_TABLE (1UL << 0) 61#define TT_DESCRIPTOR_SECTION_TYPE_SECTION ((0UL << 18) | (2UL << 0)) 62#define TT_DESCRIPTOR_SECTION_TYPE_SUPERSECTION ((1UL << 18) | (2UL << 0)) 63#define TT_DESCRIPTOR_SECTION_TYPE_IS_PAGE_TABLE(Desc) (((Desc) & 3UL) == TT_DESCRIPTOR_SECTION_TYPE_PAGE_TABLE) 64 65// Translation table descriptor types 66#define TT_DESCRIPTOR_PAGE_TYPE_MASK (3UL << 0) 67#define TT_DESCRIPTOR_PAGE_TYPE_FAULT (0UL << 0) 68#define TT_DESCRIPTOR_PAGE_TYPE_PAGE (2UL << 0) 69#define TT_DESCRIPTOR_PAGE_TYPE_PAGE_XN (3UL << 0) 70#define TT_DESCRIPTOR_PAGE_TYPE_LARGEPAGE (1UL << 0) 71 72// Section descriptor definitions 73#define TT_DESCRIPTOR_SECTION_SIZE (0x00100000) 74 75#define TT_DESCRIPTOR_SECTION_NS_MASK (1UL << 19) 76#define TT_DESCRIPTOR_SECTION_NS_SECURE (0UL << 19) 77#define TT_DESCRIPTOR_SECTION_NS_NON_SECURE (1UL << 19) 78 79#define TT_DESCRIPTOR_SECTION_NG_MASK (1UL << 17) 80#define TT_DESCRIPTOR_SECTION_NG_GLOBAL (0UL << 17) 81#define TT_DESCRIPTOR_SECTION_NG_LOCAL (1UL << 17) 82 83#define TT_DESCRIPTOR_PAGE_NG_MASK (1UL << 11) 84#define TT_DESCRIPTOR_PAGE_NG_GLOBAL (0UL << 11) 85#define TT_DESCRIPTOR_PAGE_NG_LOCAL (1UL << 11) 86 87#define TT_DESCRIPTOR_SECTION_S_MASK (1UL << 16) 88#define TT_DESCRIPTOR_SECTION_S_NOT_SHARED (0UL << 16) 89#define TT_DESCRIPTOR_SECTION_S_SHARED (1UL << 16) 90 91#define TT_DESCRIPTOR_PAGE_S_MASK (1UL << 10) 92#define TT_DESCRIPTOR_PAGE_S_NOT_SHARED (0UL << 10) 93#define TT_DESCRIPTOR_PAGE_S_SHARED (1UL << 10) 94 95#define TT_DESCRIPTOR_SECTION_AP_MASK ((1UL << 15) | (3UL << 10)) 96#define TT_DESCRIPTOR_SECTION_AP_NO_NO ((0UL << 15) | (0UL << 10)) 97#define TT_DESCRIPTOR_SECTION_AP_RW_NO ((0UL << 15) | (1UL << 10)) 98#define TT_DESCRIPTOR_SECTION_AP_RW_RO ((0UL << 15) | (2UL << 10)) 99#define TT_DESCRIPTOR_SECTION_AP_RW_RW ((0UL << 15) | (3UL << 10)) 100#define TT_DESCRIPTOR_SECTION_AP_RO_NO ((1UL << 15) | (1UL << 10)) 101#define TT_DESCRIPTOR_SECTION_AP_RO_RO ((1UL << 15) | (3UL << 10)) 102 103#define TT_DESCRIPTOR_PAGE_AP_MASK ((1UL << 9) | (3UL << 4)) 104#define TT_DESCRIPTOR_PAGE_AP_NO_NO ((0UL << 9) | (0UL << 4)) 105#define TT_DESCRIPTOR_PAGE_AP_RW_NO ((0UL << 9) | (1UL << 4)) 106#define TT_DESCRIPTOR_PAGE_AP_RW_RO ((0UL << 9) | (2UL << 4)) 107#define TT_DESCRIPTOR_PAGE_AP_RW_RW ((0UL << 9) | (3UL << 4)) 108#define TT_DESCRIPTOR_PAGE_AP_RO_NO ((1UL << 9) | (1UL << 4)) 109#define TT_DESCRIPTOR_PAGE_AP_RO_RO ((1UL << 9) | (3UL << 4)) 110 111#define TT_DESCRIPTOR_SECTION_XN_MASK (0x1UL << 4) 112#define TT_DESCRIPTOR_PAGE_XN_MASK (0x1UL << 0) 113#define TT_DESCRIPTOR_LARGEPAGE_XN_MASK (0x1UL << 15) 114 115#define TT_DESCRIPTOR_SECTION_CACHE_POLICY_MASK ((3UL << 12) | (1UL << 3) | (1UL << 2)) 116#define TT_DESCRIPTOR_SECTION_CACHEABLE_MASK (1UL << 3) 117#define TT_DESCRIPTOR_SECTION_CACHE_POLICY_STRONGLY_ORDERED ((0UL << 12) | (0UL << 3) | (0UL << 2)) 118#define TT_DESCRIPTOR_SECTION_CACHE_POLICY_SHAREABLE_DEVICE ((0UL << 12) | (0UL << 3) | (1UL << 2)) 119#define TT_DESCRIPTOR_SECTION_CACHE_POLICY_WRITE_THROUGH_NO_ALLOC ((0UL << 12) | (1UL << 3) | (0UL << 2)) 120#define TT_DESCRIPTOR_SECTION_CACHE_POLICY_WRITE_BACK_NO_ALLOC ((0UL << 12) | (1UL << 3) | (1UL << 2)) 121#define TT_DESCRIPTOR_SECTION_CACHE_POLICY_NON_CACHEABLE ((1UL << 12) | (0UL << 3) | (0UL << 2)) 122#define TT_DESCRIPTOR_SECTION_CACHE_POLICY_WRITE_BACK_ALLOC ((1UL << 12) | (1UL << 3) | (1UL << 2)) 123#define TT_DESCRIPTOR_SECTION_CACHE_POLICY_NON_SHAREABLE_DEVICE ((2UL << 12) | (0UL << 3) | (0UL << 2)) 124 125#define TT_DESCRIPTOR_PAGE_SIZE (0x00001000) 126 127#define TT_DESCRIPTOR_PAGE_CACHE_POLICY_MASK ((3UL << 6) | (1UL << 3) | (1UL << 2)) 128#define TT_DESCRIPTOR_PAGE_CACHEABLE_MASK (1UL << 3) 129#define TT_DESCRIPTOR_PAGE_CACHE_POLICY_STRONGLY_ORDERED ((0UL << 6) | (0UL << 3) | (0UL << 2)) 130#define TT_DESCRIPTOR_PAGE_CACHE_POLICY_SHAREABLE_DEVICE ((0UL << 6) | (0UL << 3) | (1UL << 2)) 131#define TT_DESCRIPTOR_PAGE_CACHE_POLICY_WRITE_THROUGH_NO_ALLOC ((0UL << 6) | (1UL << 3) | (0UL << 2)) 132#define TT_DESCRIPTOR_PAGE_CACHE_POLICY_WRITE_BACK_NO_ALLOC ((0UL << 6) | (1UL << 3) | (1UL << 2)) 133#define TT_DESCRIPTOR_PAGE_CACHE_POLICY_NON_CACHEABLE ((1UL << 6) | (0UL << 3) | (0UL << 2)) 134#define TT_DESCRIPTOR_PAGE_CACHE_POLICY_WRITE_BACK_ALLOC ((1UL << 6) | (1UL << 3) | (1UL << 2)) 135#define TT_DESCRIPTOR_PAGE_CACHE_POLICY_NON_SHAREABLE_DEVICE ((2UL << 6) | (0UL << 3) | (0UL << 2)) 136 137#define TT_DESCRIPTOR_LARGEPAGE_CACHE_POLICY_MASK ((3UL << 12) | (1UL << 3) | (1UL << 2)) 138#define TT_DESCRIPTOR_LARGEPAGE_CACHE_POLICY_STRONGLY_ORDERED ((0UL << 12) | (0UL << 3) | (0UL << 2)) 139#define TT_DESCRIPTOR_LARGEPAGE_CACHE_POLICY_SHAREABLE_DEVICE ((0UL << 12) | (0UL << 3) | (1UL << 2)) 140#define TT_DESCRIPTOR_LARGEPAGE_CACHE_POLICY_WRITE_THROUGH_NO_ALLOC ((0UL << 12) | (1UL << 3) | (0UL << 2)) 141#define TT_DESCRIPTOR_LARGEPAGE_CACHE_POLICY_WRITE_BACK_NO_ALLOC ((0UL << 12) | (1UL << 3) | (1UL << 2)) 142#define TT_DESCRIPTOR_LARGEPAGE_CACHE_POLICY_NON_CACHEABLE ((1UL << 12) | (0UL << 3) | (0UL << 2)) 143#define TT_DESCRIPTOR_LARGEPAGE_CACHE_POLICY_WRITE_BACK_ALLOC ((1UL << 12) | (1UL << 3) | (1UL << 2)) 144#define TT_DESCRIPTOR_LARGEPAGE_CACHE_POLICY_NON_SHAREABLE_DEVICE ((2UL << 12) | (0UL << 3) | (0UL << 2)) 145 146#define TT_DESCRIPTOR_CONVERT_TO_PAGE_AP(Desc) ((((Desc) & TT_DESCRIPTOR_SECTION_AP_MASK) >> 6) & TT_DESCRIPTOR_PAGE_AP_MASK) 147#define TT_DESCRIPTOR_CONVERT_TO_PAGE_NG(Desc) ((((Desc) & TT_DESCRIPTOR_SECTION_NG_MASK) >> 6) & TT_DESCRIPTOR_PAGE_NG_MASK) 148#define TT_DESCRIPTOR_CONVERT_TO_PAGE_S(Desc) ((((Desc) & TT_DESCRIPTOR_SECTION_S_MASK) >> 6) & TT_DESCRIPTOR_PAGE_S_MASK) 149#define TT_DESCRIPTOR_CONVERT_TO_PAGE_XN(Desc,IsLargePage) ((IsLargePage)? \ 150 ((((Desc) & TT_DESCRIPTOR_SECTION_XN_MASK) >> 4) & TT_DESCRIPTOR_LARGEPAGE_XN_MASK): \ 151 ((((Desc) & TT_DESCRIPTOR_SECTION_XN_MASK) << 11) & TT_DESCRIPTOR_PAGE_XN_MASK)) 152#define TT_DESCRIPTOR_CONVERT_TO_PAGE_CACHE_POLICY(Desc,IsLargePage) (IsLargePage? \ 153 (((Desc) & TT_DESCRIPTOR_SECTION_CACHE_POLICY_MASK) & TT_DESCRIPTOR_LARGEPAGE_CACHE_POLICY_MASK): \ 154 (((((Desc) & (0x3 << 12)) >> 6) | (Desc & (0x3 << 2))))) 155 156#define TT_DESCRIPTOR_CONVERT_TO_SECTION_AP(Desc) ((((Desc) & TT_DESCRIPTOR_PAGE_AP_MASK) << 6) & TT_DESCRIPTOR_SECTION_AP_MASK) 157 158#define TT_DESCRIPTOR_CONVERT_TO_SECTION_CACHE_POLICY(Desc,IsLargePage) (IsLargePage? \ 159 (((Desc) & TT_DESCRIPTOR_LARGEPAGE_CACHE_POLICY_MASK) & TT_DESCRIPTOR_SECTION_CACHE_POLICY_MASK): \ 160 (((((Desc) & (0x3 << 6)) << 6) | (Desc & (0x3 << 2))))) 161 162 163#define TT_DESCRIPTOR_SECTION_DOMAIN_MASK (0x0FUL << 5) 164#define TT_DESCRIPTOR_SECTION_DOMAIN(a) (((a) & 0x0FUL) << 5) 165 166#define TT_DESCRIPTOR_SECTION_BASE_ADDRESS_MASK (0xFFF00000) 167#define TT_DESCRIPTOR_SECTION_PAGETABLE_ADDRESS_MASK (0xFFFFFC00) 168#define TT_DESCRIPTOR_SECTION_BASE_ADDRESS(a) ((a) & TT_DESCRIPTOR_SECTION_BASE_ADDRESS_MASK) 169#define TT_DESCRIPTOR_SECTION_BASE_SHIFT 20 170 171#define TT_DESCRIPTOR_PAGE_BASE_ADDRESS_MASK (0xFFFFF000) 172#define TT_DESCRIPTOR_PAGE_INDEX_MASK (0x000FF000) 173#define TT_DESCRIPTOR_PAGE_BASE_ADDRESS(a) ((a) & TT_DESCRIPTOR_PAGE_BASE_ADDRESS_MASK) 174#define TT_DESCRIPTOR_PAGE_BASE_SHIFT 12 175 176#define TT_DESCRIPTOR_SECTION_WRITE_BACK(Secure) (TT_DESCRIPTOR_SECTION_TYPE_SECTION | \ 177 ((Secure) ? TT_DESCRIPTOR_SECTION_NS_SECURE : TT_DESCRIPTOR_SECTION_NS_NON_SECURE ) | \ 178 TT_DESCRIPTOR_SECTION_NG_GLOBAL | \ 179 TT_DESCRIPTOR_SECTION_S_NOT_SHARED | \ 180 TT_DESCRIPTOR_SECTION_DOMAIN(0) | \ 181 TT_DESCRIPTOR_SECTION_AP_RW_RW | \ 182 TT_DESCRIPTOR_SECTION_CACHE_POLICY_WRITE_BACK_ALLOC) 183#define TT_DESCRIPTOR_SECTION_WRITE_THROUGH(Secure) (TT_DESCRIPTOR_SECTION_TYPE_SECTION | \ 184 ((Secure) ? TT_DESCRIPTOR_SECTION_NS_SECURE : TT_DESCRIPTOR_SECTION_NS_NON_SECURE ) | \ 185 TT_DESCRIPTOR_SECTION_NG_GLOBAL | \ 186 TT_DESCRIPTOR_SECTION_S_NOT_SHARED | \ 187 TT_DESCRIPTOR_SECTION_DOMAIN(0) | \ 188 TT_DESCRIPTOR_SECTION_AP_RW_RW | \ 189 TT_DESCRIPTOR_SECTION_CACHE_POLICY_WRITE_THROUGH_NO_ALLOC) 190#define TT_DESCRIPTOR_SECTION_DEVICE(Secure) (TT_DESCRIPTOR_SECTION_TYPE_SECTION | \ 191 ((Secure) ? TT_DESCRIPTOR_SECTION_NS_SECURE : TT_DESCRIPTOR_SECTION_NS_NON_SECURE ) | \ 192 TT_DESCRIPTOR_SECTION_NG_GLOBAL | \ 193 TT_DESCRIPTOR_SECTION_S_NOT_SHARED | \ 194 TT_DESCRIPTOR_SECTION_DOMAIN(0) | \ 195 TT_DESCRIPTOR_SECTION_AP_RW_RW | \ 196 TT_DESCRIPTOR_SECTION_CACHE_POLICY_SHAREABLE_DEVICE) 197#define TT_DESCRIPTOR_SECTION_UNCACHED(Secure) (TT_DESCRIPTOR_SECTION_TYPE_SECTION | \ 198 ((Secure) ? TT_DESCRIPTOR_SECTION_NS_SECURE : TT_DESCRIPTOR_SECTION_NS_NON_SECURE ) | \ 199 TT_DESCRIPTOR_SECTION_NG_GLOBAL | \ 200 TT_DESCRIPTOR_SECTION_S_NOT_SHARED | \ 201 TT_DESCRIPTOR_SECTION_DOMAIN(0) | \ 202 TT_DESCRIPTOR_SECTION_AP_RW_RW | \ 203 TT_DESCRIPTOR_SECTION_CACHE_POLICY_NON_CACHEABLE) 204 205#define TT_DESCRIPTOR_PAGE_WRITE_BACK (TT_DESCRIPTOR_PAGE_TYPE_PAGE | \ 206 TT_DESCRIPTOR_PAGE_NG_GLOBAL | \ 207 TT_DESCRIPTOR_PAGE_S_NOT_SHARED | \ 208 TT_DESCRIPTOR_PAGE_AP_RW_RW | \ 209 TT_DESCRIPTOR_PAGE_CACHE_POLICY_WRITE_BACK_ALLOC) 210#define TT_DESCRIPTOR_PAGE_WRITE_THROUGH (TT_DESCRIPTOR_PAGE_TYPE_PAGE | \ 211 TT_DESCRIPTOR_PAGE_NG_GLOBAL | \ 212 TT_DESCRIPTOR_PAGE_S_NOT_SHARED | \ 213 TT_DESCRIPTOR_PAGE_AP_RW_RW | \ 214 TT_DESCRIPTOR_PAGE_CACHE_POLICY_WRITE_THROUGH_NO_ALLOC) 215#define TT_DESCRIPTOR_PAGE_DEVICE (TT_DESCRIPTOR_PAGE_TYPE_PAGE | \ 216 TT_DESCRIPTOR_PAGE_NG_GLOBAL | \ 217 TT_DESCRIPTOR_PAGE_S_NOT_SHARED | \ 218 TT_DESCRIPTOR_PAGE_AP_RW_RW | \ 219 TT_DESCRIPTOR_PAGE_CACHE_POLICY_SHAREABLE_DEVICE) 220#define TT_DESCRIPTOR_PAGE_UNCACHED (TT_DESCRIPTOR_PAGE_TYPE_PAGE | \ 221 TT_DESCRIPTOR_PAGE_NG_GLOBAL | \ 222 TT_DESCRIPTOR_PAGE_S_NOT_SHARED | \ 223 TT_DESCRIPTOR_PAGE_AP_RW_RW | \ 224 TT_DESCRIPTOR_PAGE_CACHE_POLICY_NON_CACHEABLE) 225 226// Cortex A9 feature bit definitions 227#define A9_FEATURE_PARITY (1<<9) 228#define A9_FEATURE_AOW (1<<8) 229#define A9_FEATURE_EXCL (1<<7) 230#define A9_FEATURE_SMP (1<<6) 231#define A9_FEATURE_FOZ (1<<3) 232#define A9_FEATURE_DPREF (1<<2) 233#define A9_FEATURE_HINT (1<<1) 234#define A9_FEATURE_FWD (1<<0) 235 236// SCU register offsets & masks 237#define SCU_CONTROL_OFFSET 0x0 238#define SCU_CONFIG_OFFSET 0x4 239#define SCU_INVALL_OFFSET 0xC 240#define SCU_FILT_START_OFFSET 0x40 241#define SCU_FILT_END_OFFSET 0x44 242#define SCU_SACR_OFFSET 0x50 243#define SCU_SSACR_OFFSET 0x54 244 245#define SMP_GIC_CPUIF_BASE 0x100 246#define SMP_GIC_DIST_BASE 0x1000 247 248// CPACR - Coprocessor Access Control Register defintions 249#define CPACR_CP_DENIED(cp) 0x00 250#define CPACR_CP_PRIV(cp) ((0x1 << ((cp) << 1)) & 0x0FFFFFFF) 251#define CPACR_CP_FULL(cp) ((0x3 << ((cp) << 1)) & 0x0FFFFFFF) 252#define CPACR_ASEDIS (1 << 31) 253#define CPACR_D32DIS (1 << 30) 254#define CPACR_CP_FULL_ACCESS 0x0FFFFFFF 255 256// NSACR - Non-Secure Access Control Register defintions 257#define NSACR_CP(cp) ((1 << (cp)) & 0x3FFF) 258#define NSACR_NSD32DIS (1 << 14) 259#define NSACR_NSASEDIS (1 << 15) 260#define NSACR_PLE (1 << 16) 261#define NSACR_TL (1 << 17) 262#define NSACR_NS_SMP (1 << 18) 263#define NSACR_RFR (1 << 19) 264 265// SCR - Secure Configuration Register defintions 266#define SCR_NS (1 << 0) 267#define SCR_IRQ (1 << 1) 268#define SCR_FIQ (1 << 2) 269#define SCR_EA (1 << 3) 270#define SCR_FW (1 << 4) 271#define SCR_AW (1 << 5) 272 273VOID 274EFIAPI 275ArmEnableSWPInstruction ( 276 VOID 277 ); 278 279VOID 280EFIAPI 281ArmWriteNsacr ( 282 IN UINT32 SetWayFormat 283 ); 284 285VOID 286EFIAPI 287ArmWriteScr ( 288 IN UINT32 SetWayFormat 289 ); 290 291VOID 292EFIAPI 293ArmWriteVMBar ( 294 IN UINT32 SetWayFormat 295 ); 296 297VOID 298EFIAPI 299ArmWriteVBar ( 300 IN UINT32 SetWayFormat 301 ); 302 303UINT32 304EFIAPI 305ArmReadVBar ( 306 VOID 307 ); 308 309VOID 310EFIAPI 311ArmWriteCPACR ( 312 IN UINT32 SetWayFormat 313 ); 314 315VOID 316EFIAPI 317ArmEnableVFP ( 318 VOID 319 ); 320 321VOID 322EFIAPI 323ArmCallWFI ( 324 VOID 325 ); 326 327VOID 328EFIAPI 329ArmInvalidScu ( 330 VOID 331 ); 332 333 334UINTN 335EFIAPI 336ArmGetScuBaseAddress ( 337 VOID 338 ); 339 340UINT32 341EFIAPI 342ArmIsScuEnable( 343 VOID 344 ); 345 346VOID 347EFIAPI 348ArmWriteAuxCr ( 349 IN UINT32 Bit 350 ); 351 352UINT32 353EFIAPI 354ArmReadAuxCr ( 355 VOID 356 ); 357 358VOID 359EFIAPI 360ArmSetAuxCrBit ( 361 IN UINT32 Bits 362 ); 363 364VOID 365EFIAPI 366ArmSetupSmpNonSecure ( 367 IN UINTN CoreId 368 ); 369 370 371UINTN 372EFIAPI 373ArmReadCbar( 374VOID 375); 376 377VOID 378EFIAPI 379ArmInvalidateInstructionAndDataTlb( 380VOID 381); 382 383 384UINTN 385EFIAPI 386ArmReadMpidr( 387VOID 388); 389 390 391#endif // __ARM_V7_H__ 392