Difference between revisions of "Unit PlatformARMv8"

From Ultibo.org
Jump to: navigation, search
Line 18: Line 18:
 
----
 
----
  
''To be documented''
+
 
 +
<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%;"|&nbsp;
 +
|-
 +
|}
 +
</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%;"|&nbsp;
 +
|-
 +
| <code>ARMV8_CP15_C0_MAINID_VARIANT_MASK = ($F shl 20);</code>
 +
| &nbsp;
 +
|-
 +
| <code>ARMV8_CP15_C0_MAINID_ARCHITECTURE_MASK = ($F shl 16);</code>
 +
| &nbsp;
 +
|-
 +
| <code>ARMV8_CP15_C0_MAINID_PARTNUMBER_MASK = ($FFF shl 4);</code>
 +
| &nbsp;
 +
|-
 +
| <code>ARMV8_CP15_C0_MAINID_REVISION_MASK = ($F shl 0);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>ARMV8_CP15_C0_MAINID_IMPLEMENTOR_ARM = ($41 shl 24);</code>
 +
| &nbsp;
 +
|-
 +
| <code>ARMV8_CP15_C0_MAINID_IMPLEMENTOR_DEC = ($44 shl 24);</code>
 +
| &nbsp;
 +
|-
 +
| <code>ARMV8_CP15_C0_MAINID_IMPLEMENTOR_FREESCALE = ($4D shl 24);</code>
 +
| &nbsp;
 +
|-
 +
| <code>ARMV8_CP15_C0_MAINID_IMPLEMENTOR_QUALCOMM = ($51 shl 24);</code>
 +
| &nbsp;
 +
|-
 +
| <code>ARMV8_CP15_C0_MAINID_IMPLEMENTOR_MARVELL = ($56 shl 24);</code>
 +
| &nbsp;
 +
|-
 +
| <code>ARMV8_CP15_C0_MAINID_IMPLEMENTOR_INTEL = ($69 shl 24);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>ARMV8_CP15_C0_MAINID_ARCHITECTURE_ARMV4 = ($1 shl 16);</code>
 +
| &nbsp;
 +
|-
 +
| <code>ARMV8_CP15_C0_MAINID_ARCHITECTURE_ARMV4T = ($2 shl 16);</code>
 +
| &nbsp;
 +
|-
 +
| <code>ARMV8_CP15_C0_MAINID_ARCHITECTURE_ARMV5 = ($3 shl 16);</code>
 +
| &nbsp;
 +
|-
 +
| <code>ARMV8_CP15_C0_MAINID_ARCHITECTURE_ARMV5T = ($4 shl 16);</code>
 +
| &nbsp;
 +
|-
 +
| <code>ARMV8_CP15_C0_MAINID_ARCHITECTURE_ARMV5TE = ($5 shl 16);</code>
 +
| &nbsp;
 +
|-
 +
| <code>ARMV8_CP15_C0_MAINID_ARCHITECTURE_ARMV5TEJ = ($6 shl 16);</code>
 +
| &nbsp;
 +
|-
 +
| <code>ARMV8_CP15_C0_MAINID_ARCHITECTURE_ARMV6 = ($7 shl 16);</code>
 +
| &nbsp;
 +
|-
 +
| <code>ARMV8_CP15_C0_MAINID_ARCHITECTURE_CPUID = ($F shl 16);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>ARMV8_CP15_C0_MAINID_PARTNUMBER_CORTEX_A53 = ($D03 shl 4);</code>
 +
| &nbsp;
 +
|-
 +
| <code>ARMV8_CP15_C0_MAINID_PARTNUMBER_CORTEX_A57 = ($D07 shl 4);</code>
 +
| &nbsp;
 +
|-
 +
| <code>ARMV8_CP15_C0_MAINID_PARTNUMBER_CORTEX_A72 = ($D08 shl 4);</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</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%;"|&nbsp;
 +
|-
 +
| <code>ARMV8_CP15_C0_MPID_U_UNIPROCESSOR = (1 shl 30);</code>
 +
| &nbsp;
 +
