Difference between revisions of "Unit PlatformARMv8"
Line 18: | Line 18: | ||
---- | ---- | ||
− | '' | + | |
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''ARMv8 page table shift constants''' <code> ARMV8_PAGE_TABLES_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>ARMV8_PAGE_TABLES_SHIFT = 10;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''ARMv8 CP15 C0 main ID constants''' <code> ARMV8_CP15_C0_MAINID_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_MAINID_IMPLEMENTOR_MASK = ($FF shl 24);</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_MAINID_VARIANT_MASK = ($F shl 20);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_MAINID_ARCHITECTURE_MASK = ($F shl 16);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_MAINID_PARTNUMBER_MASK = ($FFF shl 4);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_MAINID_REVISION_MASK = ($F shl 0);</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_MAINID_IMPLEMENTOR_ARM = ($41 shl 24);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_MAINID_IMPLEMENTOR_DEC = ($44 shl 24);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_MAINID_IMPLEMENTOR_FREESCALE = ($4D shl 24);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_MAINID_IMPLEMENTOR_QUALCOMM = ($51 shl 24);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_MAINID_IMPLEMENTOR_MARVELL = ($56 shl 24);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_MAINID_IMPLEMENTOR_INTEL = ($69 shl 24);</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_MAINID_ARCHITECTURE_ARMV4 = ($1 shl 16);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_MAINID_ARCHITECTURE_ARMV4T = ($2 shl 16);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_MAINID_ARCHITECTURE_ARMV5 = ($3 shl 16);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_MAINID_ARCHITECTURE_ARMV5T = ($4 shl 16);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_MAINID_ARCHITECTURE_ARMV5TE = ($5 shl 16);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_MAINID_ARCHITECTURE_ARMV5TEJ = ($6 shl 16);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_MAINID_ARCHITECTURE_ARMV6 = ($7 shl 16);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_MAINID_ARCHITECTURE_CPUID = ($F shl 16);</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_MAINID_PARTNUMBER_CORTEX_A53 = ($D03 shl 4);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_MAINID_PARTNUMBER_CORTEX_A57 = ($D07 shl 4);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_MAINID_PARTNUMBER_CORTEX_A72 = ($D08 shl 4);</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''ARMv8 CP15 C0 multiprocessor affinity constants''' <code> ARMV8_CP15_C0_MPID_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_MPID_MPE = (1 shl 31);</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_MPID_U_UNIPROCESSOR = (1 shl 30);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_MPID_U_MULTIPROCESSOR = (0 shl 30);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_MPID_CLUSTERID_MASK = ($F shl 8);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_MPID_CPUID_MASK = (3 shl 0);</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''ARMv8 CP15 C0 cache size ID constants''' <code> ARMV8_CP15_C0_CCSID_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CCSID_WT = (1 shl 31);</code> | ||
+ | | Indicates whether the cache level supports Write-Through | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CCSID_WB = (1 shl 30);</code> | ||
+ | | Indicates whether the cache level supports Write-Back | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CCSID_RA = (1 shl 29);</code> | ||
+ | | Indicates whether the cache level supports Read-Allocation | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CCSID_WA = (1 shl 28);</code> | ||
+ | | Indicates whether the cache level supports Write-Allocation | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CCSID_NUMSETS_MASK = ($7FFF shl 13);</code> | ||
+ | | (Number of sets in cache) - 1, therefore a value of 0 indicates 1 set in the cache. The number of sets does not have to be a power of 2. | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CCSID_NUMWAYS_MASK = ($3FF shl 3);</code> | ||
+ | | (Associativity of cache) - 1, therefore a value of 0 indicates an associativity of 1. The associativity does not have to be a power of 2. | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CCSID_LINESIZE_MASK = (7 shl 0);</code> | ||
+ | | (Log2(Number of words in cache line)) -2. (eg For a line length of 8 words: Log2(8) = 3, LineSize entry = 1) | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CCSID_NUMSETS_SHIFT = 13;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CCSID_NUMWAYS_SHIFT = 3;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''ARMv8 CP15 C0 cache level ID constants''' <code> ARMV8_CP15_C0_CLID_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_LOUU_MASK = (7 shl 27);</code> | ||
+ | | Level of Unification Uniprocessor for the cache hierarchy | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_LOC_MASK = (7 shl 24);</code> | ||
+ | | Level of Coherency for the cache hierarchy} | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_LOUIS_MASK = (7 shl 21);</code> | ||
+ | | Level of Unification Inner Shareable for the cache hierarchy} | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_CTYPE7_MASK = (7 shl 18);</code> | ||
+ | | Cache Type fields. Indicate the type of cache implemented at each level, from Level 1 up to a maximum of seven levels of cache hierarchy. | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_CTYPE7_NONE = (0 shl 18);</code> | ||
+ | | No cache | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_CTYPE7_INSTRUCTION = (1 shl 18);</code> | ||
+ | | Instruction cache only | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_CTYPE7_DATA = (2 shl 18);</code> | ||
+ | | Data cache only | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_CTYPE7_SEPARATE = (3 shl 18);</code> | ||
+ | | Separate instruction and data caches | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_CTYPE7_UNIFIED = (4 shl 18);</code> | ||
+ | | Unified cache | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_CTYPE6_MASK = (7 shl 15);</code> | ||
+ | | Cache Type fields. Indicate the type of cache implemented at each level, from Level 1 up to a maximum of seven levels of cache hierarchy. | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_CTYPE6_NONE = (0 shl 15);</code> | ||
+ | | No cache | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_CTYPE6_INSTRUCTION = (1 shl 15);</code> | ||
+ | | Instruction cache only | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_CTYPE6_DATA = (2 shl 15);</code> | ||
+ | | Data cache only | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_CTYPE6_SEPARATE = (3 shl 15);</code> | ||
+ | | Separate instruction and data caches | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_CTYPE6_UNIFIED = (4 shl 15);</code> | ||
+ | | Unified cache | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_CTYPE5_MASK = (7 shl 12);</code> | ||
+ | | Cache Type fields. Indicate the type of cache implemented at each level, from Level 1 up to a maximum of seven levels of cache hierarchy. | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_CTYPE5_NONE = (0 shl 12);</code> | ||
+ | | No cache | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_CTYPE5_INSTRUCTION = (1 shl 12);</code> | ||
+ | | Instruction cache only | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_CTYPE5_DATA = (2 shl 12);</code> | ||
+ | | Data cache only | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_CTYPE5_SEPARATE = (3 shl 12);</code> | ||
+ | | Separate instruction and data caches | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_CTYPE5_UNIFIED = (4 shl 12);</code> | ||
+ | | Unified cache | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_CTYPE4_MASK = (7 shl 9);</code> | ||
+ | | Cache Type fields. Indicate the type of cache implemented at each level, from Level 1 up to a maximum of seven levels of cache hierarchy. | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_CTYPE4_NONE = (0 shl 9);</code> | ||
+ | | No cache | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_CTYPE4_INSTRUCTION = (1 shl 9);</code> | ||
+ | | Instruction cache only | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_CTYPE4_DATA = (2 shl 9);</code> | ||
+ | | Data cache only | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_CTYPE4_SEPARATE = (3 shl 9);</code> | ||
+ | | Separate instruction and data caches | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_CTYPE4_UNIFIED = (4 shl 9);</code> | ||
+ | | Unified cache | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_CTYPE3_MASK = (7 shl 6);</code> | ||
+ | | Cache Type fields. Indicate the type of cache implemented at each level, from Level 1 up to a maximum of seven levels of cache hierarchy. | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_CTYPE3_NONE = (0 shl 6);</code> | ||
+ | | No cache | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_CTYPE3_INSTRUCTION = (1 shl 6);</code> | ||
+ | | Instruction cache only | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_CTYPE3_DATA = (2 shl 6);</code> | ||
+ | | Data cache only | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_CTYPE3_SEPARATE = (3 shl 6);</code> | ||
+ | | Separate instruction and data caches | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_CTYPE3_UNIFIED = (4 shl 6);</code> | ||
+ | | Unified cache | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_CTYPE2_MASK = (7 shl 3);</code> | ||
+ | | Cache Type fields. Indicate the type of cache implemented at each level, from Level 1 up to a maximum of seven levels of cache hierarchy. | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_CTYPE2_NONE = (0 shl 3);</code> | ||
+ | | No cache | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_CTYPE2_INSTRUCTION = (1 shl 3);</code> | ||
+ | | Instruction cache only | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_CTYPE2_DATA = (2 shl 3);</code> | ||
+ | | Data cache only | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_CTYPE2_SEPARATE = (3 shl 3);</code> | ||
+ | | Separate instruction and data caches | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_CTYPE2_UNIFIED = (4 shl 3);</code> | ||
+ | | Unified cache | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_CTYPE1_MASK = (7 shl 0);</code> | ||
+ | | Cache Type fields. Indicate the type of cache implemented at each level, from Level 1 up to a maximum of seven levels of cache hierarchy. | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_CTYPE1_NONE = (0 shl 0);</code> | ||
+ | | No cache | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_CTYPE1_INSTRUCTION = (1 shl 0);</code> | ||
+ | | Instruction cache onl | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_CTYPE1_DATA = (2 shl 0);</code> | ||
+ | | Data cache only | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_CTYPE1_SEPARATE = (3 shl 0);</code> | ||
+ | | Separate instruction and data caches | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CLID_CTYPE1_UNIFIED = (4 shl 0);</code> | ||
+ | |Unified cach | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''ARMv8 CP15 C0 cache size selection constants''' <code> ARMV8_CP15_C0_CSSEL_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CSSEL_LEVEL1 = (0 shl 1);</code> | ||
+ | | Cache level of required cache. Permitted values are from 0b000, indicating Level 1 cache, to 0b110 indicating Level 7 cache. | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CSSEL_LEVEL2 = (1 shl 1);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CSSEL_LEVEL3 = (2 shl 1);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CSSEL_LEVEL4 = (3 shl 1);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CSSEL_LEVEL5 = (4 shl 1);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CSSEL_LEVEL6 = (5 shl 1);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CSSEL_LEVEL7 = (6 shl 1);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CSSEL_DATA = (0 shl 0);</code> | ||
+ | | Instruction not Data bit (0 = Data or unified cache) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C0_CSSEL_INSTRUCTION = (1 shl 0);</code> | ||
+ | | Instruction not Data bit (1 = Instruction cache) | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''ARMv8 CP15 C1 control constants''' <code> ARMV8_CP15_C1_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_TE_BIT = (1 shl 30);</code> | ||
+ | | Thumb Exception enable. This bit enabled exceptions to be taken in Thumb state when set to 1 (Default 0). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_AFE_BIT = (1 shl 29);</code> | ||
+ | | Access Flag Enable bit. This bit enables use of the AP[0] bit in the translation table descriptors as an access flag when set to 1 (Default 0). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_TRE_BIT = (1 shl 28);</code> | ||
+ | | TEX remap enabled when set to 1 (TEX[2:1] become page table bits for OS) (Default 0) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_NMFI_BIT = (1 shl 27);</code> | ||
+ | | Non-maskable Fast Interrupts enabled when set to 1 (Default 0) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_EE_BIT = (1 shl 25);</code> | ||
+ | | CPSR E bit is set to 1 on an exception when set to 1 (Default 0) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_VE_BIT = (1 shl 24);</code> | ||
+ | | Interrupt vectors are defined by the VIC interface when set to 1 (Default 0) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_U_BIT = (1 shl 22);</code> | ||
+ | | Unaligned data access support enabled when set to 1 (Always 1 in ARMv8). The processor permits unaligned loads and stores and support for mixed endian data is enabled. | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_FI_BIT = (1 shl 21);</code> | ||
+ | | Low interrupt latency configuration enabled when set to 1 (Default 0) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_UWXN_BIT = (1 shl 20);</code> | ||
+ | | Unprivileged write permission implies Execute Never (XN) when set to 1 (Default 0)(Cortext-A7 MPCore) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_WXN_BIT = (1 shl 19);</code> | ||
+ | | Write permission implies Execute Never (XN) when set to 1 (Default 0)(Cortext-A7 MPCore) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_HA_BIT = (1 shl 17);</code> | ||
+ | | Hardware Access Flag Enable bit. If the implementation provides hardware management of the access flag this bit enables the access flag management (Default 0). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_RR_BIT = (1 shl 14);</code> | ||
+ | | Predictable cache replacement strategy by round-robin replacement when set to 1 (Default 0) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_V_BIT= (1 shl 13);</code> | ||
+ | | High exception vectors selected when set to 1, address range = 0xFFFF0000-0xFFFF001C (Default 0). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_I_BIT = (1 shl 12);</code> | ||
+ | | L1 Instruction Cache enabled when set to 1 (Default 0) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_Z_BIT = (1 shl 11);</code> | ||
+ | | Branch prediction enabled when set to 1 (Default 0)(Always Enabled on Cortext-A7 MPCore) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_SW_BIT = (1 shl 10);</code> | ||
+ | | SWP/SWPB Enable bit. This bit enables the use of SWP and SWPB instructions when set to 1 (Default 0). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_B_BIT = (1 shl 7);</code> | ||
+ | | Big-endian word-invariant memory system when set to 1 (Always 0 in ARMv8) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_C_BIT = (1 shl 2);</code> | ||
+ | | L1 Data cache enabled when set to 1 (Default 0) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_A_BIT = (1 shl 1);</code> | ||
+ | | Strict alignment fault checking enabled when set to 1 (Default 0) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_M_BIT = (1 shl 0);</code> | ||
+ | | MMU enabled when set to 1 (Default 0) | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''ARMv8 CP15 C1 auxiliary control constants''' <code> ARMV8_CP15_C1_AUX_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_AUX_DDI = (1 shl 28);</code> | ||
+ | | Disable dual issue when set to 1 (Default 0) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_AUX_DDVM = (1 shl 15);</code> | ||
+ | | Disable Distributed Virtual Memory (DVM) transactions when set to 1 (Default 0) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_AUX_L1PCTL_0 = (0 shl 13);</code> | ||
+ | | L1 Data prefetch control, Prefetch disabled | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_AUX_L1PCTL_1 = (1 shl 13);</code> | ||
+ | | L1 Data prefetch control, 1 outstanding pre-fetch permitted | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_AUX_L1PCTL_2 = (2 shl 13);</code> | ||
+ | | L1 Data prefetch control, 2 outstanding pre-fetches permitted | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_AUX_L1PCTL_3 = (3 shl 13);</code> | ||
+ | | L1 Data prefetch control, 3 outstanding pre-fetches permitted, this is the reset value (Default) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_AUX_L1RADIS = (1 shl 12);</code> | ||
+ | | L1 Data Cache read-allocate mode disable when set to 1 (Default 0) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_AUX_L2RADIS = (1 shl 11);</code> | ||
+ | | L2 Data Cache read-allocate mode disable when set to 1 (Default 0) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_AUX_DODMBS = (1 shl 10);</code> | ||
+ | | Disable optimized data memory barrier behavior when set to 1 (Default 0) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_AUX_SMP = (1 shl 6);</code> | ||
+ | | Enables coherent requests to the processor when set to 1 (Default 0). You must ensure this bit is set to 1 before the caches and MMU are enabled, or any cache and TLB maintenance operations are performed. | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_AUX_FW = (1 shl 0);</code> | ||
+ | | Cache and TLB maintenance broadcast enabled when set to 1 (Default 0) (Cortex-A9 Only) | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''ARMv8 CP15 C1 coprocessor access control constants''' <code> ARMV8_CP15_C1_CP* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_COPRO_ASEDIS = (1 shl 31);</code> | ||
+ | | Disable Advanced SIMD Functionality when set to 1 (Default 0) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_COPRO_D32DIS = (1 shl 30);</code> | ||
+ | | Disable use of D16-D31 of the VFP register file when set to 1 (Default 0) | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_CP0_NONE = (0 shl 0);</code> | ||
+ | | Access denied (Default) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_CP0_SYS = (1 shl 0);</code> | ||
+ | | Privileged mode access only | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_CP0_USER = (3 shl 0);</code> | ||
+ | | Privileged and User mode access | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_CP1_NONE = (0 shl 2);</code> | ||
+ | | Access denied (Default) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_CP1_SYS = (1 shl 2);</code> | ||
+ | | Privileged mode access only | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_CP1_USER = (3 shl 2);</code> | ||
+ | | Privileged and User mode access | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_CP2_NONE = (0 shl 4);</code> | ||
+ | | Access denied (Default) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_CP2_SYS = (1 shl 4);</code> | ||
+ | | Privileged mode access only | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_CP2_USER = (3 shl 4);</code> | ||
+ | | Privileged and User mode access | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_CP3_NONE = (0 shl 6);</code> | ||
+ | | Access denied (Default) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_CP3_SYS = (1 shl 6);</code> | ||
+ | | Privileged mode access only | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_CP3_USER = (3 shl 6);</code> | ||
+ | | Privileged and User mode access | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_CP4_NONE = (0 shl 8);</code> | ||
+ | | Access denied (Default) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_CP4_SYS = (1 shl 8);</code> | ||
+ | | Privileged mode access only | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_CP4_USER = (3 shl 8);</code> | ||
+ | | Privileged and User mode access | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_CP5_NONE = (0 shl 10);</code> | ||
+ | | Access denied (Default) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_CP5_SYS = (1 shl 10);</code> | ||
+ | | Privileged mode access only | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_CP5_USER = (3 shl 10);</code> | ||
+ | | Privileged and User mode access | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_CP6_NONE = (0 shl 12);</code> | ||
+ | | Access denied (Default) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_CP6_SYS = (1 shl 12);</code> | ||
+ | | Privileged mode access only | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_CP6_USER = (3 shl 12);</code> | ||
+ | | Privileged and User mode access | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_CP7_NONE = (0 shl 14);</code> | ||
+ | | Access denied (Default) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_CP7_SYS = (1 shl 14);</code> | ||
+ | | Privileged mode access only | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_CP7_USER = (3 shl 14);</code> | ||
+ | | Privileged and User mode access | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_CP8_NONE = (0 shl 16);</code> | ||
+ | | Access denied (Default) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_CP8_SYS = (1 shl 16);</code> | ||
+ | | Privileged mode access only | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_CP8_USER = (3 shl 16);</code> | ||
+ | | Privileged and User mode access | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_CP9_NONE = (0 shl 18);</code> | ||
+ | | Access denied (Default) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_CP9_SYS = (1 shl 18);</code> | ||
+ | | Privileged mode access only | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_CP9_USER = (3 shl 18);</code> | ||
+ | | Privileged and User mode access | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_CP10_NONE = (0 shl 20);</code> | ||
+ | | Access denied (Default) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_CP10_SYS = (1 shl 20);</code> | ||
+ | | Privileged mode access only | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_CP10_USER = (3 shl 20);</code> | ||
+ | | Privileged and User mode access | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_CP11_NONE = (0 shl 22);</code> | ||
+ | | Access denied (Default) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_CP11_SYS = (1 shl 22);</code> | ||
+ | | Privileged mode access only | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_CP11_USER = (3 shl 22);</code> | ||
+ | | Privileged and User mode access | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_CP12_NONE = (0 shl 24);</code> | ||
+ | | Access denied (Default) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_CP12_SYS = (1 shl 24);</code> | ||
+ | | Privileged mode access only | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_CP12_USER = (3 shl 24);</code> | ||
+ | | Privileged and User mode access | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_CP13_NONE = (0 shl 26);</code> | ||
+ | | Access denied (Default) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_CP13_SYS = (1 shl 26);</code> | ||
+ | | Privileged mode access only | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_CP13_USER = (3 shl 26);</code> | ||
+ | | Privileged and User mode access | ||
+ | |- | ||
+ | |colspan="2"|''Coprocessors CP14 (Debug Control) and CP15 (System Control) are not affected by the Coprocessor Access Control Register'' | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''ARMv8 CP15 C1 secure configuration constants''' <code> ARMV8_CP15_C1_SCR_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_SCR_SIF = (1 shl 9);</code> | ||
+ | | Secure Instruction Fetch bit | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_SCR_HCE = (1 shl 8);</code> | ||
+ | | Hyp Call enable. This bit enables the use of HVC instruction from Non-secure PL1 modes. | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_SCR_SCD = (1 shl 7);</code> | ||
+ | | Secure Monitor Call disable. This bit causes the SMC instruction to be UNDEFINED in Non-secure state. | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_SCR_NET = (1 shl 6);</code> | ||
+ | | Not Early Termination. This bit disables early termination of data operations. | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_SCR_AW = (1 shl 5);</code> | ||
+ | | A bit writable. This bit controls whether the A bit in the CPSR can be modified in Non-secure state}. | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_SCR_FW = (1 shl 4);</code> | ||
+ | | F bit writable. This bit controls whether the F bit in the CPSR can be modified in Non-secure state}. | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_SCR_EA = (1 shl 3);</code> | ||
+ | | External Abort handler. This bit controls which mode takes external aborts. | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_SCR_FIQ = (1 shl 2);</code> | ||
+ | | FIQ handler. This bit controls which mode takes FIQ exceptions. | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_SCR_IRQ = (1 shl 1);</code> | ||
+ | | IRQ handler. This bit controls which mode takes IRQ exceptions. | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C1_SCR_NS = (1 shl 0);</code> | ||
+ | | Non Secure bit. Except when the processor is in Monitor mode, this bit determines the security state of the processor. | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''ARMv8 CP15 C2 translation table base constants''' <code> ARMV8_CP15_C2_TTBR_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C2_TTBR_BASE_MASK = $FFFFC000;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C2_TTBR_NOS = (1 shl 5);</code> | ||
+ | | Not Outer Shareable bit (0 Outer Shareable / 1 Inner Shareable) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C2_TTBR_RGN_OUTER_NONCACHED = (0 shl 3);</code> | ||
+ | | Normal Outer Noncacheable (Default) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C2_TTBR_RGN_OUTER_WRITE_ALLOCATE = (1 shl 3);</code> | ||
+ | | Normal Outer Write-back, Write Allocate | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C2_TTBR_RGN_OUTER_WRITE_THROUGH = (2 shl 3);</code> | ||
+ | | Normal Outer Write-through, No Allocate on Write | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C2_TTBR_RGN_OUTER_WRITE_BACK = (3 shl 3);</code> | ||
+ | | Normal Outer Write-back, No Allocate on Write | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C2_TTBR_IMP = (1 shl 2);</code> | ||
+ | | The effect of this bit is IMPLEMENTATION DEFINED | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C2_TTBR_S = (1 shl 1);</code> | ||
+ | | Shareable bit (0 Non Shareable / 1 Shareable) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C2_TTBR_C_INNER_CACHED = (1 shl 0);</code> | ||
+ | | Cacheable bit (0 Inner Non Cacheable / 1 Inner Cacheable) (ARMv8-A base only) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C2_TTBR_IRGN_INNER_NONCACHED = (0 shl 6) or (0 shl 0);</code> | ||
+ | | Normal Inner Noncacheable (Default) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C2_TTBR_IRGN_INNER_WRITE_ALLOCATE = (1 shl 6) or (0 shl 0);</code> | ||
+ | | Normal Inner Write-Back Write-Allocate Cacheable | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C2_TTBR_IRGN_INNER_WRITE_THROUGH = (0 shl 6) or (1 shl 0);</code> | ||
+ | | Normal Inner Write-Through Cacheable | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C2_TTBR_IRGN_INNER_WRITE_BACK = (1 shl 6) or (1 shl 0);</code> | ||
+ | | Normal Inner Write-Back no Write-Allocate Cacheable | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''ARMv8 CP15 C3 domain access control constants''' <code> ARMV8_CP15_C3_DOMAIN* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN0_NONE = (0 shl 0);</code> | ||
+ | | No access, Any access generates a domain fault (Default) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN0_CLIENT = (1 shl 0);</code> | ||
+ | | Client, Accesses are checked against the access permission bits in the TLB entry | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN0_MANAGER = (3 shl 0);</code> | ||
+ | | Manager, Accesses are not checked against the access permission bits in the TLB entry, so a permission fault cannot be generated | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN1_NONE = (0 shl 2);</code> | ||
+ | | No access, Any access generates a domain fault (Default) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN1_CLIENT = (1 shl 2);</code> | ||
+ | | Client, Accesses are checked against the access permission bits in the TLB entry | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN1_MANAGER = (3 shl 2);</code> | ||
+ | | Manager, Accesses are not checked against the access permission bits in the TLB entry, so a permission fault cannot be generated | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN2_NONE = (0 shl 4);</code> | ||
+ | | No access, Any access generates a domain fault (Default) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN2_CLIENT = (1 shl 4);</code> | ||
+ | | Client, Accesses are checked against the access permission bits in the TLB entry | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN2_MANAGER = (3 shl 4);</code> | ||
+ | | Manager, Accesses are not checked against the access permission bits in the TLB entry, so a permission fault cannot be generated | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN3_NONE = (0 shl 6);</code> | ||
+ | | No access, Any access generates a domain fault (Default) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN3_CLIENT = (1 shl 6);</code> | ||
+ | | Client, Accesses are checked against the access permission bits in the TLB entry | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN3_MANAGER = (3 shl 6);</code> | ||
+ | | Manager, Accesses are not checked against the access permission bits in the TLB entry, so a permission fault cannot be generated | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN4_NONE = (0 shl 8);</code> | ||
+ | | No access, Any access generates a domain fault (Default) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN4_CLIENT = (1 shl 8);</code> | ||
+ | | Client, Accesses are checked against the access permission bits in the TLB entry | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN4_MANAGER = (3 shl 8);</code> | ||
+ | | Manager, Accesses are not checked against the access permission bits in the TLB entry, so a permission fault cannot be generated | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN5_NONE = (0 shl 10);</code> | ||
+ | | No access, Any access generates a domain fault (Default) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN5_CLIENT = (1 shl 10);</code> | ||
+ | | Client, Accesses are checked against the access permission bits in the TLB entry | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN5_MANAGER = (3 shl 10);</code> | ||
+ | | Manager, Accesses are not checked against the access permission bits in the TLB entry, so a permission fault cannot be generated | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN6_NONE = (0 shl 12);</code> | ||
+ | | No access, Any access generates a domain fault (Default) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN6_CLIENT = (1 shl 12);</code> | ||
+ | | Client, Accesses are checked against the access permission bits in the TLB entry | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN6_MANAGER = (3 shl 12);</code> | ||
+ | | Manager, Accesses are not checked against the access permission bits in the TLB entry, so a permission fault cannot be generated | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN7_NONE = (0 shl 14);</code> | ||
+ | | No access, Any access generates a domain fault (Default) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN7_CLIENT = (1 shl 14);</code> | ||
+ | | Client, Accesses are checked against the access permission bits in the TLB entry | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN7_MANAGER = (3 shl 14);</code> | ||
+ | | Manager, Accesses are not checked against the access permission bits in the TLB entry, so a permission fault cannot be generated | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN8_NONE = (0 shl 16);</code> | ||
+ | | No access, Any access generates a domain fault (Default) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN8_CLIENT = (1 shl 16);</code> | ||
+ | | Client, Accesses are checked against the access permission bits in the TLB entry | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN8_MANAGER = (3 shl 16);</code> | ||
+ | | Manager, Accesses are not checked against the access permission bits in the TLB entry, so a permission fault cannot be generated | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN9_NONE = (0 shl 18);</code> | ||
+ | | No access, Any access generates a domain fault (Default) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN9_CLIENT = (1 shl 18);</code> | ||
+ | | Client, Accesses are checked against the access permission bits in the TLB entry | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN9_MANAGER = (3 shl 18);</code> | ||
+ | | Manager, Accesses are not checked against the access permission bits in the TLB entry, so a permission fault cannot be generated | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN10_NONE = (0 shl 20);</code> | ||
+ | | No access, Any access generates a domain fault (Default) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN10_CLIENT = (1 shl 20);</code> | ||
+ | | Client, Accesses are checked against the access permission bits in the TLB entry | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN10_MANAGER = (3 shl 20);</code> | ||
+ | | Manager, Accesses are not checked against the access permission bits in the TLB entry, so a permission fault cannot be generated | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN11_NONE = (0 shl 22);</code> | ||
+ | | No access, Any access generates a domain fault (Default) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN11_CLIENT = (1 shl 22);</code> | ||
+ | | Client, Accesses are checked against the access permission bits in the TLB entry | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN11_MANAGER = (3 shl 22);</code> | ||
+ | | Manager, Accesses are not checked against the access permission bits in the TLB entry, so a permission fault cannot be generated | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN12_NONE = (0 shl 24);</code> | ||
+ | | No access, Any access generates a domain fault (Default) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN12_CLIENT = (1 shl 24);</code> | ||
+ | | Client, Accesses are checked against the access permission bits in the TLB entry | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN12_MANAGER = (3 shl 24);</code> | ||
+ | | Manager, Accesses are not checked against the access permission bits in the TLB entry, so a permission fault cannot be generated | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN13_NONE = (0 shl 26);</code> | ||
+ | | No access, Any access generates a domain fault (Default) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN13_CLIENT = (1 shl 26);</code> | ||
+ | | Client, Accesses are checked against the access permission bits in the TLB entry | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN13_MANAGER = (3 shl 26);</code> | ||
+ | | Manager, Accesses are not checked against the access permission bits in the TLB entry, so a permission fault cannot be generated | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN14_NONE = (0 shl 28);</code> | ||
+ | | No access, Any access generates a domain fault (Default) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN14_CLIENT = (1 shl 28);</code> | ||
+ | | Client, Accesses are checked against the access permission bits in the TLB entry | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN14_MANAGER = (3 shl 28);</code> | ||
+ | | Manager, Accesses are not checked against the access permission bits in the TLB entry, so a permission fault cannot be generated | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN15_NONE = (0 shl 30);</code> | ||
+ | | No access, Any access generates a domain fault (Default) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN15_CLIENT = (1 shl 30);</code> | ||
+ | | Client, Accesses are checked against the access permission bits in the TLB entry | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C3_DOMAIN15_MANAGER = (3 shl 30);</code> | ||
+ | | Manager, Accesses are not checked against the access permission bits in the TLB entry, so a permission fault cannot be generated | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''ARMv8 CP15 C10 primary region remap constants''' <code> ARMV8_CP15_C10_PRRR_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_PRRR_NOS7 = (1 shl 31);</code> | ||
+ | | Outer Shareable property mapping for memory attributes 7, if the region is mapped as Normal Shareable (0 Outer Shareable / 1 Inner Shareable) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_PRRR_NOS6 = (1 shl 30);</code> | ||
+ | | Outer Shareable property mapping for memory attributes 6, if the region is mapped as Normal Shareable (0 Outer Shareable / 1 Inner Shareable) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_PRRR_NOS5 = (1 shl 29);</code> | ||
+ | | Outer Shareable property mapping for memory attributes 5, if the region is mapped as Normal Shareable (0 Outer Shareable / 1 Inner Shareable) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_PRRR_NOS4 = (1 shl 28);</code> | ||
+ | | Outer Shareable property mapping for memory attributes 4, if the region is mapped as Normal Shareable (0 Outer Shareable / 1 Inner Shareable) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_PRRR_NOS3 = (1 shl 27);</code> | ||
+ | | Outer Shareable property mapping for memory attributes 3, if the region is mapped as Normal Shareable (0 Outer Shareable / 1 Inner Shareable) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_PRRR_NOS2 = (1 shl 26);</code> | ||
+ | | Outer Shareable property mapping for memory attributes 2, if the region is mapped as Normal Shareable (0 Outer Shareable / 1 Inner Shareable) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_PRRR_NOS1 = (1 shl 25);</code> | ||
+ | | Outer Shareable property mapping for memory attributes 1, if the region is mapped as Normal Shareable (0 Outer Shareable / 1 Inner Shareable) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_PRRR_NOS0 = (1 shl 24);</code> | ||
+ | | Outer Shareable property mapping for memory attributes 0, if the region is mapped as Normal Shareable (0 Outer Shareable / 1 Inner Shareable) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_PRRR_NS1 = (1 shl 19);</code> | ||
+ | | Mapping of S = 1 attribute for Normal memory (0 Not Sharable / 1 Shareable) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_PRRR_NS0 = (1 shl 18);</code> | ||
+ | | Mapping of S = 0 attribute for Normal memory (0 Not Sharable / 1 Shareable) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_PRRR_DS1 = (1 shl 17);</code> | ||
+ | | Mapping of S = 1 attribute for Device memory (This field has no significance in the Cortex-A7) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_PRRR_DS0 = (1 shl 16);</code> | ||
+ | | Mapping of S = 0 attribute for Device memory (This field has no significance in the Cortex-A7) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_PRRR_TR7_STRONGLY_ORDERED = (0 shl 14);</code> | ||
+ | | Primary TEX mapping for memory attributes 7 (The value of the TEX[0], C and B bits) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_PRRR_TR7_DEVICE = (1 shl 14);</code> | ||
+ | | Primary TEX mapping for memory attributes 7 (The value of the TEX[0], C and B bits) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_PRRR_TR7_NORMAL = (2 shl 14);</code> | ||
+ | | Primary TEX mapping for memory attributes 7 (The value of the TEX[0], C and B bits) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_PRRR_TR6_STRONGLY_ORDERED = (0 shl 12);</code> | ||
+ | | Primary TEX mapping for memory attributes 6 (The value of the TEX[0], C and B bits) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_PRRR_TR6_DEVICE = (1 shl 12);</code> | ||
+ | | Primary TEX mapping for memory attributes 6 (The value of the TEX[0], C and B bits) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_PRRR_TR6_NORMAL = (2 shl 12);</code> | ||
+ | | Primary TEX mapping for memory attributes 6 (The value of the TEX[0], C and B bits) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_PRRR_TR5_STRONGLY_ORDERED = (0 shl 10);</code> | ||
+ | | Primary TEX mapping for memory attributes 5 (The value of the TEX[0], C and B bits) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_PRRR_TR5_DEVICE = (1 shl 10);</code> | ||
+ | | Primary TEX mapping for memory attributes 5 (The value of the TEX[0], C and B bits) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_PRRR_TR5_NORMAL = (2 shl 10);</code> | ||
+ | | Primary TEX mapping for memory attributes 5 (The value of the TEX[0], C and B bits) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_PRRR_TR4_STRONGLY_ORDERED = (0 shl 8);</code> | ||
+ | | Primary TEX mapping for memory attributes 4 (The value of the TEX[0], C and B bits) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_PRRR_TR4_DEVICE = (1 shl 8);</code> | ||
+ | | Primary TEX mapping for memory attributes 4 (The value of the TEX[0], C and B bits) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_PRRR_TR4_NORMAL = (2 shl 8);</code> | ||
+ | | Primary TEX mapping for memory attributes 4 (The value of the TEX[0], C and B bits) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_PRRR_TR3_STRONGLY_ORDERED = (0 shl 6);</code> | ||
+ | | Primary TEX mapping for memory attributes 3 (The value of the TEX[0], C and B bits) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_PRRR_TR3_DEVICE = (1 shl 6);</code> | ||
+ | | Primary TEX mapping for memory attributes 3 (The value of the TEX[0], C and B bits) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_PRRR_TR3_NORMAL = (2 shl 6);</code> | ||
+ | | Primary TEX mapping for memory attributes 3 (The value of the TEX[0], C and B bits) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_PRRR_TR2_STRONGLY_ORDERED = (0 shl 4);</code> | ||
+ | | Primary TEX mapping for memory attributes 2 (The value of the TEX[0], C and B bits) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_PRRR_TR2_DEVICE = (1 shl 4);</code> | ||
+ | | Primary TEX mapping for memory attributes 2 (The value of the TEX[0], C and B bits) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_PRRR_TR2_NORMAL = (2 shl 4);</code> | ||
+ | | Primary TEX mapping for memory attributes 2 (The value of the TEX[0], C and B bits) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_PRRR_TR1_STRONGLY_ORDERED = (0 shl 2);</code> | ||
+ | | Primary TEX mapping for memory attributes 1 (The value of the TEX[0], C and B bits) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_PRRR_TR1_DEVICE = (1 shl 2);</code> | ||
+ | | Primary TEX mapping for memory attributes 1 (The value of the TEX[0], C and B bits) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_PRRR_TR1_NORMAL = (2 shl 2);</code> | ||
+ | | Primary TEX mapping for memory attributes 1 (The value of the TEX[0], C and B bits) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_PRRR_TR0_STRONGLY_ORDERED = (0 shl 0);</code> | ||
+ | |Primary TEX mapping for memory attributes 0 (The value of the TEX[0], C and B bits) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_PRRR_TR0_DEVICE = (1 shl 0);</code> | ||
+ | | Primary TEX mapping for memory attributes 0 (The value of the TEX[0], C and B bits) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_PRRR_TR0_NORMAL = (2 shl 0);</code> | ||
+ | | Primary TEX mapping for memory attributes 0 (The value of the TEX[0], C and B bits) | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_PRRR_MASK = ARMV8_CP15_C10_PRRR_NOS7 or ARMV8_CP15_C10_PRRR_NOS6 or ARMV8_CP15_C10_PRRR_NOS5 or ARMV8_CP15_C10_PRRR_NOS4</code> | ||
+ | | TR0 to TR7 Inner Shareable | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>or ARMV8_CP15_C10_PRRR_NOS3 or ARMV8_CP15_C10_PRRR_NOS2 or ARMV8_CP15_C10_PRRR_NOS1 or ARMV8_CP15_C10_PRRR_NOS0</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>or ARMV8_CP15_C10_PRRR_NS1 or ARMV8_CP15_C10_PRRR_DS1</code> | ||
+ | | S bit controls Shareable for Normal and Device memory | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>or ARMV8_CP15_C10_PRRR_TR0_STRONGLY_ORDERED</code> | ||
+ | | TR0 is Strongly Ordered | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>or ARMV8_CP15_C10_PRRR_TR1_NORMAL or ARMV8_CP15_C10_PRRR_TR2_NORMAL or ARMV8_CP15_C10_PRRR_TR3_NORMAL</code> | ||
+ | | TR1/2/3 are Normal | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>or ARMV8_CP15_C10_PRRR_TR4_DEVICE</code> | ||
+ | | TR4 is Device | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>or ARMV8_CP15_C10_PRRR_TR7_NORMAL;</code> | ||
+ | | TR7 is Normal | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''ARMv8 CP15 C10 normal memory remap constants''' <code> ARMV8_CP15_C10_NMRR_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_OR7_NONCACHED = (0 shl 30);</code> | ||
+ | | Outer Cacheable property mapping for memory attributes 7, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_OR7_WRITE_ALLOCATE = (1 shl 30);</code> | ||
+ | | Outer Cacheable property mapping for memory attributes 7, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_OR7_WRITE_THROUGH = (2 shl 30);</code> | ||
+ | | Outer Cacheable property mapping for memory attributes 7, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_OR7_WRITE_BACK = (3 shl 30);</code> | ||
+ | | Outer Cacheable property mapping for memory attributes 7, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_OR6_NONCACHED = (0 shl 28);</code> | ||
+ | | Outer Cacheable property mapping for memory attributes 6, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_OR6_WRITE_ALLOCATE = (1 shl 28);</code> | ||
+ | | Outer Cacheable property mapping for memory attributes 6, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_OR6_WRITE_THROUGH = (2 shl 28);</code> | ||
+ | | Outer Cacheable property mapping for memory attributes 6, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_OR6_WRITE_BACK = (3 shl 28);</code> | ||
+ | | Outer Cacheable property mapping for memory attributes 6, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_OR5_NONCACHED = (0 shl 26);</code> | ||
+ | | Outer Cacheable property mapping for memory attributes 5, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_OR5_WRITE_ALLOCATE = (1 shl 26);</code> | ||
+ | | Outer Cacheable property mapping for memory attributes 5, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_OR5_WRITE_THROUGH = (2 shl 26);</code> | ||
+ | | Outer Cacheable property mapping for memory attributes 5, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_OR5_WRITE_BACK = (3 shl 26);</code> | ||
+ | | Outer Cacheable property mapping for memory attributes 5, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_OR4_NONCACHED = (0 shl 24);</code> | ||
+ | | Outer Cacheable property mapping for memory attributes 4, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_OR4_WRITE_ALLOCATE = (1 shl 24);</code> | ||
+ | | Outer Cacheable property mapping for memory attributes 4, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_OR4_WRITE_THROUGH = (2 shl 24);</code> | ||
+ | | Outer Cacheable property mapping for memory attributes 4, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_OR4_WRITE_BACK = (3 shl 24);</code> | ||
+ | | Outer Cacheable property mapping for memory attributes 4, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_OR3_NONCACHED = (0 shl 22);</code> | ||
+ | | Outer Cacheable property mapping for memory attributes 3, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_OR3_WRITE_ALLOCATE = (1 shl 22);</code> | ||
+ | | Outer Cacheable property mapping for memory attributes 3, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_OR3_WRITE_THROUGH = (2 shl 22);</code> | ||
+ | | Outer Cacheable property mapping for memory attributes 3, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_OR3_WRITE_BACK = (3 shl 22);</code> | ||
+ | | Outer Cacheable property mapping for memory attributes 3, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_OR2_NONCACHED = (0 shl 20);</code> | ||
+ | | Outer Cacheable property mapping for memory attributes 2, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_OR2_WRITE_ALLOCATE = (1 shl 20);</code> | ||
+ | | Outer Cacheable property mapping for memory attributes 2, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_OR2_WRITE_THROUGH = (2 shl 20);</code> | ||
+ | | Outer Cacheable property mapping for memory attributes 2, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_OR2_WRITE_BACK = (3 shl 20);</code> | ||
+ | | Outer Cacheable property mapping for memory attributes 2, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_OR1_NONCACHED = (0 shl 18);</code> | ||
+ | | Outer Cacheable property mapping for memory attributes 1, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_OR1_WRITE_ALLOCATE = (1 shl 18);</code> | ||
+ | | Outer Cacheable property mapping for memory attributes 1, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_OR1_WRITE_THROUGH = (2 shl 18);</code> | ||
+ | | Outer Cacheable property mapping for memory attributes 1, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_OR1_WRITE_BACK = (3 shl 18);</code> | ||
+ | | Outer Cacheable property mapping for memory attributes 1, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_OR0_NONCACHED = (0 shl 16);</code> | ||
+ | | Outer Cacheable property mapping for memory attributes 0, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_OR0_WRITE_ALLOCATE = (1 shl 16);</code> | ||
+ | | Outer Cacheable property mapping for memory attributes 0, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_OR0_WRITE_THROUGH = (2 shl 16);</code> | ||
+ | | Outer Cacheable property mapping for memory attributes 0, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_OR0_WRITE_BACK = (3 shl 16);</code> | ||
+ | | Outer Cacheable property mapping for memory attributes 0, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_IR7_NONCACHED = (0 shl 14);</code> | ||
+ | | Inner Cacheable property mapping for memory attributes 7, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_IR7_WRITE_ALLOCATE = (1 shl 14);</code> | ||
+ | | Inner Cacheable property mapping for memory attributes 7, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_IR7_WRITE_THROUGH = (2 shl 14);</code> | ||
+ | | Inner Cacheable property mapping for memory attributes 7, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_IR7_WRITE_BACK = (3 shl 14);</code> | ||
+ | | Inner Cacheable property mapping for memory attributes 7, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_IR6_NONCACHED = (0 shl 12);</code> | ||
+ | | Inner Cacheable property mapping for memory attributes 6, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_IR6_WRITE_ALLOCATE = (1 shl 12);</code> | ||
+ | | Inner Cacheable property mapping for memory attributes 6, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_IR6_WRITE_THROUGH = (2 shl 12);</code> | ||
+ | | Inner Cacheable property mapping for memory attributes 6, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_IR6_WRITE_BACK = (3 shl 12);</code> | ||
+ | | Inner Cacheable property mapping for memory attributes 6, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_IR5_NONCACHED = (0 shl 10);</code> | ||
+ | | Inner Cacheable property mapping for memory attributes 5, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_IR5_WRITE_ALLOCATE = (1 shl 10);</code> | ||
+ | | Inner Cacheable property mapping for memory attributes 5, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_IR5_WRITE_THROUGH = (2 shl 10);</code> | ||
+ | | Inner Cacheable property mapping for memory attributes 5, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_IR5_WRITE_BACK = (3 shl 10);</code> | ||
+ | | Inner Cacheable property mapping for memory attributes 5, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_IR4_NONCACHED = (0 shl 8);</code> | ||
+ | | Inner Cacheable property mapping for memory attributes 4, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_IR4_WRITE_ALLOCATE = (1 shl 8);</code> | ||
+ | | Inner Cacheable property mapping for memory attributes 4, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_IR4_WRITE_THROUGH = (2 shl 8);</code> | ||
+ | | Inner Cacheable property mapping for memory attributes 4, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_IR4_WRITE_BACK = (3 shl 8);</code> | ||
+ | | Inner Cacheable property mapping for memory attributes 4, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_IR3_NONCACHED = (0 shl 6);</code> | ||
+ | | Inner Cacheable property mapping for memory attributes 3, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_IR3_WRITE_ALLOCATE = (1 shl 6);</code> | ||
+ | | Inner Cacheable property mapping for memory attributes 3, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_IR3_WRITE_THROUGH = (2 shl 6);</code> | ||
+ | | Inner Cacheable property mapping for memory attributes 3, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_IR3_WRITE_BACK = (3 shl 6);</code> | ||
+ | | Inner Cacheable property mapping for memory attributes 3, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_IR2_NONCACHED = (0 shl 4);</code> | ||
+ | | Inner Cacheable property mapping for memory attributes 2, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_IR2_WRITE_ALLOCATE = (1 shl 4);</code> | ||
+ | | Inner Cacheable property mapping for memory attributes 2, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_IR2_WRITE_THROUGH = (2 shl 4);</code> | ||
+ | | Inner Cacheable property mapping for memory attributes 2, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_IR2_WRITE_BACK = (3 shl 4);</code> | ||
+ | | Inner Cacheable property mapping for memory attributes 2, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_IR1_NONCACHED = (0 shl 2);</code> | ||
+ | | Inner Cacheable property mapping for memory attributes 1, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_IR1_WRITE_ALLOCATE = (1 shl 2);</code> | ||
+ | | Inner Cacheable property mapping for memory attributes 1, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_IR1_WRITE_THROUGH = (2 shl 2);</code> | ||
+ | | Inner Cacheable property mapping for memory attributes 1, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_IR1_WRITE_BACK = (3 shl 2);</code> | ||
+ | | Inner Cacheable property mapping for memory attributes 1, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_IR0_NONCACHED = (0 shl 0);</code> | ||
+ | | Inner Cacheable property mapping for memory attributes 0, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_IR0_WRITE_ALLOCATE = (1 shl 0);</code> | ||
+ | | Inner Cacheable property mapping for memory attributes 0, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_IR0_WRITE_THROUGH = (2 shl 0);</code> | ||
+ | | Inner Cacheable property mapping for memory attributes 0, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_IR0_WRITE_BACK = (3 shl 0);</code> | ||
+ | | Inner Cacheable property mapping for memory attributes 0, if the region is mapped as Normal memory by the PRRR (The value of the TEX[0], C and B bits). | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C10_NMRR_MASK = ARMV8_CP15_C10_NMRR_IR1_NONCACHED or ARMV8_CP15_C10_NMRR_OR1_NONCACHED</code> | ||
+ | | IR1 and OR1 are Non Cached | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>or ARMV8_CP15_C10_NMRR_IR2_WRITE_THROUGH or ARMV8_CP15_C10_NMRR_OR2_WRITE_THROUGH</code> | ||
+ | | IR2 and OR2 are Write Through | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>or ARMV8_CP15_C10_NMRR_IR3_WRITE_BACK or ARMV8_CP15_C10_NMRR_OR3_WRITE_BACK</code> | ||
+ | | IR3 and OR3 are Write Back | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>or ARMV8_CP15_C10_NMRR_IR7_WRITE_ALLOCATE or ARMV8_CP15_C10_NMRR_OR7_WRITE_ALLOCATE;</code> | ||
+ | | IR7 and OR7 are Write Allocate | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''ARMv8 CP15 C14 generic timer control constants''' <code> ARMV8_CP15_C14_CNT_CTL_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C14_CNT_CTL_ISTATUS = (1 shl 2);</code> | ||
+ | | The status of the timer (Read Only)(When set the timer condition is asserted) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C14_CNT_CTL_IMASK = (1 shl 1);</code> | ||
+ | | Timer output signal mask bit (When set the timer output signal is masked) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C14_CNT_CTL_ENABLE = (1 shl 0);</code> | ||
+ | | Enables the timer (When set the timer output signal is enabled) | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''ARMv8 CP15 C14 generic timer constants''' <code> ARMV8_CP15_C14_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C14_CNTP = 0;</code> | ||
+ | | Physical Timer (Secure or Non Secure depending on the NS bit of the SCR) | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C14_CNTV = 1;</code> | ||
+ | | Virtual Timer | ||
+ | |- | ||
+ | | <code>ARMV8_CP15_C14_CNTH = 2;</code> | ||
+ | | Hypervisor Timer (Only available from HYP mode | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''ARMv8 floating-point exception constants''' <code> ARMV8_FPEXC_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>ARMV8_FPEXC_EN = (1 shl 30);</code> | ||
+ | | Floating-point system is enabled and operates normally if set to 1 (Default 0) | ||
+ | |- | ||
+ | | <code>ARMV8_FPEXC_EX = (1 shl 31);</code> | ||
+ | | If EX is set to 0 then only FPSCR and FPEXC need to be preseved on a context switch (Default 0) | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''ARMv8 level one descriptor type constants''' <code> ARMV8_L1D_TYPE_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|See page B3-7 of the ARMv7 Architecture Reference Manual | ||
+ | |- | ||
+ | |colspan="2"|See page B3-8 of the ARMv7 Architecture Reference Manual | ||
+ | |- | ||
+ | |colspan="2"|Level One Page Table contains 4096 32bit (4 byte) entries for a total size of 16KB | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_TYPE_COARSE = 1;</code> | ||
+ | | The entry points to a 1MB second-level page table. See page 6-40. | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_TYPE_SECTION = 2;</code> | ||
+ | | The entry points to a either a 1MB Section of memory or a 16MB Supersection of memory | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_TYPE_SUPERSECTION = 2;</code> | ||
+ | | Bit[18] of the descriptor selects between a Section and a Supersection | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''ARMv8 level one descriptor flag constants''' <code> ARMV8_L1D_FLAG_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|See page B3-9 of the ARMv7 Architecture Reference Manual | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_FLAG_COARSE_NS = (1 shl 3);</code> | ||
+ | | NS (Non Secure) Attribute bit to enable the support of TrustZone | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_FLAG_SECTION_NS = (1 shl 19);</code> | ||
+ | | NS (Non Secure) Attribute bit to enable the support of TrustZone | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_FLAG_SUPERSECTION = (1 shl 18);</code> | ||
+ | | The descriptor is a 16MB Supersection instead of a 1MB Section (Section Only) | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_FLAG_NOT_GLOBAL = (1 shl 17);</code> | ||
+ | | The Not-Global (nG) bit, determines if the translation is marked as global (0), or process-specific (1) (Section Only). | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_FLAG_SHARED = (1 shl 16);</code> | ||
+ | | The Shared (S) bit, determines if the translation is for Non-Shared (0), or Shared (1) memory. This only applies to Normal memory regions. | ||
+ | Device memory can be Shared or Non-Shared as determined by the TEX bits and the C and B bits (Section Only). | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_FLAG_AP2 = (1 shl 15);</code> | ||
+ | | The access permissions extension (AP2) bit, provides an extra access permission bit (Section Only). | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_FLAG_IMP = (1 shl 9);</code> | ||
+ | | The meaning of this bit is IMPLEMENTATION DEFINED | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_FLAG_XN = (1 shl 4);</code> | ||
+ | | The Execute-Never (XN) bit, determines if the region is Executable (0) or Not-executable(1) (Section Only). | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_FLAG_C = (1 shl 3);</code> | ||
+ | | Cacheable (C) bit (Section Only) | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_FLAG_B = (1 shl 2);</code> | ||
+ | | Bufferable (B) bit (Section Only) | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''ARMv8 level one descriptor mask constants''' <code> ARMV8_L1D_*_MASK </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|See page B3-8 of the ARMv7 Architecture Reference Manual | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_COARSE_BASE_MASK = $FFFFFC00;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_SECTION_BASE_MASK = $FFF00000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_SUPERSECTION_BASE_MASK = $FF000000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_DOMAIN_MASK = ($F shl 5);</code> | ||
+ | | Security Domain of the Descriptor | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_TEX_MASK = (7 shl 12);</code> | ||
+ | | Type extension field bits (Section Only) | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_AP_MASK = (3 shl 10);</code> | ||
+ | | Access permission bits (Section Only) | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''ARMv8 level one descriptor TEX value constants''' <code> ARMV8_L1D_TEX* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|See page B3-32 of the ARMv7 Architecture Reference Manual (Section Only) | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_TEX0 = (0 shl 12);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_TEX1 = (1 shl 12); </code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_TEX2 = (2 shl 12);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_TEX4 = (4 shl 12);</code> | ||
+ | | Only used for Cacheable memory values | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_TEX5 = (5 shl 12);</code> | ||
+ | | Only used for Cacheable memory values | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_TEX6 = (6 shl 12);</code> | ||
+ | | Only used for Cacheable memory values | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_TEX7 = (7 shl 12);</code> | ||
+ | | Only used for Cacheable memory values | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''ARMv8 level one descriptor AP value constants''' <code> ARMV8_L1D_AP* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|See page B3-28 of the ARMv7 Architecture Reference Manual (Section Only) | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_AP0 = (0 shl 10);</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_AP1 = (1 shl 10);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_AP2 = (2 shl 10);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_AP3 = (3 shl 10);</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''ARMv8 level one descriptor permission value constants''' <code> ARMV8_L1D_ACCESS_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|See page B3-28 of the ARMv7 Architecture Reference Manual | ||
+ | |- | ||
+ | |colspan="2"|This is not the full set of permissions as Ultibo always runs in priviledged mode | ||
+ | |- | ||
+ | |colspan="2"|The XN bit can also be applied to control whether memory regions are executable or not | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_ACCESS_NONE = ARMV8_L1D_AP0;</code> | ||
+ | | No Access for both Privileged and Unprivileged code | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_ACCESS_READONLY = ARMV8_L1D_FLAG_AP2 or ARMV8_L1D_AP3;</code> | ||
+ | | Read-Only for both Privileged and Unprivileged code | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_ACCESS_READWRITE = ARMV8_L1D_AP3;</code> | ||
+ | | Read-Write for both Privileged and Unprivileged code | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''ARMv8 level one descriptor cache value constants''' <code> ARMV8_L1D_CACHE_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|See page B3-32 of the ARMv7 Architecture Reference Manual | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_CACHE_STRONGLY_ORDERED = ARMV8_L1D_TEX0;</code> | ||
+ | | Strongly Ordered. (Always Shared) | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_CACHE_SHARED_DEVICE = ARMV8_L1D_TEX0 or ARMV8_L1D_FLAG_B;</code> | ||
+ | | Device. (Always Shared) | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_CACHE_NORMAL_WRITE_THROUGH = ARMV8_L1D_TEX0 or ARMV8_L1D_FLAG_C;</code> | ||
+ | | Normal. Write Through (Shared if S bit set) | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_CACHE_NORMAL_WRITE_BACK = ARMV8_L1D_TEX0 or ARMV8_L1D_FLAG_C or ARMV8_L1D_FLAG_B;</code> | ||
+ | | Normal. Write Back (Shared if S bit set) | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_CACHE_NORMAL_NONCACHED = ARMV8_L1D_TEX1;</code> | ||
+ | | Normal. Noncacheable (Shared if S bit set) | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_CACHE_NORMAL_WRITE_ALLOCATE = ARMV8_L1D_TEX1 or ARMV8_L1D_FLAG_C or ARMV8_L1D_FLAG_B;</code> | ||
+ | | Normal. Write Allocate (Shared if S bit set) | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_CACHE_NONSHARED_DEVICE = ARMV8_L1D_TEX2;</code> | ||
+ | | Device. (Not Shared | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''ARMv8 level one descriptor cacheable memory value constants''' <code> ARMV8_L1D_CACHE_CACHEABLE_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Cacheable Memory | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_CACHE_CACHEABLE_OUTER_NONCACHED = ARMV8_L1D_TEX4;</code> | ||
+ | | Outer Normal Noncacheable (Shared if S bit set) | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_CACHE_CACHEABLE_OUTER_WRITE_ALLOCATE = ARMV8_L1D_TEX5;</code> | ||
+ | | Outer Normal Write Allocate (Shared if S bit set) | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_CACHE_CACHEABLE_OUTER_WRITE_THROUGH = ARMV8_L1D_TEX6;</code> | ||
+ | | Outer Normal Write Through (Shared if S bit set) | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_CACHE_CACHEABLE_OUTER_WRITE_BACK = ARMV8_L1D_TEX7;</code> | ||
+ | | Outer Normal Write Back (Shared if S bit set) | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_CACHE_CACHEABLE_INNER_NONCACHED = ARMV8_L1D_TEX4;</code> | ||
+ | | Inner Normal Noncacheable (Shared if S bit set) | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_CACHE_CACHEABLE_INNER_WRITE_ALLOCATE = ARMV8_L1D_TEX4 or ARMV8_L1D_FLAG_B;</code> | ||
+ | | Inner Normal Write Allocate (Shared if S bit set) | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_CACHE_CACHEABLE_INNER_WRITE_THROUGH = ARMV8_L1D_TEX4 or ARMV8_L1D_FLAG_C;</code> | ||
+ | | Inner Normal Write Through (Shared if S bit set) | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_CACHE_CACHEABLE_INNER_WRITE_BACK = ARMV8_L1D_TEX4 or ARMV8_L1D_FLAG_C or ARMV8_L1D_FLAG_B;</code> | ||
+ | | Inner Normal Write Back (Shared if S bit set) | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''ARMv8 level one descriptor cache TEX remap value constants''' <code> ARMV8_L1D_CACHE_REMAP_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|TEX Remap Enabled | ||
+ | |- | ||
+ | |colspan="2"|See page B3-34 of the ARMv7 Architecture Reference Manual (These values are from Linux) | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_CACHE_REMAP_STRONGLY_ORDERED = ARMV8_L1D_TEX0;</code> | ||
+ | | TR0 - Strongly Ordered | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_CACHE_REMAP_NORMAL_NONCACHED = ARMV8_L1D_TEX0 or ARMV8_L1D_FLAG_B;</code> | ||
+ | | TR1 - Normal Noncacheable (Inner Shared if S bit set) | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_CACHE_REMAP_NORMAL_WRITE_THROUGH = ARMV8_L1D_TEX0 or ARMV8_L1D_FLAG_C;</code> | ||
+ | | TR2 - Normal Write Through (Inner Shared if S bit set) | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_CACHE_REMAP_NORMAL_WRITE_BACK = ARMV8_L1D_TEX0 or ARMV8_L1D_FLAG_C or ARMV8_L1D_FLAG_B;</code> | ||
+ | | TR3 - Normal Write Back (Inner Shared if S bit set) | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_CACHE_REMAP_DEVICE = ARMV8_L1D_TEX1;</code> | ||
+ | | TR4 - Device | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_CACHE_REMAP_UNUSED = ARMV8_L1D_TEX1 or ARMV8_L1D_FLAG_B;</code> | ||
+ | | TR5 - Not currently used | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_CACHE_REMAP_RESERVED = ARMV8_L1D_TEX1 or ARMV8_L1D_FLAG_C;</code> | ||
+ | | TR6 - Implementation Defined | ||
+ | |- | ||
+ | | <code>ARMV8_L1D_CACHE_REMAP_NORMAL_WRITE_ALLOCATE = ARMV8_L1D_TEX1 or ARMV8_L1D_FLAG_C or ARMV8_L1D_FLAG_B;</code> | ||
+ | | TR7 - Normal Write Allocate (Inner Shared if S bit set) | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''ARMv8 level two descriptor type constants''' <code> ARMV8_L2D_TYPE_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|See page B3-10 of the ARMv7 Architecture Reference Manual | ||
+ | |- | ||
+ | |colspan="2"|Level Two Page Table contains 256 32bit (4 byte) entries for a total size of 1KB | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_TYPE_LARGE = 1;</code> | ||
+ | | The entry points to a 64KB Large page in memory | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_TYPE_SMALL = 2;</code> | ||
+ | | The entry points to a 4KB Extended small page in memory. Bit[0] of the entry is the XN (Execute Never) bit for the entry. | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''ARMv8 level two descriptor flag constants''' <code> ARMV8_L2D_FLAG_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|See page B3-10 of the ARMv7 Architecture Reference Manual | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_FLAG_LARGE_XN = (1 shl 15);</code> | ||
+ | | The Execute-Never (XN) bit, determines if the region is Executable (0) or Not-executable(1). | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_FLAG_SMALL_XN = (1 shl 0);</code> | ||
+ | | The Execute-Never (XN) bit, determines if the region is Executable (0) or Not-executable(1). | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_FLAG_NOT_GLOBAL = (1 shl 11);</code> | ||
+ | | The Not-Global (nG) bit, determines if the translation is marked as global (0), or process-specific (1). | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_FLAG_SHARED = (1 shl 10);</code> | ||
+ | | The Shared (S) bit, determines if the translation is for Non-Shared (0), or Shared (1) memory. This only applies to Normal memory regions. | ||
+ | Device memory can be Shared or Non-Shared as determined by the TEX bits and the C and B bits. | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_FLAG_AP2 = (1 shl 9);</code>. | ||
+ | | The access permissions extension (APX) bit, provides an extra access permission bit | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_FLAG_C = (1 shl 3);</code> | ||
+ | | Cacheable (C) bit | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_FLAG_B = (1 shl 2);</code> | ||
+ | | Bufferable (B) bit | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''ARMv8 level two descriptor mask constants''' <code> ARMV8_L2D_*_MASK </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|See page B3-10 of the ARMv7 Architecture Reference Manual | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_LARGE_BASE_MASK = $FFFF0000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_SMALL_BASE_MASK = $FFFFF000;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_LARGE_TEX_MASK = (7 shl 12);</code> | ||
+ | | Type extension field bits | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_SMALL_TEX_MASK = (7 shl 6);</code> | ||
+ | | Type extension field bits | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_AP_MASK = (3 shl 4);</code> | ||
+ | | Access permission bits | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''ARMv8 level two descriptor large TEX value constants''' <code> ARMV8_L2D_LARGE_TEX* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|See page B3-32 of the ARMv7 Architecture Reference Manual | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_LARGE_TEX0 = (0 shl 12);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_LARGE_TEX1 = (1 shl 12);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_LARGE_TEX2 = (2 shl 12);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_LARGE_TEX4 = (4 shl 12);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_LARGE_TEX5 = (5 shl 12);</code> | ||
+ | | Only used for Cacheable memory values | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_LARGE_TEX6 = (6 shl 12);</code> | ||
+ | | Only used for Cacheable memory values | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_LARGE_TEX7 = (7 shl 12);</code> | ||
+ | | Only used for Cacheable memory values | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''ARMv8 level two descriptor small TEX value constants''' <code> ARMV8_L2D_SMALL_TEX* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|See page B3-32 of the ARMv7 Architecture Reference Manual | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_SMALL_TEX0 = (0 shl 6);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_SMALL_TEX1 = (1 shl 6);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_SMALL_TEX2 = (2 shl 6);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_SMALL_TEX4 = (4 shl 6);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_SMALL_TEX5 = (5 shl 6);</code> | ||
+ | | Only used for Cacheable memory values | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_SMALL_TEX6 = (6 shl 6);</code> | ||
+ | | Only used for Cacheable memory values | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_SMALL_TEX7 = (7 shl 6);</code> | ||
+ | | Only used for Cacheable memory values | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''ARMv8 level two descriptor AP value constants''' <code> ARMV8_L2D_AP* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|See page B3-28 of the ARMv7 Architecture Reference Manual | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_AP0 = (0 shl 4);</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_AP1 = (1 shl 4); </code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_AP2 = (2 shl 4); </code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_AP3 = (3 shl 4);</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''ARMv8 level two descriptor permission value constants''' <code> ARMV8_L2D_ACCESS_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|See page B3-28 of the ARMv7 Architecture Reference Manual | ||
+ | |- | ||
+ | |colspan="2"|This is not the full set of permissions as Ultibo always runs in priviledged mode | ||
+ | |- | ||
+ | |colspan="2"|The XN bit can also be applied to control whether memory regions are executable or not | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_ACCESS_NONE = ARMV8_L2D_AP0;</code> | ||
+ | | No Access for both Privileged and Unprivileged code | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_ACCESS_READONLY = ARMV8_L2D_FLAG_AP2 or ARMV8_L2D_AP3;</code> | ||
+ | | Read-Only for both Privileged and Unprivileged code | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_ACCESS_READWRITE = ARMV8_L2D_AP3;</code> | ||
+ | | Read-Write for both Privileged and Unprivileged code | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''ARMv8 level two descriptor large cache value constants''' <code> ARMV8_L2D_LARGE_CACHE_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|See page B3-32 of the ARMv7 Architecture Reference Manual | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_LARGE_CACHE_STRONGLY_ORDERED = ARMV8_L2D_LARGE_TEX0;</code> | ||
+ | | Strongly Ordered. (Always Shared) | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_LARGE_CACHE_SHARED_DEVICE = ARMV8_L2D_LARGE_TEX0 or ARMV8_L2D_FLAG_B;</code> | ||
+ | | Device. (Always Shared) | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_LARGE_CACHE_NORMAL_WRITE_THROUGH = ARMV8_L2D_LARGE_TEX0 or ARMV8_L2D_FLAG_C;</code> | ||
+ | | Normal. Write Through (Shared if S bit set) | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_LARGE_CACHE_NORMAL_WRITE_BACK = ARMV8_L2D_LARGE_TEX0 or ARMV8_L2D_FLAG_C or ARMV8_L2D_FLAG_B;</code> | ||
+ | | Normal. Write Back (Shared if S bit set) | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_LARGE_CACHE_NORMAL_NONCACHED = ARMV8_L2D_LARGE_TEX1;</code> | ||
+ | | Normal. Noncacheable (Shared if S bit set) | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_LARGE_CACHE_NORMAL_WRITE_ALLOCATE = ARMV8_L2D_LARGE_TEX1 or ARMV8_L2D_FLAG_C or ARMV8_L2D_FLAG_B;</code> | ||
+ | | Normal. Write Allocate (Shared if S bit set) | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_LARGE_CACHE_NONSHARED_DEVICE = ARMV8_L2D_LARGE_TEX2;</code> | ||
+ | | Device. (Not Shared) | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''ARMv8 level two descriptor large cacheable memory value constants''' <code> ARMV8_L2D_LARGE_CACHE_CACHEABLE_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Cacheable Memory | ||
+ | |- | ||
+ | |colspan="2"|See page B3-32 of the ARMv7 Architecture Reference Manual | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_LARGE_CACHE_CACHEABLE_OUTER_NONCACHED = ARMV8_L2D_LARGE_TEX4;</code> | ||
+ | | Outer Normal Noncacheable (Shared if S bit set) | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_LARGE_CACHE_CACHEABLE_OUTER_WRITE_ALLOCATE = ARMV8_L2D_LARGE_TEX5;</code> | ||
+ | | Outer Normal Write Allocate (Shared if S bit set) | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_LARGE_CACHE_CACHEABLE_OUTER_WRITE_THROUGH = ARMV8_L2D_LARGE_TEX6;</code> | ||
+ | | Outer Normal Write Through (Shared if S bit set) | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_LARGE_CACHE_CACHEABLE_OUTER_WRITE_BACK = ARMV8_L2D_LARGE_TEX7;</code> | ||
+ | | Outer Normal Write Back (Shared if S bit set) | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_LARGE_CACHE_CACHEABLE_INNER_NONCACHED = ARMV8_L2D_LARGE_TEX4;</code> | ||
+ | | Inner Normal Noncacheable (Shared if S bit set) | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_LARGE_CACHE_CACHEABLE_INNER_WRITE_ALLOCATE = ARMV8_L2D_LARGE_TEX4 or ARMV8_L2D_FLAG_B;</code> | ||
+ | | Inner Normal Write Allocate (Shared if S bit set) | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_LARGE_CACHE_CACHEABLE_INNER_WRITE_THROUGH = ARMV8_L2D_LARGE_TEX4 or ARMV8_L2D_FLAG_C;</code> | ||
+ | | Inner Normal Write Through (Shared if S bit set) | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_LARGE_CACHE_CACHEABLE_INNER_WRITE_BACK = ARMV8_L2D_LARGE_TEX4 or ARMV8_L2D_FLAG_C or ARMV8_L2D_FLAG_B;</code> | ||
+ | | Inner Normal Write Back (Shared if S bit set) | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''ARMv8 level two descriptor large cache TEX remap value constants''' <code> ARMV8_L2D_LARGE_CACHE_REMAP_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|TEX Remap Enabled | ||
+ | |- | ||
+ | |colspan="2"|See page B3-32 of the ARMv7 Architecture Reference Manual (These values are from Linux) | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_LARGE_CACHE_REMAP_STRONGLY_ORDERED = ARMV8_L2D_LARGE_TEX0;</code> | ||
+ | | TR0 - Strongly Ordered | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_LARGE_CACHE_REMAP_NORMAL_NONCACHED = ARMV8_L2D_LARGE_TEX0 or ARMV8_L2D_FLAG_B;</code> | ||
+ | | TR1 - Normal Noncacheable (Inner Shared if S bit set) | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_LARGE_CACHE_REMAP_NORMAL_WRITE_THROUGH = ARMV8_L2D_LARGE_TEX0 or ARMV8_L2D_FLAG_C;</code> | ||
+ | | TR2 - Normal Write Through (Inner Shared if S bit set) | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_LARGE_CACHE_REMAP_NORMAL_WRITE_BACK = ARMV8_L2D_LARGE_TEX0 or ARMV8_L2D_FLAG_C or ARMV8_L2D_FLAG_B;</code> | ||
+ | | TR3 - Normal Write Back (Inner Shared if S bit set) | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_LARGE_CACHE_REMAP_DEVICE = ARMV8_L2D_LARGE_TEX1;</code> | ||
+ | | TR4 - Device | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_LARGE_CACHE_REMAP_UNUSED = ARMV8_L2D_LARGE_TEX1 or ARMV8_L2D_FLAG_B;</code> | ||
+ | | TR5 - Not currently used | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_LARGE_CACHE_REMAP_RESERVED = ARMV8_L2D_LARGE_TEX1 or ARMV8_L2D_FLAG_C;</code> | ||
+ | | TR6 - Implementation Defined | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_LARGE_CACHE_REMAP_NORMAL_WRITE_ALLOCATE = ARMV8_L2D_LARGE_TEX1 or ARMV8_L2D_FLAG_C or ARMV8_L2D_FLAG_B;</code> | ||
+ | | TR7 - Normal Write Allocate (Inner Shared if S bit set) | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''ARMv8 level two descriptor small cache value constants''' <code> ARMV8_L2D_SMALL_CACHE_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|See page B3-32 of the ARMv7 Architecture Reference Manual | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_SMALL_CACHE_STRONGLY_ORDERED = ARMV8_L2D_SMALL_TEX0;</code> | ||
+ | | Strongly Ordered. (Always Shared) | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_SMALL_CACHE_SHARED_DEVICE = ARMV8_L2D_SMALL_TEX0 or ARMV8_L2D_FLAG_B;</code> | ||
+ | | Device. (Always Shared) | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_SMALL_CACHE_NORMAL_WRITE_THROUGH = ARMV8_L2D_SMALL_TEX0 or ARMV8_L2D_FLAG_C;</code> | ||
+ | | Normal. Write Through (Shared if S bit set) | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_SMALL_CACHE_NORMAL_WRITE_BACK = ARMV8_L2D_SMALL_TEX0 or ARMV8_L2D_FLAG_C or ARMV8_L2D_FLAG_B;</code> | ||
+ | | Normal. Write Back (Shared if S bit set) | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_SMALL_CACHE_NORMAL_NONCACHED = ARMV8_L2D_SMALL_TEX1;</code> | ||
+ | | Normal. Noncacheable (Shared if S bit set) | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_SMALL_CACHE_NORMAL_WRITE_ALLOCATE = ARMV8_L2D_SMALL_TEX1 or ARMV8_L2D_FLAG_C or ARMV8_L2D_FLAG_B;</code> | ||
+ | | Normal. Write Allocate (Shared if S bit set) | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_SMALL_CACHE_NONSHARED_DEVICE = ARMV8_L2D_SMALL_TEX2;</code> | ||
+ | | Device. (Not Shared) | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''ARMv8 level two descriptor small cacheable memory value constants ''' <code> ARMV8_L2D_SMALL_CACHE_CACHEABLE_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Cacheable Memory | ||
+ | |- | ||
+ | |colspan="2"|See page B3-32 of the ARMv7 Architecture Reference Manual | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_SMALL_CACHE_CACHEABLE_OUTER_NONCACHED = ARMV8_L2D_SMALL_TEX4;</code> | ||
+ | | Outer Normal Noncacheable (Shared if S bit set) | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_SMALL_CACHE_CACHEABLE_OUTER_WRITE_ALLOCATE = ARMV8_L2D_SMALL_TEX5;</code> | ||
+ | | Outer Normal Write Allocate (Shared if S bit set) | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_SMALL_CACHE_CACHEABLE_OUTER_WRITE_THROUGH = ARMV8_L2D_SMALL_TEX6;</code> | ||
+ | | Outer Normal Write Through (Shared if S bit set) | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_SMALL_CACHE_CACHEABLE_OUTER_WRITE_BACK = ARMV8_L2D_SMALL_TEX7;</code> | ||
+ | | Outer Normal Write Back (Shared if S bit set) | ||
+ | |- | ||
+ | | <code>|colspan="2"| </code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_SMALL_CACHE_CACHEABLE_INNER_NONCACHED = ARMV8_L2D_SMALL_TEX4;</code> | ||
+ | | Inner Normal Noncacheable (Shared if S bit set) | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_SMALL_CACHE_CACHEABLE_INNER_WRITE_ALLOCATE = ARMV8_L2D_SMALL_TEX4 or ARMV8_L2D_FLAG_B;</code> | ||
+ | | Inner Normal Write Allocate (Shared if S bit set) | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_SMALL_CACHE_CACHEABLE_INNER_WRITE_THROUGH = ARMV8_L2D_SMALL_TEX4 or ARMV8_L2D_FLAG_C;</code> | ||
+ | | Inner Normal Write Through (Shared if S bit set) | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_SMALL_CACHE_CACHEABLE_INNER_WRITE_BACK = ARMV8_L2D_SMALL_TEX4 or ARMV8_L2D_FLAG_C or ARMV8_L2D_FLAG_B;</code> | ||
+ | | Inner Normal Write Back (Shared if S bit set) | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''ARMv8 level two descriptor small cache TEX remap value constants''' <code> ARMV8_L2D_SMALL_CACHE_REMAP_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|TEX Remap Enabled | ||
+ | |- | ||
+ | |colspan="2"|See page B3-32 of the ARMv7 Architecture Reference Manual (These values are from Linux) | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_SMALL_CACHE_REMAP_STRONGLY_ORDERED = ARMV8_L2D_SMALL_TEX0;</code> | ||
+ | | TR0 - Strongly Ordered | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_SMALL_CACHE_REMAP_NORMAL_NONCACHED = ARMV8_L2D_SMALL_TEX0 or ARMV8_L2D_FLAG_B;</code> | ||
+ | | TR1 - Normal Noncacheable (Inner Shared if S bit set) | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_SMALL_CACHE_REMAP_NORMAL_WRITE_THROUGH = ARMV8_L2D_SMALL_TEX0 or ARMV8_L2D_FLAG_C;</code> | ||
+ | | TR2 - Normal Write Through (Inner Shared if S bit set) | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_SMALL_CACHE_REMAP_NORMAL_WRITE_BACK = ARMV8_L2D_SMALL_TEX0 or ARMV8_L2D_FLAG_C or ARMV8_L2D_FLAG_B;</code> | ||
+ | | TR3 - Normal Write Back (Inner Shared if S bit set) | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_SMALL_CACHE_REMAP_DEVICE = ARMV8_L2D_SMALL_TEX1;</code> | ||
+ | | TR4 - Device | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_SMALL_CACHE_REMAP_UNUSED = ARMV8_L2D_SMALL_TEX1 or ARMV8_L2D_FLAG_B;</code> | ||
+ | | TR5 - Not currently used | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_SMALL_CACHE_REMAP_RESERVED = ARMV8_L2D_SMALL_TEX1 or ARMV8_L2D_FLAG_C;</code> | ||
+ | | TR6 - Implementation Defined | ||
+ | |- | ||
+ | | <code>ARMV8_L2D_SMALL_CACHE_REMAP_NORMAL_WRITE_ALLOCATE = ARMV8_L2D_SMALL_TEX1 or ARMV8_L2D_FLAG_C or ARMV8_L2D_FLAG_B;</code> | ||
+ | | TR7 - Normal Write Allocate (Inner Shared if S bit set) | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''ARMv8 specific constants''' <code> ARMV8_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>ARMV8_CONTEXT_LENGTH = 50;</code> | ||
+ | | Length of ARM context switch record in 32 bit words (includes fpexc, fpscr, d0-d15, r0-r12, lr, pc, cpsr) | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
=== Type definitions === | === Type definitions === |
Revision as of 00:08, 16 December 2016
Return to Unit Reference
Contents
[hide]Description
The ARMv8 does not support the SWP/SWPB instructions for syncronisation (Lock/Mutex/Semaphore etc) unless enabled.
On ARMv8 Unaligned memory access is always enabled.
On ARMv8 the Extended Page Table format is always enabled.
For usage of barriers (DMB/DSB/ISB) after cache maintenance operations see: ARM.Reference_Manual_1.pdf - Appendix G Barrier Litmus Tests
Note: This unit currently only supports ARMv8 in Aarch32 mode, support for Aarch64 mode will be added in future.
Constants
ARMV8_PAGE_TABLES_*
ARMV8_CP15_C0_MAINID_*
ARMV8_CP15_C0_MPID_*
ARMV8_CP15_C0_CCSID_*
ARMV8_CP15_C0_CLID_*
ARMV8_CP15_C0_CSSEL_*
ARMV8_CP15_C1_*
ARMV8_CP15_C1_AUX_*
ARMV8_CP15_C1_CP*
ARMV8_CP15_C1_SCR_*
ARMV8_CP15_C2_TTBR_*
ARMV8_CP15_C3_DOMAIN*
ARMV8_CP15_C10_PRRR_*
ARMV8_CP15_C10_NMRR_*
ARMV8_CP15_C14_CNT_CTL_*
ARMV8_CP15_C14_*
ARMV8_FPEXC_*
ARMV8_L1D_TYPE_*
ARMV8_L1D_FLAG_*
ARMV8_L1D_*_MASK
ARMV8_L1D_TEX*
ARMV8_L1D_AP*
ARMV8_L1D_ACCESS_*
ARMV8_L1D_CACHE_*
ARMV8_L1D_CACHE_CACHEABLE_*
ARMV8_L1D_CACHE_REMAP_*
ARMV8_L2D_TYPE_*
ARMV8_L2D_FLAG_*
ARMV8_L2D_*_MASK
ARMV8_L2D_LARGE_TEX*
ARMV8_L2D_SMALL_TEX*
ARMV8_L2D_AP*
ARMV8_L2D_ACCESS_*
ARMV8_L2D_LARGE_CACHE_*
ARMV8_L2D_LARGE_CACHE_CACHEABLE_*
ARMV8_L2D_LARGE_CACHE_REMAP_*
ARMV8_L2D_SMALL_CACHE_*
ARMV8_L2D_SMALL_CACHE_CACHEABLE_*
ARMV8_L2D_SMALL_CACHE_REMAP_*
ARMV8_*
Type definitions
To be documented
Public variables
To be documented
Function declarations
Initialization functions
ARMv8 platform functions
procedure ARMv8TimerInit(Frequency:LongWord); assembler; nostackframe;
procedure ARMv8PageTableInit;
procedure ARMv8SystemCall(Number:LongWord; Param1,Param2,Param3:PtrUInt); assembler; nostackframe;
function ARMv8CPUGetCurrent:LongWord; assembler; nostackframe;
function ARMv8CPUGetMainID:LongWord; assembler; nostackframe;
function ARMv8CPUGetMultiprocessorID:LongWord; assembler; nostackframe;
function ARMv8L1CacheGetType:LongWord; assembler; nostackframe;
function ARMv8L1DataCacheGetSize:LongWord; assembler; nostackframe;
function ARMv8L1DataCacheGetLineSize:LongWord; assembler; nostackframe;
function ARMv8L1InstructionCacheGetSize:LongWord; assembler; nostackframe;
function ARMv8L1InstructionCacheGetLineSize:LongWord; assembler; nostackframe;
function ARMv8L2CacheGetType:LongWord; assembler; nostackframe;
function ARMv8L2CacheGetSize:LongWord; assembler; nostackframe;
function ARMv8L2CacheGetLineSize:LongWord; assembler; nostackframe;
procedure ARMv8Halt; assembler; nostackframe; public name'_haltproc';
procedure ARMv8Pause; assembler; nostackframe;
procedure ARMv8WaitForInterrupt; assembler; nostackframe;
procedure ARMv8DataMemoryBarrier; assembler; nostackframe;
procedure ARMv8DataSynchronizationBarrier; assembler; nostackframe;
procedure ARMv8InstructionMemoryBarrier; assembler; nostackframe;
procedure ARMv8InvalidateTLB; assembler; nostackframe;
procedure ARMv8InvalidateDataTLB; assembler; nostackframe;
procedure ARMv8InvalidateInstructionTLB; assembler; nostackframe;
procedure ARMv8InvalidateCache; assembler; nostackframe;
procedure ARMv8CleanDataCache; assembler; nostackframe;
procedure ARMv8InvalidateDataCache; assembler; nostackframe;
procedure ARMv8InvalidateL1DataCache; assembler; nostackframe;
procedure ARMv8CleanAndInvalidateDataCache; assembler; nostackframe;
procedure ARMv8InvalidateInstructionCache; assembler; nostackframe;
procedure ARMv8CleanDataCacheRange(Address,Size:LongWord); assembler; nostackframe;
procedure ARMv8InvalidateDataCacheRange(Address,Size:LongWord); assembler; nostackframe;
procedure ARMv8CleanAndInvalidateDataCacheRange(Address,Size:LongWord); assembler; nostackframe;
procedure ARMv8InvalidateInstructionCacheRange(Address,Size:LongWord); assembler; nostackframe;
procedure ARMv8CleanDataCacheSetWay(SetWay:LongWord); assembler; nostackframe;
procedure ARMv8InvalidateDataCacheSetWay(SetWay:LongWord); assembler; nostackframe;
procedure ARMv8CleanAndInvalidateDataCacheSetWay(SetWay:LongWord); assembler; nostackframe;
procedure ARMv8FlushPrefetchBuffer; assembler; nostackframe;
procedure ARMv8FlushBranchTargetCache; assembler; nostackframe;
procedure ARMv8ContextSwitch(OldStack,NewStack:Pointer; NewThread:TThreadHandle); assembler; nostackframe;
procedure ARMv8ContextSwitchIRQ(OldStack,NewStack:Pointer; NewThread:TThreadHandle); assembler; nostackframe;
procedure ARMv8ContextSwitchFIQ(OldStack,NewStack:Pointer; NewThread:TThreadHandle); assembler; nostackframe;
procedure ARMv8ContextSwitchSWI(OldStack,NewStack:Pointer; NewThread:TThreadHandle); assembler; nostackframe;
function ARMv8InterlockedOr(var Target:LongInt; Value:LongInt):LongInt; assembler; nostackframe;
function ARMv8InterlockedXor(var Target:LongInt; Value:LongInt):LongInt; assembler; nostackframe;
function ARMv8InterlockedAnd(var Target:LongInt; Value:LongInt):LongInt; assembler; nostackframe;
function ARMv8InterlockedDecrement(var Target:LongInt):LongInt; assembler; nostackframe;
function ARMv8InterlockedIncrement(var Target:LongInt):LongInt; assembler; nostackframe;
function ARMv8InterlockedExchange(var Target:LongInt; Source:LongInt):LongInt; assembler; nostackframe;
function ARMv8InterlockedAddExchange(var Target:LongInt; Source:LongInt):LongInt; assembler; nostackframe;
function ARMv8InterlockedCompareExchange(var Target:LongInt; Source,Compare:LongInt):LongInt; assembler; nostackframe;
function ARMv8PageTableGetEntry(Address:PtrUInt):TPageTableEntry;
function ARMv8PageTableSetEntry(const Entry:TPageTableEntry):LongWord;
function ARMv8VectorTableGetEntry(Number:LongWord):PtrUInt;
function ARMv8VectorTableSetEntry(Number:LongWord; Address:PtrUInt):LongWord;
function ARMv8FirstBitSet(Value:LongWord):LongWord; assembler; nostackframe;
function ARMv8CountLeadingZeros(Value:LongWord):LongWord; assembler; nostackframe;
ARMv8 thread functions
function ARMv8SpinLock(Spin:PSpinEntry):LongWord; assembler; nostackframe;
function ARMv8SpinUnlock(Spin:PSpinEntry):LongWord; assembler; nostackframe;
function ARMv8SpinLockIRQ(Spin:PSpinEntry):LongWord; assembler; nostackframe;
function ARMv8SpinUnlockIRQ(Spin:PSpinEntry):LongWord; assembler; nostackframe;
function ARMv8SpinLockFIQ(Spin:PSpinEntry):LongWord; assembler; nostackframe;
function ARMv8SpinUnlockFIQ(Spin:PSpinEntry):LongWord; assembler; nostackframe;
function ARMv8SpinLockIRQFIQ(Spin:PSpinEntry):LongWord; assembler; nostackframe;
function ARMv8SpinUnlockIRQFIQ(Spin:PSpinEntry):LongWord; assembler; nostackframe;
function ARMv8SpinExchangeIRQ(Spin1,Spin2:PSpinEntry):LongWord;
function ARMv8SpinExchangeFIQ(Spin1,Spin2:PSpinEntry):LongWord;
function ARMv8MutexLock(Mutex:PMutexEntry):LongWord; assembler; nostackframe;
function ARMv8MutexUnlock(Mutex:PMutexEntry):LongWord; assembler; nostackframe;
function ARMv8MutexTryLock(Mutex:PMutexEntry):LongWord; assembler; nostackframe;
function ARMv8ThreadGetCurrent:TThreadHandle; assembler; nostackframe;
function ARMv8ThreadSetCurrent(Thread:TThreadHandle):LongWord; assembler; nostackframe;
function ARMv8ThreadSetupStack(StackBase:Pointer; StartProc:TThreadStart; ReturnProc:TThreadEnd; Parameter:Pointer):Pointer;
ARMv8 IRQ functions
function ARMv8DispatchIRQ(CPUID:LongWord; Thread:TThreadHandle):TThreadHandle; inline;
ARMv8 FIQ functions
function ARMv8DispatchFIQ(CPUID:LongWord; Thread:TThreadHandle):TThreadHandle; inline;
ARMv8 SWI functions
function ARMv8DispatchSWI(CPUID:LongWord; Thread:TThreadHandle; Request:PSystemCallRequest):TThreadHandle; inline;
ARMv8 interrupt functions
procedure ARMv8UndefinedInstructionHandler; assembler; nostackframe;
procedure ARMv8SoftwareInterruptHandler; assembler; nostackframe;
procedure ARMv8PrefetchAbortHandler; assembler; nostackframe;
procedure ARMv8DataAbortHandler; assembler; nostackframe;
procedure ARMv8IRQHandler; assembler; nostackframe;
procedure ARMv8FIQHandler; assembler; nostackframe;
ARMv8 helper functions
function ARMv8GetTimerState(Timer:LongWord):LongWord; assembler; nostackframe;
procedure ARMv8SetTimerState(Timer,State:LongWord); assembler; nostackframe;
function ARMv8GetTimerCount(Timer:LongWord):Int64; assembler; nostackframe;
function ARMv8GetTimerValue(Timer:LongWord):LongWord; assembler; nostackframe;
procedure ARMV8SetTimerValue(Timer,Value:LongWord); assembler; nostackframe;
function ARMv8GetTimerCompare(Timer:LongWord):Int64; assembler; nostackframe;
procedure ARMV8SetTimerCompare(Timer,High,Low:LongWord); assembler; nostackframe;
function ARMv8GetTimerFrequency:LongWord; assembler; nostackframe;
function ARMv8GetPageTableCoarse(Address:PtrUInt):LongWord;
function ARMv8SetPageTableCoarse(Address,CoarseAddress:PtrUInt; Flags:Word):Boolean;
function ARMv8GetPageTableLarge(Address:PtrUInt):LongWord;
function ARMv8SetPageTableLarge(Address,PhysicalAddress:PtrUInt; Flags:Word):Boolean;
function ARMv8GetPageTableSmall(Address:PtrUInt):LongWord;
function ARMv8SetPageTableSmall(Address,PhysicalAddress:PtrUInt; Flags:Word):Boolean;
function ARMv8GetPageTableSection(Address:PtrUInt):LongWord;
function ARMv8SetPageTableSection(Address,PhysicalAddress:PtrUInt; Flags:LongWord):Boolean;
function ARMv8SetPageTableSupersection(Address,PhysicalAddress:PtrUInt; Flags:LongWord):Boolean;
Return to Unit Reference