|-
 +
| <code>ARMV8_CP15_C0_MPID_U_MULTIPROCESSOR = (0 shl 30);</code>
 +
| &nbsp;
 +
|-
 +
| <code>ARMV8_CP15_C0_MPID_CLUSTERID_MASK = ($F shl 8);</code>
 +
| &nbsp;
 +
|-
 +
| <code>ARMV8_CP15_C0_MPID_CPUID_MASK = (3 shl 0);</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</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"|&nbsp;
 +
|-
 +
| <code>ARMV8_CP15_C0_CCSID_NUMSETS_SHIFT = 13;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ARMV8_CP15_C0_CCSID_NUMWAYS_SHIFT = 3;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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>
 +
| &nbsp;
 +
|-
 +
| <code>ARMV8_CP15_C0_CSSEL_LEVEL3 = (2 shl 1);</code>
 +
| &nbsp;
 +
|-
 +
| <code>ARMV8_CP15_C0_CSSEL_LEVEL4 = (3 shl 1);</code>
 +
| &nbsp;
 +
|-
 +
| <code>ARMV8_CP15_C0_CSSEL_LEVEL5 = (4 shl 1);</code>
 +
| &nbsp;
 +
|-
 +
| <code>ARMV8_CP15_C0_CSSEL_LEVEL6 = (5 shl 1);</code>
 +
| &nbsp;
 +
|-
 +
| <code>ARMV8_CP15_C0_CSSEL_LEVEL7 = (6 shl 1);</code>
 +
| &nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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%;"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <code>or ARMV8_CP15_C10_PRRR_TR0_STRONGLY_ORDERED</code>
 +
| TR0 is Strongly Ordered
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <code>or ARMV8_CP15_C10_PRRR_TR4_DEVICE</code>
 +
| TR4 is Device
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp; 
 +
|-
 +
| <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"|&nbsp; 
 +
|-
 +
| <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"|&nbsp; 
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <code>ARMV8_L1D_COARSE_BASE_MASK = $FFFFFC00;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ARMV8_L1D_SECTION_BASE_MASK = $FFF00000;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ARMV8_L1D_SUPERSECTION_BASE_MASK = $FF000000;</code>
 +
| &nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <code>ARMV8_L1D_TEX0 = (0 shl 12);</code>
 +
| &nbsp;
 +
|-
 +
| <code>ARMV8_L1D_TEX1 = (1 shl 12); </code>
 +
| &nbsp;
 +
|-
 +
| <code>ARMV8_L1D_TEX2 = (2 shl 12);</code>
 +
| &nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <code>ARMV8_L1D_AP0 = (0 shl 10);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>ARMV8_L1D_AP1 = (1 shl 10);</code>
 +
| &nbsp;
 +
|-
 +
| <code>ARMV8_L1D_AP2 = (2 shl 10);</code>
 +
| &nbsp;
 +
|-
 +
| <code>ARMV8_L1D_AP3 = (3 shl 10);</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <code>ARMV8_L2D_LARGE_BASE_MASK = $FFFF0000;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ARMV8_L2D_SMALL_BASE_MASK = $FFFFF000;</code>
 +
| &nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <code>ARMV8_L2D_LARGE_TEX0 = (0 shl 12);</code>
 +
| &nbsp;
 +
|-
 +
| <code>ARMV8_L2D_LARGE_TEX1 = (1 shl 12);</code>
 +
| &nbsp;
 +
|-
 +
| <code>ARMV8_L2D_LARGE_TEX2 = (2 shl 12);</code>
 +
| &nbsp;
 +
|-
 +
| <code>ARMV8_L2D_LARGE_TEX4 = (4 shl 12);</code>
 +
| &nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <code>ARMV8_L2D_SMALL_TEX0 = (0 shl 6);</code>
 +
| &nbsp;
 +
|-
 +
| <code>ARMV8_L2D_SMALL_TEX1 = (1 shl 6);</code>
 +
| &nbsp;
 +
|-
 +
| <code>ARMV8_L2D_SMALL_TEX2 = (2 shl 6);</code>
 +
| &nbsp;
 +
|-
 +
| <code>ARMV8_L2D_SMALL_TEX4 = (4 shl 6);</code>
 +
| &nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <code>ARMV8_L2D_AP0 = (0 shl 4);</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>ARMV8_L2D_AP1 = (1 shl 4); </code>
 +
| &nbsp;
 +
|-
 +
| <code>ARMV8_L2D_AP2 = (2 shl 4); </code>
 +
| &nbsp;
 +
|-
 +
| <code>ARMV8_L2D_AP3 = (3 shl 4);</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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"|&nbsp;</code>
 +
| &nbsp;
 +
|-
 +
| <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"|&nbsp;
 +
|-
 +
| <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


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



[Expand]
ARMv8 page table shift constants ARMV8_PAGE_TABLES_*


[Expand]
ARMv8 CP15 C0 main ID constants ARMV8_CP15_C0_MAINID_*


[Expand]
ARMv8 CP15 C0 multiprocessor affinity constants ARMV8_CP15_C0_MPID_*


[Expand]
ARMv8 CP15 C0 cache size ID constants ARMV8_CP15_C0_CCSID_*


[Expand]
ARMv8 CP15 C0 cache level ID constants ARMV8_CP15_C0_CLID_*


[Expand]
ARMv8 CP15 C0 cache size selection constants ARMV8_CP15_C0_CSSEL_*


[Expand]
ARMv8 CP15 C1 control constants ARMV8_CP15_C1_*


[Expand]
ARMv8 CP15 C1 auxiliary control constants ARMV8_CP15_C1_AUX_*


[Expand]
ARMv8 CP15 C1 coprocessor access control constants ARMV8_CP15_C1_CP*


[Expand]
ARMv8 CP15 C1 secure configuration constants ARMV8_CP15_C1_SCR_*


[Expand]
ARMv8 CP15 C2 translation table base constants ARMV8_CP15_C2_TTBR_*


[Expand]
ARMv8 CP15 C3 domain access control constants ARMV8_CP15_C3_DOMAIN*


[Expand]
ARMv8 CP15 C10 primary region remap constants ARMV8_CP15_C10_PRRR_*


[Expand]
ARMv8 CP15 C10 normal memory remap constants ARMV8_CP15_C10_NMRR_*


[Expand]
ARMv8 CP15 C14 generic timer control constants ARMV8_CP15_C14_CNT_CTL_*


[Expand]
ARMv8 CP15 C14 generic timer constants ARMV8_CP15_C14_*


[Expand]
ARMv8 floating-point exception constants ARMV8_FPEXC_*


[Expand]
ARMv8 level one descriptor type constants ARMV8_L1D_TYPE_*


[Expand]
ARMv8 level one descriptor flag constants ARMV8_L1D_FLAG_*


[Expand]
ARMv8 level one descriptor mask constants ARMV8_L1D_*_MASK


[Expand]
ARMv8 level one descriptor TEX value constants ARMV8_L1D_TEX*


[Expand]
ARMv8 level one descriptor AP value constants ARMV8_L1D_AP*


[Expand]
ARMv8 level one descriptor permission value constants ARMV8_L1D_ACCESS_*


[Expand]
ARMv8 level one descriptor cache value constants ARMV8_L1D_CACHE_*


[Expand]
ARMv8 level one descriptor cacheable memory value constants ARMV8_L1D_CACHE_CACHEABLE_*


[Expand]
ARMv8 level one descriptor cache TEX remap value constants ARMV8_L1D_CACHE_REMAP_*


[Expand]
ARMv8 level two descriptor type constants ARMV8_L2D_TYPE_*


[Expand]
ARMv8 level two descriptor flag constants ARMV8_L2D_FLAG_*


[Expand]
ARMv8 level two descriptor mask constants ARMV8_L2D_*_MASK


[Expand]
ARMv8 level two descriptor large TEX value constants ARMV8_L2D_LARGE_TEX*


[Expand]
ARMv8 level two descriptor small TEX value constants ARMV8_L2D_SMALL_TEX*


[Expand]
ARMv8 level two descriptor AP value constants ARMV8_L2D_AP*


[Expand]
ARMv8 level two descriptor permission value constants ARMV8_L2D_ACCESS_*


[Expand]
ARMv8 level two descriptor large cache value constants ARMV8_L2D_LARGE_CACHE_*


[Expand]
ARMv8 level two descriptor large cacheable memory value constants ARMV8_L2D_LARGE_CACHE_CACHEABLE_*


[Expand]
ARMv8 level two descriptor large cache TEX remap value constants ARMV8_L2D_LARGE_CACHE_REMAP_*


[Expand]
ARMv8 level two descriptor small cache value constants ARMV8_L2D_SMALL_CACHE_*


[Expand]
ARMv8 level two descriptor small cacheable memory value constants ARMV8_L2D_SMALL_CACHE_CACHEABLE_*


[Expand]
ARMv8 level two descriptor small cache TEX remap value constants ARMV8_L2D_SMALL_CACHE_REMAP_*


[Expand]
ARMv8 specific constants ARMV8_*


Type definitions


To be documented

Public variables


To be documented

Function declarations



Initialization functions

[Expand]
procedure ARMv8Init;
Description: To be documented


ARMv8 platform functions

[Expand]
procedure ARMv8CPUInit; assembler; nostackframe;
Description: To be documented


[Expand]
procedure ARMv8FPUInit; assembler; nostackframe;
Description: To be documented


[Expand]
procedure ARMv8MMUInit;
Description: To be documented


[Expand]
procedure ARMv8CacheInit; assembler; nostackframe;
Description: To be documented


[Expand]
procedure ARMv8TimerInit(Frequency:LongWord); assembler; nostackframe;
Description: To be documented


[Expand]
procedure ARMv8PageTableInit;
Description: Initialize the Hardware Page Tables before enabling the MMU


[Expand]
procedure ARMv8SystemCall(Number:LongWord; Param1,Param2,Param3:PtrUInt); assembler; nostackframe;
Description: To be documented


[Expand]
function ARMv8CPUGetMode:LongWord; assembler; nostackframe;
Description: To be documented


[Expand]
function ARMv8CPUGetState:LongWord; assembler; nostackframe;
Description: To be documented


[Expand]
function ARMv8CPUGetCurrent:LongWord; assembler; nostackframe;
Description: To be documented


[Expand]
function ARMv8CPUGetMainID:LongWord; assembler; nostackframe;
Description: To be documented


[Expand]
function ARMv8CPUGetMultiprocessorID:LongWord; assembler; nostackframe;
Description: To be documented


[Expand]
function ARMv8CPUGetModel:LongWord;
Description: To be documented


[Expand]
function ARMv8CPUGetRevision:LongWord;
Description: To be documented


[Expand]
function ARMv8CPUGetDescription:String;
Description: To be documented


[Expand]
function ARMv8FPUGetState:LongWord; assembler; nostackframe;
Description: To be documented


[Expand]
function ARMv8L1CacheGetType:LongWord; assembler; nostackframe;
Description: To be documented


[Expand]
function ARMv8L1DataCacheGetSize:LongWord; assembler; nostackframe;
Description: To be documented


[Expand]
function ARMv8L1DataCacheGetLineSize:LongWord; assembler; nostackframe;
Description: To be documented


[Expand]
function ARMv8L1InstructionCacheGetSize:LongWord; assembler; nostackframe;
Description: To be documented


[Expand]
function ARMv8L1InstructionCacheGetLineSize:LongWord; assembler; nostackframe;
Description: To be documented


[Expand]
function ARMv8L2CacheGetType:LongWord; assembler; nostackframe;
Description: To be documented


[Expand]
function ARMv8L2CacheGetSize:LongWord; assembler; nostackframe;
Description: To be documented


[Expand]
function ARMv8L2CacheGetLineSize:LongWord; assembler; nostackframe;
Description: To be documented


[Expand]
procedure ARMv8Halt; assembler; nostackframe; public name'_haltproc';
Description: The purpose of the Wait For Interrupt operation is to put the processor in to a low power state


[Expand]
procedure ARMv8Pause; assembler; nostackframe;
Description: The purpose of the Wait For Interrupt operation is to put the processor in to a low power state


[Expand]
procedure ARMv8SendEvent; assembler; nostackframe;
Description: To be documented


[Expand]
procedure ARMv8WaitForEvent; assembler; nostackframe;
Description: To be documented


[Expand]
procedure ARMv8WaitForInterrupt; assembler; nostackframe;
Description: The purpose of the Wait For Interrupt operation is to put the processor in to a low power state


[Expand]
procedure ARMv8DataMemoryBarrier; assembler; nostackframe;
Description: Perform a data memory barrier operation using the c7 (Cache Operations) register of system control coprocessor CP15


[Expand]
procedure ARMv8DataSynchronizationBarrier; assembler; nostackframe;
Description: Perform a data synchronization barrier operation


[Expand]
procedure ARMv8InstructionMemoryBarrier; assembler; nostackframe;
Description: Perform a instruction synchronization barrier operation


[Expand]
procedure ARMv8InvalidateTLB; assembler; nostackframe;
Description: Perform an invalidate entire TLB operation using the c8 (TLB Operations) register of system control coprocessor CP15


[Expand]
procedure ARMv8InvalidateDataTLB; assembler; nostackframe;
Description: Perform an invalidate data TLB (Unlocked/Data) operation using the c8 (TLB Operations) register of system control coprocessor CP15


[Expand]
procedure ARMv8InvalidateInstructionTLB; assembler; nostackframe;
Description: Perform an invalidate instruction TLB (Unlocked/Instruction) operation using the c8 (TLB Operations) register of system control coprocessor CP15


[Expand]
procedure ARMv8InvalidateCache; assembler; nostackframe;
Description: Perform an invalidate both caches operation using the c7 (Cache Operations) register of system control coprocessor CP15


[Expand]
procedure ARMv8CleanDataCache; assembler; nostackframe;
Description: Perform a clean entire data cache operation


[Expand]
procedure ARMv8InvalidateDataCache; assembler; nostackframe;
Description: Perform an invalidate entire data cache operation


[Expand]
procedure ARMv8InvalidateL1DataCache; assembler; nostackframe;
Description: Perform an invalidate entire L1 data cache operation


[Expand]
procedure ARMv8CleanAndInvalidateDataCache; assembler; nostackframe;
Description: Perform a clean and invalidate entire data cache operation


[Expand]
procedure ARMv8InvalidateInstructionCache; assembler; nostackframe;
Description: Perform an invalidate entire instruction cache operation using the c7 (Cache Operations) register of system control coprocessor CP15


[Expand]
procedure ARMv8CleanDataCacheRange(Address,Size:LongWord); assembler; nostackframe;
Description: Perform a clean data cache by MVA to PoC operation


[Expand]
procedure ARMv8InvalidateDataCacheRange(Address,Size:LongWord); assembler; nostackframe;
Description: Perform an invalidate data cache by MVA to PoC operation


[Expand]
procedure ARMv8CleanAndInvalidateDataCacheRange(Address,Size:LongWord); assembler; nostackframe;
Description: Perform a clean and invalidate data cache by MVA to PoC operation


[Expand]
procedure ARMv8InvalidateInstructionCacheRange(Address,Size:LongWord); assembler; nostackframe; 
Description: Perform an invalidate instruction caches by MVA to PoU operation


[Expand]
procedure ARMv8CleanDataCacheSetWay(SetWay:LongWord); assembler; nostackframe;
Description: Perform a clean data cache line by set/way operation


[Expand]
procedure ARMv8InvalidateDataCacheSetWay(SetWay:LongWord); assembler; nostackframe;
Description: Perform an invalidate data cache line by set/way operation


[Expand]
procedure ARMv8CleanAndInvalidateDataCacheSetWay(SetWay:LongWord); assembler; nostackframe;
Description: Perform a clean and invalidate data cache line by set/way operation


[Expand]
procedure ARMv8FlushPrefetchBuffer; assembler; nostackframe;
Description: Perform an Instruction Synchronization Barrier operation


[Expand]
procedure ARMv8FlushBranchTargetCache; assembler; nostackframe;
Description: Perform a Flush Entire Branch Target Cache operation


[Expand]
procedure ARMv8ContextSwitch(OldStack,NewStack:Pointer; NewThread:TThreadHandle);  assembler; nostackframe;
Description: Perform a context switch from one thread to another as a result of a thread yielding, sleeping or waiting


[Expand]
procedure ARMv8ContextSwitchIRQ(OldStack,NewStack:Pointer; NewThread:TThreadHandle);  assembler; nostackframe;
Description: Perform a context switch from one thread to another as a result of an interrupt request (IRQ)


[Expand]
procedure ARMv8ContextSwitchFIQ(OldStack,NewStack:Pointer; NewThread:TThreadHandle); assembler; nostackframe;
Description: Perform a context switch from one thread to another as a result of a fast interrupt request (FIQ)


[Expand]
procedure ARMv8ContextSwitchSWI(OldStack,NewStack:Pointer; NewThread:TThreadHandle); assembler; nostackframe;
Description: Perform a context switch from one thread to another as a result of a software interrupt (SWI)


[Expand]
function ARMv8InterlockedOr(var Target:LongInt; Value:LongInt):LongInt; assembler; nostackframe;
Description: Perform an atomic OR operation using LDREX/STREX


[Expand]
function ARMv8InterlockedXor(var Target:LongInt; Value:LongInt):LongInt; assembler; nostackframe;
Description: Perform an atomic XOR operation using LDREX/STREX


[Expand]
function ARMv8InterlockedAnd(var Target:LongInt; Value:LongInt):LongInt; assembler; nostackframe;
Description: Perform an atomic AND operation using LDREX/STREX


[Expand]
function ARMv8InterlockedDecrement(var Target:LongInt):LongInt; assembler; nostackframe;
Description: Perform an atomic decrement operation using LDREX/STREX


[Expand]
function ARMv8InterlockedIncrement(var Target:LongInt):LongInt; assembler; nostackframe;
Description: Perform an atomic increment operation using LDREX/STREX


[Expand]
function ARMv8InterlockedExchange(var Target:LongInt; Source:LongInt):LongInt; assembler; nostackframe;
Description: Perform an atomic exchange operation using LDREX/STREX


[Expand]
function ARMv8InterlockedAddExchange(var Target:LongInt; Source:LongInt):LongInt; assembler; nostackframe;
Description: Perform an atomic add and exchange operation using LDREX/STREX


[Expand]
function ARMv8InterlockedCompareExchange(var Target:LongInt; Source,Compare:LongInt):LongInt; assembler; nostackframe;
Description: Perform an atomic compare and exchange operation using LDREX/STREX


[Expand]
function ARMv8PageTableGetEntry(Address:PtrUInt):TPageTableEntry;
Description: Get and Decode the entry in the Page Table that corresponds to the supplied virtual address


[Expand]
function ARMv8PageTableSetEntry(const Entry:TPageTableEntry):LongWord;
Description: Encode and Set an entry in the Page Table that corresponds to the supplied virtual address


[Expand]
function ARMv8VectorTableGetEntry(Number:LongWord):PtrUInt;
Description: Return the address of the specified vector table entry number


[Expand]
function ARMv8VectorTableSetEntry(Number:LongWord; Address:PtrUInt):LongWord;
Description: Set the supplied address as the value of the specified vector table entry number


[Expand]
function ARMv8FirstBitSet(Value:LongWord):LongWord; assembler; nostackframe;
Description: To be documented


[Expand]
function ARMv8CountLeadingZeros(Value:LongWord):LongWord; assembler; nostackframe;
Description: Equivalent of the GCC Builtin function __builtin_clz


ARMv8 thread functions

[Expand]
procedure ARMv8PrimaryInit; assembler; nostackframe;
Description: To be documented


[Expand]
function ARMv8SpinLock(Spin:PSpinEntry):LongWord; assembler; nostackframe;
Description: Lock an existing Spin entry


[Expand]
function ARMv8SpinUnlock(Spin:PSpinEntry):LongWord; assembler; nostackframe;
Description: Unlock an existing Spin entry


[Expand]
function ARMv8SpinLockIRQ(Spin:PSpinEntry):LongWord; assembler; nostackframe;
Description: Lock an existing Spin entry, disable IRQ and save the previous IRQ state


[Expand]
function ARMv8SpinUnlockIRQ(Spin:PSpinEntry):LongWord; assembler; nostackframe;
Description: Unlock an existing Spin entry and restore the previous IRQ state


[Expand]
function ARMv8SpinLockFIQ(Spin:PSpinEntry):LongWord; assembler; nostackframe;
Description: Lock an existing Spin entry, disable FIQ and save the previous FIQ state


[Expand]
function ARMv8SpinUnlockFIQ(Spin:PSpinEntry):LongWord; assembler; nostackframe;
Description: Unlock an existing Spin entry and restore the previous FIQ state


[Expand]
function ARMv8SpinLockIRQFIQ(Spin:PSpinEntry):LongWord; assembler; nostackframe;
Description: Lock an existing Spin entry, disable IRQ and FIQ and save the previous IRQ/FIQ state


[Expand]
function ARMv8SpinUnlockIRQFIQ(Spin:PSpinEntry):LongWord; assembler; nostackframe;
Description: Unlock an existing Spin entry and restore the previous IRQ/FIQ state


[Expand]
function ARMv8SpinCheckIRQ(Spin:PSpinEntry):Boolean;
Description: To be documented


[Expand]
function ARMv8SpinCheckFIQ(Spin:PSpinEntry):Boolean;
Description: To be documented


[Expand]
function ARMv8SpinExchangeIRQ(Spin1,Spin2:PSpinEntry):LongWord;
Description: To be documented


[Expand]
function ARMv8SpinExchangeFIQ(Spin1,Spin2:PSpinEntry):LongWord;
Description: To be documented


[Expand]
function ARMv8MutexLock(Mutex:PMutexEntry):LongWord; assembler; nostackframe;
Description: Lock an existing Mutex entry


[Expand]
function ARMv8MutexUnlock(Mutex:PMutexEntry):LongWord; assembler; nostackframe;
Description: Unlock an existing Mutex entry


[Expand]
function ARMv8MutexTryLock(Mutex:PMutexEntry):LongWord; assembler; nostackframe;
Description: Try to lock an existing Mutex entry


[Expand]
function ARMv8ThreadGetCurrent:TThreadHandle; assembler; nostackframe;
Description: Get the current thread id from the c13 (Thread and process ID) register of system control coprocessor CP15


[Expand]
function ARMv8ThreadSetCurrent(Thread:TThreadHandle):LongWord; assembler; nostackframe;
Description: Set the current thread id in the c13 (Thread and process ID) register of system control coprocessor CP15


[Expand]
function ARMv8ThreadSetupStack(StackBase:Pointer; StartProc:TThreadStart; ReturnProc:TThreadEnd; Parameter:Pointer):Pointer;
Description: Set up the context record and arguments on the stack for a new thread


ARMv8 IRQ functions

[Expand]
function ARMv8DispatchIRQ(CPUID:LongWord; Thread:TThreadHandle):TThreadHandle; inline;
Description: To be documented


ARMv8 FIQ functions

[Expand]
function ARMv8DispatchFIQ(CPUID:LongWord; Thread:TThreadHandle):TThreadHandle; inline;
Description: To be documented


ARMv8 SWI functions

[Expand]
function ARMv8DispatchSWI(CPUID:LongWord; Thread:TThreadHandle; Request:PSystemCallRequest):TThreadHandle; inline;
Description: To be documented


ARMv8 interrupt functions

[Expand]
procedure ARMv8ResetHandler; assembler; nostackframe;
Description: To be documented


[Expand]
procedure ARMv8UndefinedInstructionHandler; assembler; nostackframe;
Description: Handle an undefined instruction exception


[Expand]
procedure ARMv8SoftwareInterruptHandler; assembler; nostackframe;
Description: Handle a software interrupt (SWI) from a system call (SVC)


[Expand]
procedure ARMv8PrefetchAbortHandler; assembler; nostackframe;
Description: Handle a prefetch abort exception


[Expand]
procedure ARMv8DataAbortHandler; assembler; nostackframe;
Description: Handle a data abort exception


[Expand]
procedure ARMv8ReservedHandler; assembler; nostackframe;
Description: To be documented


[Expand]
procedure ARMv8IRQHandler; assembler; nostackframe;
Description: Handle an interrupt request IRQ from an interrupt source


[Expand]
procedure ARMv8FIQHandler; assembler; nostackframe;
Description: Handle a fast interrupt request FIQ from an interrupt source


ARMv8 helper functions

[Expand]
function ARMv8GetFPEXC:LongWord; assembler; nostackframe;
Description: To be documented


[Expand]
function ARMv8GetFPSCR:LongWord; assembler; nostackframe;
Description: To be documented


[Expand]
procedure ARMv8StartMMU; assembler; nostackframe;
Description: To be documented


[Expand]
function ARMv8GetTimerState(Timer:LongWord):LongWord; assembler; nostackframe;
Description: To be documented


[Expand]
procedure ARMv8SetTimerState(Timer,State:LongWord); assembler; nostackframe;
Description: To be documented


[Expand]
function ARMv8GetTimerCount(Timer:LongWord):Int64; assembler; nostackframe;
Description: To be documented


[Expand]
function ARMv8GetTimerValue(Timer:LongWord):LongWord; assembler; nostackframe;
Description: To be documented


[Expand]
procedure ARMV8SetTimerValue(Timer,Value:LongWord); assembler; nostackframe;
Description: To be documented


[Expand]
function ARMv8GetTimerCompare(Timer:LongWord):Int64; assembler; nostackframe;
Description: To be documented


[Expand]
procedure ARMV8SetTimerCompare(Timer,High,Low:LongWord); assembler; nostackframe;
Description: To be documented


[Expand]
function ARMv8GetTimerFrequency:LongWord; assembler; nostackframe;
Description: To be documented


[Expand]
function ARMv8GetPageTableCoarse(Address:PtrUInt):LongWord;
Description: Get the descriptor for a Coarse Page Table entry (1MB)


[Expand]
function ARMv8SetPageTableCoarse(Address,CoarseAddress:PtrUInt; Flags:Word):Boolean;
Description: Set the descriptor for a Coarse Page Table entry (1MB)


[Expand]
function ARMv8GetPageTableLarge(Address:PtrUInt):LongWord;
Description: Get the descriptor for a Large Page Table entry (64KB)


[Expand]
function ARMv8SetPageTableLarge(Address,PhysicalAddress:PtrUInt; Flags:Word):Boolean;
Description: Set the descriptor for a Large Page Table entry (64KB)


[Expand]
function ARMv8GetPageTableSmall(Address:PtrUInt):LongWord;
Description: Get the descriptor for a Small Page Table entry (4KB)


[Expand]
function ARMv8SetPageTableSmall(Address,PhysicalAddress:PtrUInt; Flags:Word):Boolean;
Description: Set the descriptor for a Small Page Table entry (4KB)


[Expand]
function ARMv8GetPageTableSection(Address:PtrUInt):LongWord;
Description: Get the descriptor for a Page Table Section (1MB) or Supersection (16MB)


[Expand]
function ARMv8SetPageTableSection(Address,PhysicalAddress:PtrUInt; Flags:LongWord):Boolean;
Description: Set the descriptor for a Page Table Section (1MB)


[Expand]
function ARMv8SetPageTableSupersection(Address,PhysicalAddress:PtrUInt; Flags:LongWord):Boolean;
Description: Set the descriptor for a Page Table Supersection (16MB)


Return to Unit Reference