Table 4.3. MIDR Register bit assignments Bits Name Function [31:24] Implementer Indicates implementer: 0x41 = ARM Limited. [23:20] Variant Identifies the major revision of the processor. This is the major revision number n in the rn part of the rnpn description of the product revision status. [19:16] Architecture Indicates the architecture version: 0xF = see feature registers. [15:4] Primary part number Indicates processor part number: 0xC14 = Cortex-R4. [3:0] Revision Identifies the minor revision of the processor. This is the minor revision number n in the pn part of the rnpn description of the product revision status. Note If an MRC instruction is executed with CRn = c0, Opcode_1 = 0, CRm = c0, and an Opcode_2 value corresponding to an unimplemented or reserved ID register, the system control coprocessor returns the value of the MIDR. To access the MIDR Register, read CP15 with: MRC p15, 0, , c0, c0, 0 ; Read MIDR ---------------------------------- Table 4.4. CTR Register bit assignments Bits Name Function [31:28] - Always b1000. [27:24] CWG Cache Write-back Granule: 0x0 = no information provided. See maximum cache line size in c0, Current Cache Size Identification Register. [23:20] ERG Exclusives Reservation Granule: 0x0 = no information provided. [19:16] DMinLine Indicates log2 of the number of words in the smallest cache line of the data and unified caches controlled by the processor: 0x3 = eight words in an L1 data cache line. [15:14] - Always 0x3. [13: 4] - Always 0x000. [3: 0] IMinLine Indicates log2 of the number of words in the smallest cache line of the instruction caches controlled by the processor: 0x3 = eight words in an L1 instruction cache line. To access the CTR, read CP15 with: MRC p15, 0, , c0, c0, 1 ; Read CTR ------------------------------ Table 4.5. TCMTR Register bit assignments Bits Name Function [31:29] - Always 0, indicating v6 format TCMTR. [28:19] - SBZ. [18:16] BTCM Specifies the number of BTCMs implemented. This is always set to b001 because the processor has one BTCM. [15:3] - SBZ. [2:0] ATCM Specifies the number of ATCMs implemented. Always set to b001. The processor has one ATCM. To access the TCMTR, read CP15 with: MRC p15, 0, , c0, c0, 2 ; Returns TCMTR ---------------------------------- Table 4.6. MPUIR Register bit assignments Bits Name Function [31:16] - SBZ. [15:8] DRegion Specifies the number of unified MPU regions. Set to 0, 8 or 12 data MPU regions. [7:1] - SBZ. [0] S Specifies the type of MPU regions, unified or separate, in the processor. Always set to 0, the processor has unified memory regions. To access the MPUIR, read CP15 with: MRC p15, 0, , c0, c0, 4 ; Returns MPU information ----------------------------------- 4.3.6. c0, Multiprocessor ID Register The MPIDR characteristics are: Purpose Enables CPUs to be recognized and characterized within a multi-processor system. Usage constraints The MPIDR is: a read-only register accessible in Privileged mode only. Configurations Available in all processor configurations. Attributes Because this is a uniprocessor system, this register is Read-As-Zero. To access the MPIDR, read CP15 with: MRC p15, 0, , c0, c0, 5 ; Returns Multiprocessor ID information -------------------------------- c0, Processor Feature Register 0 The PFR0 characteristics are: Purpose Provides information about the execution state support and programmers model for the processor. Usage constraints PFR0 is: a read-only register accessible in Privileged mode only. Configurations Available in all processor configurations. Attributes See Table 4.7. Figure 4.11 shows the PFR0 bit assignments. Figure 4.11. PFR0 Register bit assignments Table 4.7 shows the PFR0 bit assignments. Table 4.7. PFR0 Register bit assignments Bits Name Function [31:16] - SBZ. [15:12] State3 Indicates support for Thumb Execution Environment (ThumbEE): 0x0 = no support. [11:8] State2 Indicates support for acceleration of execution environments in hardware or software: 0x1 = the processor supports acceleration of execution environments in software. [7:4] State1 Indicates type of Thumb encoding that the processor supports: 0x3 = the processor supports Thumb encoding with all Thumb instructions. [3:0] State0 Indicates support for ARM instruction set: 0x1 = the processor supports ARM instructions. To access the PFR0 read CP15 with: MRC p15, 0, , c0, c1, 0 ; Read PFR0 c0, Processor Feature Register 1 The PFR1 characteristics are: Purpose Provides information about the execution state support and programmers model for the processor. Usage constraints PFR1 is: a read-only register accessible in Privileged mode only. Configurations Available in all processor configurations. Attributes See Table 4.8. Figure 4.12 shows the PFR1 bit assignments. Figure 4.12. PFR1 Register bit assignments Table 4.8 shows the PFR1 bit assignments.Register Table 4.8. PFR1 bit assignments Bits Name Function [31:12] - SBZ. [11:8] Microcontroller programmers model Indicates support for Microcontroller programmers model: 0x0 = no support. [7:4] Security extension Indicates support for Security Extensions architecture: 0x0 = no support. [3:0] ARMv4 Programmers model Indicates support for standard ARMv4 programmers model: 0x1 = the processor supports the ARMv4 model. To access the PFR1 read CP15 with: MRC p15, 0, , c0, c1, 1 ; Read PFR1 ------------------------------------ 4.3.7. The Processor Feature Registers The processor has two Processor Feature Registers, PFR0 and PFR1. This section describes: c0, Processor Feature Register 0 c0, Processor Feature Register 1. c0, Processor Feature Register 0 The PFR0 characteristics are: Purpose Provides information about the execution state support and programmers model for the processor. Usage constraints PFR0 is: a read-only register accessible in Privileged mode only. Configurations Available in all processor configurations. Attributes See Table 4.7. Figure 4.11 shows the PFR0 bit assignments. Figure 4.11. PFR0 Register bit assignments Table 4.7 shows the PFR0 bit assignments. Table 4.7. PFR0 Register bit assignments Bits Name Function [31:16] - SBZ. [15:12] State3 Indicates support for Thumb Execution Environment (ThumbEE): 0x0 = no support. [11:8] State2 Indicates support for acceleration of execution environments in hardware or software: 0x1 = the processor supports acceleration of execution environments in software. [7:4] State1 Indicates type of Thumb encoding that the processor supports: 0x3 = the processor supports Thumb encoding with all Thumb instructions. [3:0] State0 Indicates support for ARM instruction set: 0x1 = the processor supports ARM instructions. To access the PFR0 read CP15 with: MRC p15, 0, , c0, c1, 0 ; Read PFR0 ----------------------------------- c0, Processor Feature Register 1 The PFR1 characteristics are: Purpose Provides information about the execution state support and programmers model for the processor. Usage constraints PFR1 is: a read-only register accessible in Privileged mode only. Configurations Available in all processor configurations. Attributes See Table 4.8. Figure 4.12 shows the PFR1 bit assignments. Figure 4.12. PFR1 Register bit assignments Table 4.8 shows the PFR1 bit assignments.Register Table 4.8. PFR1 bit assignments Bits Name Function [31:12] - SBZ. [11:8] Microcontroller programmers model Indicates support for Microcontroller programmers model: 0x0 = no support. [7:4] Security extension Indicates support for Security Extensions architecture: 0x0 = no support. [3:0] ARMv4 Programmers model Indicates support for standard ARMv4 programmers model: 0x1 = the processor supports the ARMv4 model. To access the PFR1 read CP15 with: MRC p15, 0, , c0, c1, 1 ; Read PFR1 --------------------------------- 4.3.8. c0, Debug Feature Register 0 The ID_DFR0 characteristics are: Purpose Provides information about the debug system for the processor. Usage constraints ID_DFR0 is: a read-only register accessible in Privileged mode only. Configurations Available in all processor configurations. Attributes See Table 4.9. Figure 4.13 shows the ID_DFR0 bit assignments. Figure 4.13. ID_DFR0 Register bit assignments Table 4.9 shows the ID_DFR0 bit assignments. Table 4.9. ID_DFR0 Register bit assignments Bits Name Function [31:24] - SBZ. [23:20] Microcontroller Debug model - memory mapped Indicates support for the microcontroller debug model - memory mapped: 0x0 = no support. [19:16] Trace debug model - memory mapped Indicates support for the trace debug model - memory mapped: 0x1 = trace supported, memory mapped access. [15:12] Trace debug model - coprocessor Indicates support for the trace debug model - coprocessor: 0x0 = no support. [11:8] Core debug model - memory mapped Indicates the type of embedded processor debug model that the processor supports: 0x4 = ARMv7 based model - memory mapped. [7:4] Secure debug model Indicates the type of secure debug model that the processor supports: 0x0 = no support. [3:0] Core debug model - coprocessor Indicates the type of applications processor debug model that the processor supports: 0x0 = no support. To access the ID_DFR0 read CP15 with: MRC p15, 0, , c0, c1, 2 ; Read ID_DFR0 ----------------------------------- 4.3.9. c0, Auxiliary Feature Register 0 The ID_AFR0 characteristics are: Purpose Provides additional information about the features of the processor. Usage constraints The ID_AFR0 is: a read-only register accessible in Privileged mode only. Configurations Available in all processor configurations. Attributes In this processor, the ID_AFR0 reads as 0x00000000. To access the ID_AFR0 read CP15 with: MRC p15, 0, , c0, c1, 3 ; Read ID_AFR0. ------------------------------ c0, Memory Model Feature Register 0 The ID_MMFR0 characteristics are: Purpose The ID_MMFR0 provides information about the memory model, memory management, and cache support operations of the processor. Usage constraints The ID_MMFR0 is: a read-only register accessible in Privileged mode only. Configurations Available in all processor configurations. Attributes See Table 4.10. Figure 4.14 shows the ID_MMFR0 bit assignments. Figure 4.14. ID_MMFR0 Register bit assignments Table 4.10 shows the ID_MMFR0 bit assignments. Table 4.10. ID_MMFR0 Register bit assignments Bits Name Function [31:28] Innermost shareability Indicates the innermost shareability domain implemented. RAZ/UNK because only one shareability domain is implemented, see bits [15:12]. [27:24] FCSE Indicates support for Fast Context Switch Extension (FCSE): 0x0 = no support. [23:20] Auxiliary Registers Indicates support for the auxiliary registers: 0x2 = the processor supports the Auxiliary Instruction and Data Fault Status Registers (AIFSR and ADFSR) and the ACTLR. [19:16] TCM support Indicates support for TCM and associated DMA: 0x1 = implementation defined. [15:12] Shareability levels Indicates the number of shareability levels implemented: 0x0 = one level of shareability implemented. [11:8] Outermost shareability Indicates the outermost shareability domain implemented: 0x0 = implemented as non-cacheable. [7:4] PMSA Indicates support for Physical Memory System Architecture (PMSA): 0x3 = the processor supports PMSAv7 (subsection support). [3:0] VMSA Indicates support for Virtual Memory System Architecture (VMSA): 0x0 = no support. To access the ID_MMFR0 read CP15 with: MRC p15, 0, , c0, c1, 4 ; Read ID_MMFR0. -------------------------------------- c0, Memory Model Feature Register 1 The ID_MMFR1 Register characteristics are: Purpose Provides information about the memory model, memory management, and cache support of the processor. Usage constraints The ID_MMFR1 is: a read-only register accessible in Privileged mode only. Configurations Available in all processor configurations. Attributes See Table 4.11. Figure 4.15 shows the ID_MMFR1 bit assignments. Figure 4.15. ID_MMFR1 Register bit assignments Table 4.11 shows the ID_MMFR1 bit assignments. Table 4.11. ID_MMFR1 Register bit assignments Bits Name Function [31:28] Branch predictor Indicates Branch Predictor management requirements: 0x0 = no MMU present. [27:24] L1 test clean operations Indicates support for test and clean operations on data cache, Harvard or unified architecture: 0x0 = no support. [23:20] L1 cache maintenance operations (unified) Indicates support for L1 cache, entire cache maintenance operations, unified architecture: 0x0 = no support. [19:16] L1 cache maintenance operations (Harvard) Indicates support for L1 cache, entire cache maintenance operations, Harvard architecture: 0x0 = no support. [15:12] L1 cache line maintenance operations - Set and Way (unified) Indicates support for L1 cache line maintenance operations by Set and Way, unified architecture: 0x0 = no support. [11:8] L1 cache line maintenance operations - Set and Way (Harvard) Indicates support for L1 cache line maintenance operations by Set and Way, Harvard architecture. 0x0 = no support. [7:4] L1 cache line maintenance operations - MVA (unified) Indicates support for L1 cache line maintenance operations by address, unified architecture. 0x0 = no support. [3:0] L1 cache line maintenance operations - MVA (Harvard) Indicates support for L1 cache line maintenance operations by address, Harvard architecture. 0x0 = no support. To access the ID_MMFR1 read CP15 with: MRC p15, 0, , c0, c1, 5 ; Read ID_MMFR1. ------------------------------------ c0, Memory Model Feature Register 2 The ID_MMFR2 characteristics are: Purpose The ID_MMFR2 provides information about the memory model, memory management, and cache support operations of the processor. Usage constraints The ID_MMFR2 is: a read-only register accessible in Privileged mode only. Configurations Available in all processor configurations. Attributes See Table 4.12. Figure 4.16 shows the ID_MMFR2 bit assignments. Figure 4.16. ID_MMFR2 Register bit assignments Table 4.12 shows the ID_MMFR2 bit assignments. Table 4.12. ID_MMFR2 bit assignments Bits Name Function [31:28] Hardware access flag Indicates support for Hardware Access Flag: 0x0 = no support. [27:24] WFI Indicates support for Wait-For-Interrupt stalling: 0x1 = the processor supports Wait-For-Interrupt. [23:20] Memory barrier Indicates support for memory barrier operations: 0x2 = the processor supports: DSB (formerly DWB) ISB (formerly Prefetch Flush) DMB. [19:16] TLB maintenance operations (unified) Indicates support for TLB maintenance operations, unified architecture: 0x0 = no support. [15:12] TLB maintenance operations (Harvard) Indicates support for TLB maintenance operations, Harvard architecture: 0x0 = no support. [11:8] L1 cache maintenance range operations (Harvard) Indicates support for cache maintenance range operations, Harvard architecture: 0x0 = no support. [7:4] L1 background prefetch cache operations Indicates support for background prefetch cache range operations, Harvard architecture: 0x0 = no support. [3:0] L1 foreground prefetch cache operations Indicates support for foreground prefetch cache range operations, Harvard architecture: 0x0 = no support. To access the ID_MMFR2 read CP15 with: MRC p15, 0, , c0, c1, 6 ; Read ID_MMFR2. ----------------------------------- c0, Memory Model Feature Register 3 The ID_MMFR3 characteristics are: Purpose Provides information about the two cache line maintenance operations for the processor. Usage constraints The ID_MMFR3 is: a read-only register accessible in Privileged mode only. Configurations Available in all processor configurations. Attributes See Table 4.13. Figure 4.17 shows the ID_MMFR3 bit assignments. Figure 4.17. ID_MMFR3 bit assignments Table 4.13 shows the ID_MMFR3 bit assignments. Table 4.13. ID_MMFR3 Register bit assignments Bits Name Function [31:28] Supersection support RAZ because this is a PMSA implementation. [27:24] - SBZ [23:20] Coherent walk RAZ because this is a PMSA implementation. [19:16] - SBZ [15:12] Maintenance broadcast Indicates whether cache maintenance operations are broadcast: 0x0 = cache maintenance operations only affect local structures. [11:8] Branch predictor maintenance operations Indicates support for branch predictor maintenance operations in systems with hierarchical cache maintenance operations: 0x2 = supports invalidate entire branch predictor array and invalidate branch predictor by MVA[a]. [7:4] Hierarchical cache maintenance operations by Set and Way Indicates support for hierarchical cache maintenance operations by Set and Way: 0x1 = the processor supports invalidate cache, clean and invalidate, and clean by Set and Way. [3:0] Hierarchical cache maintenance operations by MVA Indicates support for hierarchical cache maintenance operations by address: 0x1 = the processor supports: Invalidate data cache by address Clean data cache by address Clean and invalidate data cache by address Invalidate instruction cache by address Invalidate all instruction cache entries. [a] Both of these operations are NOP on Cortex-R4. To access the ID_MMFR3 read CP15 with: MRC p15, 0, , c0, c1, 7 ; Read ID_MMFR3. ------------------------------------------- c0, Memory Model Feature Register 1 The ID_MMFR1 Register characteristics are: Purpose Provides information about the memory model, memory management, and cache support of the processor. Usage constraints The ID_MMFR1 is: a read-only register accessible in Privileged mode only. Configurations Available in all processor configurations. Attributes See Table 4.11. Figure 4.15 shows the ID_MMFR1 bit assignments. Figure 4.15. ID_MMFR1 Register bit assignments Table 4.11 shows the ID_MMFR1 bit assignments. Table 4.11. ID_MMFR1 Register bit assignments Bits Name Function [31:28] Branch predictor Indicates Branch Predictor management requirements: 0x0 = no MMU present. [27:24] L1 test clean operations Indicates support for test and clean operations on data cache, Harvard or unified architecture: 0x0 = no support. [23:20] L1 cache maintenance operations (unified) Indicates support for L1 cache, entire cache maintenance operations, unified architecture: 0x0 = no support. [19:16] L1 cache maintenance operations (Harvard) Indicates support for L1 cache, entire cache maintenance operations, Harvard architecture: 0x0 = no support. [15:12] L1 cache line maintenance operations - Set and Way (unified) Indicates support for L1 cache line maintenance operations by Set and Way, unified architecture: 0x0 = no support. [11:8] L1 cache line maintenance operations - Set and Way (Harvard) Indicates support for L1 cache line maintenance operations by Set and Way, Harvard architecture. 0x0 = no support. [7:4] L1 cache line maintenance operations - MVA (unified) Indicates support for L1 cache line maintenance operations by address, unified architecture. 0x0 = no support. [3:0] L1 cache line maintenance operations - MVA (Harvard) Indicates support for L1 cache line maintenance operations by address, Harvard architecture. 0x0 = no support. To access the ID_MMFR1 read CP15 with: MRC p15, 0, , c0, c1, 5 ; Read ID_MMFR1. c0, Memory Model Feature Register 2 The ID_MMFR2 characteristics are: Purpose The ID_MMFR2 provides information about the memory model, memory management, and cache support operations of the processor. Usage constraints The ID_MMFR2 is: a read-only register accessible in Privileged mode only. Configurations Available in all processor configurations. Attributes See Table 4.12. Figure 4.16 shows the ID_MMFR2 bit assignments. Figure 4.16. ID_MMFR2 Register bit assignments Table 4.12 shows the ID_MMFR2 bit assignments. Table 4.12. ID_MMFR2 bit assignments Bits Name Function [31:28] Hardware access flag Indicates support for Hardware Access Flag: 0x0 = no support. [27:24] WFI Indicates support for Wait-For-Interrupt stalling: 0x1 = the processor supports Wait-For-Interrupt. [23:20] Memory barrier Indicates support for memory barrier operations: 0x2 = the processor supports: DSB (formerly DWB) ISB (formerly Prefetch Flush) DMB. [19:16] TLB maintenance operations (unified) Indicates support for TLB maintenance operations, unified architecture: 0x0 = no support. [15:12] TLB maintenance operations (Harvard) Indicates support for TLB maintenance operations, Harvard architecture: 0x0 = no support. [11:8] L1 cache maintenance range operations (Harvard) Indicates support for cache maintenance range operations, Harvard architecture: 0x0 = no support. [7:4] L1 background prefetch cache operations Indicates support for background prefetch cache range operations, Harvard architecture: 0x0 = no support. [3:0] L1 foreground prefetch cache operations Indicates support for foreground prefetch cache range operations, Harvard architecture: 0x0 = no support. To access the ID_MMFR2 read CP15 with: MRC p15, 0, , c0, c1, 6 ; Read ID_MMFR2. c0, Memory Model Feature Register 3 The ID_MMFR3 characteristics are: Purpose Provides information about the two cache line maintenance operations for the processor. Usage constraints The ID_MMFR3 is: a read-only register accessible in Privileged mode only. Configurations Available in all processor configurations. Attributes See Table 4.13. Figure 4.17 shows the ID_MMFR3 bit assignments. Figure 4.17. ID_MMFR3 bit assignments Table 4.13 shows the ID_MMFR3 bit assignments. Table 4.13. ID_MMFR3 Register bit assignments Bits Name Function [31:28] Supersection support RAZ because this is a PMSA implementation. [27:24] - SBZ [23:20] Coherent walk RAZ because this is a PMSA implementation. [19:16] - SBZ [15:12] Maintenance broadcast Indicates whether cache maintenance operations are broadcast: 0x0 = cache maintenance operations only affect local structures. [11:8] Branch predictor maintenance operations Indicates support for branch predictor maintenance operations in systems with hierarchical cache maintenance operations: 0x2 = supports invalidate entire branch predictor array and invalidate branch predictor by MVA[a]. [7:4] Hierarchical cache maintenance operations by Set and Way Indicates support for hierarchical cache maintenance operations by Set and Way: 0x1 = the processor supports invalidate cache, clean and invalidate, and clean by Set and Way. [3:0] Hierarchical cache maintenance operations by MVA Indicates support for hierarchical cache maintenance operations by address: 0x1 = the processor supports: Invalidate data cache by address Clean data cache by address Clean and invalidate data cache by address Invalidate instruction cache by address Invalidate all instruction cache entries. [a] Both of these operations are NOP on Cortex-R4. To access the ID_MMFR3 read CP15 with: MRC p15, 0, , c0, c1, 7 ; Read ID_MMFR3. ----------------------------------- c0, Instruction Set Attributes Register 0 The ID_ISAR0 characteristics are: Purpose Provides information about the instruction set that the processor supports, beyond the basic set. Usage constraints The ID_ISAR0 is: a read-only register accessible in Privileged mode only. Configurations Available in all processor configurations. Attributes See Table 4.14. Figure 4.18 shows the ID_ISAR0 bit assignments. Figure 4.18. ID_ISAR0 Register bit assignments Table 4.14 shows the ID_ISAR0 bit assignments. Table 4.14. ID_ISAR0 Register bit assignments Bits Name Function [31:28] - SBZ [27:24] Divide instructions Indicates support for divide instructions: 0x1 = the processor supports SDIV and UDIV instructions. [23:20] Debug instructions Indicates support for debug instructions: 0x1 = the processor supports BKPT. [19:16] Coprocessor instructions Indicates support for coprocessor instructions other than separately attributed feature registers, such as CP15 registers and VFP: 0x0 = no support. [15:12] Compare and branch instructions Indicates support for combined compare and branch instructions: 0x1 = the processor supports combined compare and branch instructions, CBNZ and CBZ. [11:8] Bitfield instructions Indicates support for bitfield instructions. 0x1 = the processor supports bitfield instructions, BFC, BFI, SBFX, and UBFX. [7:4] Bit counting instructions Indicates support for bit counting instructions. 0x1 = the processor supports CLZ. [3:0] Atomic instructions Indicates support for atomic load and store instructions. 0x1 = the processor supports SWP and SWPB. To access the ID_ISAR0, read CP15 with: MRC p15, 0, , c0, c2, 0 ; Read ID_ISAR0 c0, Instruction Set Attributes Register 1 The ID_ISAR1 characteristics are: Purpose Provides information about the instruction set that the processor supports beyond the basic set. Usage constraints The ID_ISAR1 is: a read-only register accessible in Privileged mode only. Configurations Available in all processor configurations. Attributes See Table 4.15. Figure 4.19 shows the ID_ISAR1 bit assignments. Figure 4.19. ID_ISAR1 Register bit assignments Table 4.15 shows the ID_ISAR1 bit assignments. Table 4.15. ID_ISAR1 Register bit assignments Bits Name Function [31:28] Jazelle instructions Indicates support for Jazelle instructions: 0x1 = the processor supports: BXJ instruction J bit in PSRs. For more information see Program status registers and Acceleration of execution environments. [27:24] Interworking instructions Indicates support for interworking instructions: 0x3 = the processor supports: BX, and T bit in PSRs BLX, and PC loads have BX behavior data-processing instructions in the ARM instruction set with the PC as the destination and the S bit clear have BX-like behavior. [23:20] Immediate instructions Indicates support for immediate instructions: 0x1 = the processor supports: the MOVT instruction MOV instruction encodings with 16-bit immediates Thumb ADD and SUB instructions with 12-bit immediates. [19:16] ITE instructions Indicates support for If Then instructions: 0x1 = the processor supports IT instructions. [15:12] Extend instructions Indicates support for sign or zero extend instructions: 0x2 = the processor supports: SXTB, SXTB16, SXTH, UXTB, UXTB16, and UXTH SXTAB, SXTAB16, SXTAH, UXTAB, UXTAB16, and UXTAH. [11:8] Exception 2 instructions Indicates support for exception 2 instructions: 0x1 = the processor supports RFE, SRS, and CPS. [7:4] Exception 1 instructions Indicates support for exception 1 instructions: 0x1 = the processor supports LDM (exception return), LDM (user registers), and STM (user registers). [3:0] Endian instructions Indicates support for endianness control instructions: 0x1 = the processor supports SETEND and E bit in PSRs. To access the ID_ISAR1 read CP15 with: MRC p15, 0, , c0, c2, 1 ; Read ID_ISAR1 c0, Instruction Set Attributes Register 2 The ID_ISAR2 is: a read-only register accessible in Privileged mode only. The ID_ISAR2 characteristics are: Purpose The ID_ISAR2 provides information about the instruction set that the processor supports beyond the basic set. Usage constraints The ID_ISAR2 is: a read-only register accessible in Privileged mode only. Configurations Available in all processor configurations. Attributes See Table 4.16. Figure 4.20 shows the ID_ISAR2 bit assignments. Figure 4.20. ID_ISAR2 Register bit assignments Table 4.16 shows the ID_ISAR2 bit assignments. Table 4.16. ID_ISAR2 Register bit assignments Bits Name Function [31:28] Reversal instructions Indicates support for reversal instructions: 0x2 = the processor supports REV, REV16, REVSH, and RBIT. [27:24] PSR instructions Indicates support for PSR instructions: 0x1 = the processor supports MRS and MSR, and the exception return forms of data-processing instructions. [23:20] Unsigned multiply instructions Indicates support for advanced unsigned multiply instructions: 0x2 = the processor supports: UMULL and UMLAL UMAAL. [19:16] Signed multiply instructions Indicates support for advanced signed multiply instructions: 0x3 = the processor supports: SMULL and SMLAL SMLABB, SMLABT, SMLALBB,SMLALBT, SMLALTB, SMLALTT, SMLATB, SMLATT, SMLAWB, SMLAWT, SMULBB, SMULBT, SMULTB, SMULTT, SMULWB, SMULWT, and Q flag in PSRs SMLAD, SMLADX, SMLALD, SMLALDX, SMLSD, SMLSDX, SMLSLD, SMLSLDX, SMMLA, SMMLAR, SMMLS, SMMLSR, SMPUL, SMPULR, SMUAD, SMUADX, SMUSD, and SMUSDX. [15:12] Multiply instructions Indicates support for multiply instructions: 0x2 = the processor supports MUL, MLA, and MLS. [11:8] Interruptible instructions Indicates support for multi-access interruptible instructions. 0x1 = the processor supports restartable LDM and STM. [7:4] Memory hint instructions Indicates support for memory hint instructions. 0x3 = the processor supports PLD and PLI. [3:0] Load/store instructions Indicates support for additional load and store instructions. 0x1 = the processor supports LDRD and STRD. To access the ID_ISAR2 read CP15 with: MRC p15, 0, , c0, c2, 2 ; Read ID_ISAR2 c0, Instruction Set Attributes Register 3 The ID_ISAR3 characteristics are: Purpose Provides information about the instruction set that the processor supports beyond the basic set. Usage constraints The ID_ISAR3 is: a read-only registers accessible in Privileged mode only. Configurations Available in all processor configurations. Attributes See Table 4.17. Figure 4.21 shows the ID_ISAR3 bit assignments. Figure 4.21. ID_ISAR3 Register bit assignments Table 4.17 shows the ID_ISAR3 bit assignments. Table 4.17. ID_ISAR3 Register bit assignments Bits Name Function [31:28] ThumbEE extension Indicates support for ThumbEE Execution Environment extension: 0x0 = no support. [27:24] True NOP instructions Indicates support for true NOP instructions: 0x1 = the processor supports NOP16, NOP32 and various NOP compatible hints in both the ARM and Thumb instruction sets. [23:20] Thumb copy instructions Indicates support for Thumb copy instructions: 0x1 = the processor supports Thumb MOV(3) low register to low register. [19:16] Table branch instructions Indicates support for table branch instructions: 0x1 = the processor supports table branch instructions, TBB and TBH. [15:12] Synchronization primitive instructions Indicates support for synchronization primitive instructions: 0x2 = the processor supports: LDREX and STREX LDREXB, LDREXH, LDREXD, STREXB, STREXH, STREXD, and CLREX. [11:8] SVC instructions Indicates support for SVC (formerly SWI) instructions: 0x1 = the processor supports SVC. [7:4] SIMD instructions Indicates support for Single Instruction Multiple Data (SIMD) instructions: 0x3 = the processor supports: PKHBT, PKHTB, QADD16, QADD8, QASX, QSUB16, QSUB8, QSAX, SADD16, SADD8, SASX, SEL, SHADD16, SHADD8, SHASX, SHSUB16, SHSUB8, SHSAX, SSAT, SSAT16, SSUB16, SSUB8, SSAX, SXTAB16, SXTB16, UADD16, UADD8, UASX, UHADD16, UHADD8, UASX, UHSUB16, UHSUB8, USAX, UQADD16, UQADD8, UQASX, UQSUB16, UQSUB8, UQSAX, USAD8, USADA8, USAT, USAT16, USUB16, USUB8, USAX, UXTAB16, UXTB16, and the GE[3:0] bits in the PSRs. [3:0] Saturate instructions Indicates support for saturate instructions: 0x1 = the processor supports QADD, QDADD, QDSUB, QSUB and Q flag in PSRs. To access the ID_ISAR3 read CP15 with: MRC p15, 0, , c0, c2, 3 ; Read ID_ISAR3 c0, Instruction Set Attributes Register 4 The ID_ISAR4 characteristics are: Purpose Provides information about the instruction set that the processor supports beyond the basic set. Usage constraints The ID_ISAR4 is: a read-only register accessible in Privileged mode only. Configurations Available in all processor configurations. Attributes See Table 4.18. Figure 4.22 shows the ID_ISAR4 bit assignments. Figure 4.22. ID_ISAR4 Register bit assignments Table 4.18 shows the ID_ISAR4 bit assignments. Table 4.18. ISAR4 Register bit assignments Bits Name Function [31:28] SWP_frac RAZ because SWP/SWPB instruction support is indicated in ID_ISAR0. [27:24] PSR_M_instrs Indicates support for M-profile instructions for modifying the PSRs: 0x0 = no support. [23:20] Exclusive instructions Indicates support for Exclusive instructions: 0x0 = Only supports synchronization primitive instructions as indicated by bits [15:12] in the ISAR3 register. See c0, Instruction Set Attributes Register 3 for more information. [19:16] Barrier instructions Indicates support for Barrier instructions: 0x1 = the processor supports DMB, DSB, and ISB instructions. [15:12] SMC instructions Indicates support for Secure Monitor Call (SMC) (formerly SMI) instructions: 0x0 = no support. [11:8] Write-back instructions Indicates support for write-back instructions: 0x1 = supports all the writeback addressing modes defined in ARMv7. [7:4] With shift instructions Indicates support for with-shift instructions: 0x4 = the processor supports: the full range of constant shift options, on load/store and other instructions register-controlled shift options. [3:0] Unprivileged instructions Indicates support for Unprivileged instructions: 0x2 = the processor supports LDR{SB|B|SH|H}T and STR{B|H}T. To access the ID_ISAR4 read CP15 with: MRC p15, 0, , c0, c2, 4 ; Read ID_ISAR4 c0, Instruction Set Attributes Register 5 The ID_ISAR5 characteristics are: Purpose Provides additional information about the properties of the processor. Usage constraints ID_ISAR5 is: a read-only register accessible in Privileged mode only. Configurations Available in all processor configurations. Attributes In the processor, ID_ISAR5 is read as 0x00000000. To access the ID_ISAR5, read CP15 with: MRC p15, 0, , c0, c2, 5 ; Read ID_ISAR5 c0, Instruction Set Attributes Registers 6-7 ID_ISAR6 and ID_ISAR7 are not implemented, and their positions in the register map are Reserved. They correspond to CP15 accesses with: MRC p15, 0, , c0, c2, 6 ; Read ID_ISAR6 MRC p15, 0, , c0, c2, 7 ; Read ID_ISAR7 These registers are read-only, and are accessible in Privileged mode only. ------------------------------ 4.3.12. c0, Current Cache Size Identification Register The CCSIDR Register characteristics are: Purpose Provides information about the size and behavior of the instruction or data cache. Architecturally, there can be up to eight levels of cache, containing instruction, data, or unified caches. This processor contains L1 instruction and data caches only. The CSSELR determines which CCSIDR to select, see c0, Cache Size Selection Register. Usage constraints The CCSIDR is: a read-only register accessible in Privileged mode only. Configurations Available in all processor configurations. Attributes See Table 4.19. Figure 4.23 shows the CCSIDR bit assignments. Figure 4.23. CCSIDR Register bit assignments Table 4.19 shows the CCSIDR bit assignments. Table 4.19. CCSIDR Register bit assignments Bits Name Function [31] WT Indicates support available for write-through: 1 = write-through support available[a] [30] WB Indicates support available for write-back: 1 = write-back support availablea [29] RA Indicates support available for read allocation: 1 = read allocation support availablea [28] WA Indicates support available for write allocation: 1 = write allocation support availablea [27:13] NumSets Indicates the number of sets as (number of sets) - 1a [12:3] Associativity Indicates the number of ways as (number of ways) - 1a [2:0] LineSize Indicates the number of words in each cache linea [a] See Table 4.20 for valid bit field encodings. The LineSize field is encoded as 2 less than log(2) of the number of words in the cache line. For example, a value of 0x0 indicates there are four words in a cache line, that is the minimum size for the cache. A value of 0x1 indicates there are eight words in a cache line. Table 4.20 shows the individual bit field and complete register encodings for the CCSIDR. Use this to match the cache size and level of cache set by the CSSELR. See c0, Cache Size Selection Register. Table 4.20. Bit field and register encodings for CCSIDR Size Complete register encoding Register bit field encoding WT WB RA WA NumSets Associativity LineSize 4KB 0xF003E019 1 1 1 1 0x001F 0x3 0x1 8KB 0xF007E019 1 1 1 1 0x003F 16KB 0xF00FE019 1 1 1 1 0x007F 32KB 0xF01FE019 1 1 1 1 0x00FF 64KB 0xF03FE019 1 1 1 1 0x01FF To access the CCSIDR read CP15 with: MRC p15, 1, , c0, c0, 0 ; Read CCSIDR ----------------------------------------- 4.3.13. c0, Current Cache Level ID Register The CLIDR Register characteristics are: Purpose Indicates the cache levels that are implemented. Architecturally, there can be a different number of cache levels on the instruction and data side. Captures the point-of-coherency. Captures the point-of-unification. Usage constraints The CLIDR is: a read-only register accessible in Privileged mode only. Configurations Available in all processor configurations. Attributes See Table 4.21. Figure 4.24 shows the CLIDR bit assignments. Figure 4.24. CLIDR Register bit assignments Table 4.21 shows the CLIDR bit assignments. Table 4.21. CLIDR Register bit assignments Bits Name Function [31:30] - SBZ [29:27] LoU Level of Unification: 0b001 = L2, if either cache is implemented 0b000 = L1, if neither instruction nor data cache is implemented. [26:24] LoC Level of Coherency: 0b001 = L2, if either cache is implemented 0b000 = L1, if neither instruction nor data cache is implemented. [23:21] CL 8 0b000 = no cache at Cache Level (CL) 8 [20:18] CL 7 0b000 = no cache at CL 7 [17:15] CL 6 0b000 = no cache at CL 6 [14:12] CL 5 0b000 = no cache at CL 5 [11:9] CL 4 0b000 = no cache at CL 4 [8:6] CL 3 0b000 = no cache at CL 3 [5:3] CL 2 0b000 = no cache at CL 2 [2] CL 1 RAZ. Indicates no unified cache at CL1 [1] CL 1 0b000 = no data cache is implemented 0b001 = data cache is implemented. [0] CL 1 0b000 = no instruction cache is implemented. 0b001 = an instruction cache is implemented. To access the CLIDR, read CP15 with: MRC p15, 1, , c0, c0, 1 ; Read CLIDR ------------------------------------------------ 4.3.14. c0, Cache Size Selection Register The CSSELR characteristics are: Purpose Holds the value that the processor uses to select the CSSELR to use. Usage constraints The CSSELR is: a read/write register accessible in Privileged mode only. Configurations Available in all processor configurations. Attributes See Table 4.22. Figure 4.25 shows the CSSELR bit assignments. Figure 4.25. CSSELR Register bit assignments Table 4.22 shows the CSSELR bit assignments. Table 4.22. CSSELR Register bit assignments Bits Name Function [31: 4] - SBZ. [3:1] Level Identifies which cache level to select: b000 = L1 cache This field is read only, writes are ignored. [0] InD Identifies instruction or data cache to use: 1 = instruction 0 = data. To access the CCSIDRs read or write CP15 with: MRC p15, 2, , c0, c0, 0 ; Read CSSELR MCR p15, 2, , c0, c0, 0 ; Write CSSELR --------------------------------------------------- 4.3.15. c1, System Control Register The SCTLR characteristics are: Purpose Provides control and configuration information for: memory alignment, endianness, protection, and fault behavior MPU and cache enables and cache replacement strategy interrupts and the behavior of interrupt latency the location for exception vectors program flow prediction. Usage constraints The SCTLR is: a read/write register accessible in Privileged mode only attempts to read or write the SCTLR from User mode result in an Undefined Instruction exception. Configurations Available in all processor configurations. Attributes See Table 4.23. Figure 4.26 shows the SCTLR bit assignments. Figure 4.26. SCTLR Register bit assignments Table 4.23 shows the SCTLR bit assignments. Table 4.23. SCTLR Register bit assignments Bits Name Function [31] IE Identifies little or big instruction endianness in use: 0 = little-endianness 1 = big-endianness. The primary input CFGIE defines the reset value. This bit is read-only. [30] TE Thumb exception enable: 0 = enable ARM exception generation 1 = enable Thumb exception generation. The primary input TEINIT defines the reset value. [29] AFE Access Flag Enable. On the processor this bit is SBZ. [28] TRE TEX Remap Enable. On the processor this bit is SBZ. [27] NMFI NMFI, non-maskable fast interrupt enable: 0 = Software can disable FIQs 1 = Software cannot disable FIQs. This bit is read-only. The configuration input CFGNMFI defines its value. [26] - SBZ. [25] EE Determines how the E bit in the CPSR is set on an exception: 0 = CPSR E bit is set to 0 on an exception 1 = CPSR E bit is set to 1 on an exception. The primary input CFGEE defines the reset value. [24] VE Configures vectored interrupt: 0 = exception vector address for IRQ is 0x00000018 or 0xFFFF0018. See V bit. 1 = VIC controller provides handler address for IRQ. The reset value of this bit is 0. [23:22] - SBO. [21] FI Fast Interrupts enable. On the processor Fast Interrupts are always enabled. This bit is SBO. [20] - SBZ. [19] DZ Divide by zero: 0 = do not generate an Undefined Instruction exception 1 = generate an Undefined Instruction exception. The reset value of this bit is 0. [18] - SBO. [17] BR MPU background region enable. [16] - SBO. [15] - SBZ. [14] RR Round-robin bit, controls replacement strategy for instruction and data caches: 0 = random replacement strategy 1 = round-robin replacement strategy. The reset value of this bit is 0. The processor always uses a random replacement strategy, regardless of the state of this bit. [13] V Determines the location of exception vectors: 0 = normal exception vectors selected, address range = 0x00000000-0x0000001C 1 = high exception vectors (HIVECS) selected, address range = 0xFFFF0000-0xFFFF001C. The primary input VINITHI defines the reset value. [12] I Enables L1 instruction cache: 0 = instruction caching disabled. This is the reset value. 1 = instruction caching enabled. If no instruction cache is implemented, then this bit is SBZ. [11] Z Branch prediction enable bit. The processor supports branch prediction. This bit is SBO. The ACTLR can control branch prediction, see c1, Auxiliary Control Register. [10:7] - SBZ. [6:3] - SBO. [2] C Enables L1 data cache: 0 = data caching disabled. This is the reset value. 1 = data caching enabled. If no data cache is implemented, then this bit is SBZ. [1] A Enables strict alignment of data to detect alignment faults in data accesses: 0 = strict alignment fault checking disabled. This is the reset value. 1 = strict alignment fault checking enabled. [0] M Enables the MPU: 0 = MPU disabled. This is the reset value. 1 = MPU enabled. If no MPU is implemented, this bit is SBZ. To use the SCTLR, ARM recommends that you use a read-modify-write technique. To access the SCTLR, read or write CP15 with: MRC p15, 0, , c1, c0, 0 ; Read SCTLR MCR p15, 0, , c1, c0, 0 ; Write SCTLR ----------------------------------- 4.3.16. c1, Auxiliary Control Register The ACTLR characteristics are: Purpose Controls: branch prediction performance features error and parity logic. Usage constraints The ACTLR is: a read/write register accessible in Privileged mode only ARM recommends that any instruction that changes bits [31:28] or [7] is followed by an ISB instruction to ensure that the changes have taken effect before any dependent instructions are executed. Configurations Available in all processor configurations. Attributes See Table 4.24. Figure 4.27 shows the ACTLR bit assignments. Figure 4.27. ACTLR Register bit assignments Table 4.24 shows the ACTLR bit assignments. Table 4.24. ACTLR Register bit assignments Bits Name Function [31] DICDI[a] Case C dual issue control: 0 = Enabled. This is the reset value. 1 = Disabled. [30] DIB2DI[a] Case B2 dual issue control: 0 = Enabled. This is the reset value. 1 = Disabled. [29] DIB1DI[a] Case B1 dual issue control: 0 = Enabled. This is the reset value. 1 = Disabled. [28] DIADI[a] Case A dual issue control: 0 = Enabled. This is the reset value. 1 = Disabled. [27] B1TCMPCEN B1TCM parity or ECC check enable: 0 = Disabled 1 = Enabled. The primary input PARECCENRAM[2][b] defines the reset value. If the BTCM is configured with ECC, you must always set this bit to the same value as B0TCMPCEN. [26] B0TCMPCEN B0TCM parity or ECC check enable: 0 = Disabled 1 = Enabled. The primary input PARECCENRAM[1][b] defines the reset value. If the BTCM is configured with ECC, you must always set this bit to the same value as B1TCMPCEN. [25] ATCMPCEN ATCM parity or ECC check enable: 0 = Disabled 1 = Enabled. The primary input PARECCENRAM[0][b] defines the reset value. [24] AXISCEN AXI slave cache RAM access enable: 0 = Disabled. This is the reset value. 1 = Enabled. Note When AXI slave cache access is enabled, the caches are disabled and the processor cannot run any cache maintenance operations. If the processor attempts a cache maintenance operation, an Undefined Instruction exception is taken. [23] AXISCUEN AXI slave cache RAM non-privileged access enable: 0 = Disabled. This is the reset value. 1 = Enabled. [22] DILSM Disable Low Interrupt Latency (LIL) on load/store multiples: 0 = Enable LIL on load/store multiples. This is the reset value. 1 = Disable LIL on all load/store multiples. [21] DEOLP Disable end of loop prediction: 0 = Enable loop prediction. This is the reset value. 1 = Disable loop prediction. [20] DBHE Disable Branch History (BH) extension: 0 = Enable the extension. This is the reset value. 1 = Disable the extension. [19] FRCDIS Fetch rate control disable: 0 = Normal fetch rate control operation. This is the reset value. 1 = Fetch rate control disabled. [18] - SBZ. [17] RSDIS Return stack disable: 0 = Normal return stack operation. This is the reset value. 1 = Return stack disabled. [16:15] BP This field controls the branch prediction policy: b00 = Normal operation. This is the reset value. b01 = Branch always taken. b10 = Branch always not taken. b11 = Reserved. Behavior is Unpredictable if this field is set to b11. [14] DBWR Disable write burst in the AXI master: 0 = Normal operation. This is the reset value. 1 = Disable write burst optimization. [13] DLFO Disable linefill optimization in the AXI master: 0 = Normal operation. This is the reset value. 1 = Limits the number of outstanding data linefills to two. [12] ERPEG[c] Enable random parity error generation: 0 = Random parity error generation disabled. This is the reset value. 1 = Enable random parity error generation in the cache RAMs. Note This bit controls error generation logic during system validation. A synthesized ASIC typically does not have such models and this bit is therefore redundant for ASICs. [11] DNCH Disable data forwarding for Non-cacheable accesses in the AXI master: 0 = Normal operation. This is the reset value. 1 = Disable data forwarding for Non-cacheable accesses. [10] FORA Force outer read allocate (ORA) for outer write allocate (OWA) regions: 0 = No forcing of ORA. This is the reset value. 1 = ORA forced for OWA regions. [9] FWT Force write-through (WT) for write-back (WB) regions: 0 = No forcing of WT. This is the reset value. 1 = WT forced for WB regions. [8] FDSnS Force data side to not-shared when MPU is off: 0 = Normal operation. This is the reset value. 1 = Data side normal Non-cacheable forced to Non-shared when MPU is off. [7] sMOV sMOV of a divide does not complete out of order. No other instruction is issued until the divide is finished. 0 = Normal operation. This is the reset value. 1 = sMOV out of order disabled. [6] DILS Disable low interrupt latency on all load/store instructions. 0 = Enable LIL on all load/store instructions. This is the reset value. 1 = Disable LIL on all load/store instructions. [5:3] CEC Cache error control for cache parity and ECC errors. See Table 8.2 and Table 8.3 for information about how these bits are used. The reset value is b100. [2] B1TCMECEN B1TCM external error enable: 0 = Disabled 1 = Enabled. The primary input ERRENRAM[2] defines the reset value. [1] B0TCMECEN B0TCM external error enable: 0 = Disabled 1 = Enabled. The primary input ERRENRAM[1] defines the reset value. [0] ATCMECEN ATCM external error enable: 0 = Disabled 1 = Enabled. The primary input ERRENRAM[0] defines the reset value. [a] See Dual issue [b] See Configuration signals. [c] This bit is only supported if parity error generation is implemented in your design. To access the ACTLR, read or write CP15 with: MRC p15, 0, , c1, c0, 1 ; Read ACTLR MCR p15, 0, , c1, c0, 1 ; Write ACTLR ------------------------------- 4.3.17. c15, Secondary Auxiliary Control Register The Secondary Auxiliary Control Register characteristics are: Purpose Controls: branch prediction performance features error and parity logic. Usage constraints The Secondary Auxiliary Control Register is: a read/write register accessible in Privileged mode only. ARM recommends that any instruction that changes bits [20:16] is followed by an ISB instruction to ensure that the changes have taken effect before any dependent instructions are executed. Configurations Available in all processor configurations. Attributes See Table 4.25. Note This register is implemented from the r1pn releases of the processor. Attempting to access this register in r0pn releases of the processor results in an Undefined Instruction exception. Figure 4.28 shows the Secondary Auxiliary Control Register bit assignments. Figure 4.28. Secondary Auxiliary Control Register bit assignments Table 4.25 shows the Secondary Auxiliary Control Register bit assignments. Table 4.25. Secondary Auxiliary Control Register bit assignments Bits Name Function [31:23] - SBZ. [22] DCHE Disable hard-error support in the caches:[a] 0 = Enabled. The cache logic recovers from some hard errors. You must not use this value on revisions r1p2 or earlier of the processor. 1 = Disabled. Most hard errors in the caches are fatal. This is the reset value. See Hard errors for more information. [21] DR2B[b] Enable random 2-bit error generation in cache RAMs. This bit has no effect unless ECC is configured, see Configurable options: 0 = Disabled. This is the reset value. 1 = Enabled. Note This bit controls error generation logic during system validation. A synthesized ASIC typically does not have such models and this bit is therefore redundant for ASICs. [20] DF6DI F6 dual issue control:[c] 0 = Enabled. This is the reset value. 1 = Disabled. [19] DF2DI F2_Id/F2_st/F2D dual issue control:[c] 0 = Enabled. This is the reset value. 1 = Disabled. [18] DDI F1/F3/F4dual issue control:[c] 0 = Enabled. This is the reset value. 1 = Disabled. [17] DOODPFP Out-of-order Double Precision Floating Point instruction control:[c] 0 = Enabled. This is the reset value. 1 = Disabled. [16] DOOFMACS Out-of-order FMACS control:[c] 0 = Enabled. This is the reset value. 1 = Disabled. [15:14] - SBZ. [13] IXC Floating-point inexact exception output mask::[c] 0 = Mask floating-point inexact exception output. The output FPIXC is forced to zero. This is the reset value. 1 = Propagate floating point inexact exception flag FPSCR.IXC to output FPIXC. [12] OFC Floating-point overflow exception output mask:[c] 0 = Mask floating-point overflow exception output. The output FPOFC is forced to zero. This is the reset value. 1 = Propagate floating-point overflow exception flag FPSCR.OFC to output FPOFC. [11] UFC Floating-point underflow exception output mask:[c] 0 = Mask floating-point underflow exception output. The output FPUFC is forced to zero. This is the reset value. 1 = Propagate floating-point underflow exception flag FPSCR.UFC to output FPUFC. [10] IOC Floating-point invalid operation exception output mask:[c] 0 = Mask floating-point invalid operation exception output. The output FPIOC is forced to zero. This is the reset value. 1 = Propagate floating-point invalid operation exception flag FPSCR.IOC to output FPIOC. [9] DZC Floating-point divide-by-zero exception output mask:[c] 0 = Mask floating-point divide-by-zero exception output. The output FPDZC is forced to zero. This is the reset value. 1 = Propagate floating-point divide-by-zero exception flag FPSCR.DZC to output FPDZC. [8] IDC Floating-point input denormal exception output mask:[c] 0 = Mask floating-point input denormal exception output. The output FPIDC is forced to zero. This is the reset value. 1 = Propagate floating-point input denormal exception flag FPSCR.IDC to output FPIDC. [7:4] - SBZ. [3] BTCMECC Correction for internal ECC logic on BTCM ports:[d] 0 = Enabled. This is the reset value. 1 = Disabled. [2] ATCMECC Correction for internal ECC logic on ATCM port:[d] 0 = Enabled. This is the reset value. 1 = Disabled. [1] BTCMRMW Enables 64-bit stores for the BTCMs. When enabled, the processor uses read-modify-write to ensure that all reads and writes presented on the BTCM ports are 64 bits wide:[e] 0 = Disabled 1 = Enabled. The primary input RMWENRAM[1] defines the reset value. [0] ATCMRMW Enables 64-bit stores for the ATCM. When enabled, the processor uses read-modify-write to ensure that all reads and writes presented on the ATCM port are 64 bits wide:[e] 0 = Disabled 1 = Enabled. The primary input RMWENRAM[0] defines the reset value. [a] This bit is RAZ if both caches have neither ECC nor parity. [b] This bit is only supported if parity error generation is implemented in your design. [c] This bit has no effect unless the Floating Point Unit (FPU) is configured, see Configurable options. [d] This bit has no effect unless TCM ECC logic is configured for the respective TCM interface, see Configurable options. [e] This feature is not available when the TCM interface is built with 32-bit ECC. To access the Secondary Auxiliary Control Register, read or write CP15 with: MRC p15, 0, , c15, c0, 0 ; Read Secondary Auxiliary Control Register MCR p15, 0, , c15, c0, 0 ; Write Secondary Auxiliary Control Register ---------------------------------------- 4.3.18. c1, Coprocessor Access Register The CPACR characteristics are: Purpose Sets access rights for coprocessors. Usage constraints The CPACR is: A read/write register. Accessible in Privileged mode only. Because this processor does not support coprocessors CP0-CP9, CP12, and CP13, bits [27:24] and [19:0] in this register are read-as-zero and ignore writes. CPACR has no effect on access to CP14, the debug control coprocessor, or CP15, the system control coprocessor. The only other coprocessor that the Cortex-R4F processor includes is the FPU, CP10, and CP11. This register enables software to determine if the FPU exists in the processor. Configurations Available in all processor configurations. Attributes See Table 4.26. Figure 4.29 shows the CPACR bit assignments. Figure 4.29. CPACR Register bit assignments Table 4.26 shows the CPACR bit assignments. Table 4.26. CPACR Register bit assignments Bits Name Function [31:28] - SBZ. [27:0] cp[a] Defines access permissions for each coprocessor Access denied is the reset condition, and is the behavior for non-existent coprocessors: b00 = Access denied. Attempts to access generates an Undefined Instruction exception. b01 = Privileged mode access only b10 = Reserved b11 = Privileged and User mode access. Access permissions for the FPU are set by fields cp10 and cp11. For all other coprocessor fields, the value is fixed to b00. [a] n is the coprocessor number between 0 and 13. To access the CPACR, read or write CP15 with: MRC p15, 0, , c1, c0, 2 ; Read CPACR MCR p15, 0, , c1, c0, 2 ; Write CPACR -------------------------------------------- c5, Data Fault Status Register The DFSR characteristics are: Purpose Holds status information regarding the source of the last data abort. Usage constraints The DFSR is: a read/write register accessible in Privileged mode only. Configurations Available in all processor configurations. Attributes See Table 4.28. Figure 4.30 shows the DFSR bit assignments. Figure 4.30. DFSR Register bit assignments Table 4.28 shows the DFSR bit assignments. Table 4.28. DFSR Register bit assignments Bits Name Function [31:13] - SBZ. [12] SD Distinguishes between an AXI Decode or Slave error on an external abort. This bit is only valid for external aborts. For all other aborts types of abort, this bit is set to zero: 0 = AXI Decode error (DECERR) caused the abort 1 = AXI Slave error (SLVERR, or OKAY in response to exclusive read transaction) caused the abort. [11] RW Indicates whether a read or write access caused an abort: 0 = read access caused the abort 1 = write access caused the abort. [10][a] S Part of the Status field. [9:8] - Always RAZ. Writes ignored. [7:4] Domain SBZ. This is because domains are not implemented in this processor. [3:0][a] Status Indicates the type of fault generated. To determine the data fault, you must use bit [12] and bit [10] in conjunction with bits [3:0]. [a] For more information on how these bits are used in reporting faults, see Table 4.27. To use the DFSR read or write CP15 with: MRC p15, 0, , c5, c0, 0 ; Read DFSR MCR p15, 0, , c5, c0, 0 ; Write DFSR c5, Instruction Fault Status Register The IFSR characteristics are: Purpose Holds status information regarding the source of the last instruction abort. Usage constraints The IFSR is: a read/write register accessible in Privileged mode only. Configurations Available in all processor configurations. Attributes See Table 4.29. Figure 4.31 shows the IFSR bit assignments. Figure 4.31. IFSR Register bit assignments Table 4.29 shows the IFSR bit assignments. Table 4.29. IFSR Register bit assignments Bits Name Function [31:13] - SBZ. [12] SD Distinguishes between an AXI Decode or Slave error on an external abort. This bit is only valid for external aborts. For all other aborts types of abort, this bit is set to zero: 0 = AXI Decode error (DECERR) caused the abort 1 = AXI Slave error (SLVERR) caused the abort. [11] - SBZ. [10][a] S Part of the Status field. [9:8] - SBZ. [7:4] Domain SBZ. This is because domains are not implemented in this processor. [3:0][a] Status Indicates the type of fault generated. To determine the instruction fault, bit [12] and bit [10] must be used in conjunction with bits [3:0]. [a] For more information on how these bits are used in reporting faults, see Table 4.27. To access the IFSR read or write CP15 with: MRC p15, 0, , c5, c0, 1 ; Read IFSR MCR p15, 0, , c5, c0, 1 ; Write IFSR c5, Auxiliary Fault Status Registers The processor has two auxiliary fault status registers: the Auxiliary Data Fault Status Register (ADFSR) the Auxiliary Instruction Fault Status Register (AIFSR). The auxiliary fault status registers characteristics are: Purpose Provide additional information about data and instruction parity, ECC, and external TCM errors. Usage constraints The auxiliary fault status registers are: Read/write registers. Accessible in Privileged mode only. The contents of an auxiliary fault status register are only valid when the corresponding Data or Instruction Fault Status Register indicates that a parity or ECC error has occurred. At other times the contents of the auxiliary fault status registers are Unpredictable. Configurations Available in all processor configurations. Attributes See Table 4.30. Figure 4.32 shows the auxiliary fault status register bit assignments. Figure 4.32. Auxiliary fault status register bit assignments Table 4.30 shows the auxiliary fault status register bit assignments. Table 4.30. Auxiliary fault status register bit assignments Bits Name Function [31:28] - SBZ. [27:24] CacheWay[a] The value returned in this field indicates the cache way or ways in which the error occurred. [23:22] Side The value returned in this field indicates the source of the error. Possible values are: b00 = Cache or AXI master interface b01 = ATCM b10 = BTCM b11 = Reserved. [21] Recoverable error The value returned in this field indicates if the error is recoverable: 0 = Unrecoverable error. 1 = Recoverable error. This includes all correctable parity/ECC errors and recoverable TCM external errors. [20:14] - SBZ. [13:5] Index[b] This field returns the index value for the access giving the error. [4:0] - SBZ. [a] This field is only valid for data cache store parity/ECC errors, otherwise it is Unpredictable. [b] This field is only valid for data cache store parity/ECC errors. On the AIFSR, and for TCM accesses, this field SBZ. To access the auxiliary fault status registers, read or write CP15 with: MCR p15, 0, , c5, c1, 0 ; Write ADFSR MRC p15, 0, , c5, c1, 0 ; Read ADFSR MCR p15, 0, , c5, c1, 1 ; Write AIFSR MRC p15, 0, , c5, c1, 1 ; Read AIFSR c6, Data Fault Address Register The DFAR characteristics are: Purpose Holds the address of the fault when a synchronous abort occurs. Usage constraints The DFAR is: a read/write register accessible in Privileged mode only. Configurations Available in all processor configurations. Attributes The DFAR bits [31:0] contain the address where the synchronous abort occurred. To access the DFAR read or write CP15 with: MRC p15, 0, , c6, c0, 0 ; Read DFAR MCR p15, 0, , c6, c0, 0 ; Write DFAR A write to this register sets the DFAR to the value of the data written. This is useful for a debugger to restore the value of the DFAR. The processor also updates the DFAR on debug exception entry because of watchpoints. See Effect of debug exceptions on CP15 registers and DBGWFAR for more information. c6, Instruction Fault Address Register The IFAR characteristics are: Purpose Holds the address of the instruction that caused a prefetch abort. Usage constraints The IFAR is: a read/write register accessible in Privileged mode only. Configurations Available in all processor configurations. Attributes The IFAR bits [31:0] contain the Instruction Fault address. To access the IFAR read or write CP15 with: MRC p15, 0, , c6, c0, 2 ; Read IFAR MCR p15, 0, , c6, c0, 2 ; Write IFAR A write to this register sets the IFAR to the value of the data written. This is useful for a debugger to restore the value of the IFAR. ----------------------------------- 4.3.20. c6, MPU memory region programming registers The MPU memory region programming registers program the MPU regions. There is one register that specifies which one of the sets of region registers is to be accessed. See c6, MPU Memory Region Number Register. Each region has its own register status to specify: region base address region size and enable region access control. You can implement the processor with 12 or 16 regions, or without an MPU entirely. If you implement the processor without an MPU, then there are no regions and no region programming registers. Note When the MPU is enabled: The MPU determines the access permissions for all accesses to memory, including the TCMs. Therefore, you must ensure that the memory regions in the MPU are programmed to cover the complete TCM address space with the appropriate access permissions. You must define at least one of the regions in the MPU. An access to an undefined area of memory normally generates a background fault. For the TCM space the processor uses the access permissions but ignores the region attributes from MPU. CP15, c9 sets the location of the TCM base address. For more information see c9, BTCM Region Register and c9, ATCM Region Register. c6, MPU Region Base Address Registers The MPU Region Base Address Register characteristics are: Purpose Describes the base address of the region specified by the Memory Region Number Register. Usage constraints The MPU Region Base Address Registers are: 32-bit read/write registers accessible in Privileged mode only. The region base address must always align to the region size. Configurations Use these registers if the processor is configured with an MPU. Attributes See Table 4.31. Figure 4.33 shows the MPU Region Base Address Registers bit assignments. Figure 4.33. MPU Region Base Address Registers bit assignments Table 4.31 shows the MPU Region Base Address Registers bit assignments. Table 4.31. MPU Region Base Address Registers bit assignments Bits Name Function [31:5] Base address Defines bits [31:5] of the base address of a region. [4:0] - SBZ To access an MPU Region Base Address Register, read or write CP15 with: MRC p15, 0, , c6, c1, 0 ; Read MPU Region Base Address Register MCR p15, 0, , c6, c1, 0 ; Write MPU Region Base Address Register c6, MPU Region Size and Enable Registers The MPU Region Size and Enable Register characteristics are: Purpose Specifies the size of the region specified by the Memory Region Number Register. Identifies the address ranges that are used for a particular region. Enables or disables the region, and its sub-regions, specified by the Memory Region Number Register. Usage constraints The MPU Region Size and Enable Registers are: 32-bit read/write registers accessible in Privileged mode only. Configurations Use these registers if the processor is configured with an MPU. Attributes See Table 4.32. Figure 4.34 shows the MPU Region Size and Enable Registers bit assignments. Figure 4.34. MPU Region Size and Enable Registers bit assignments Table 4.32 shows the MPU Region Size and Enable Registers bit assignments. Table 4.32. Region Size MPU Region Size and Enable Registers bit assignments Bits Name Function [31:16] - SBZ. [15:8] Sub-region disable Each bit position represents a sub-region, 0-7[a]. Bit [8] corresponds to sub-region 0 ... Bit [15] corresponds to sub-region 7 The meaning of each bit is: 0 = address range is part of this region 1 = address range is not part of this region. - SBZ. [5:1] Region size Defines the region size: b00000 - b00011=Unpredictable b00100 = 32 bytes b00101 = 64 bytes b00110 = 128 bytes b00111 = 256 bytes b01000 = 512 bytes b01001 = 1KB b01010 = 2KB b01011 = 4KB b01100 = 8KB b01101 = 16KB b01110 = 32KB b01111 = 64KB b10000 = 128KB b10001 = 256KB b10010 = 512KB b10011 = 1MB b10100 = 2MB b10101 = 4MB b10110 = 8MB b10111 = 16MB b11000 = 32MB b11001 = 64MB b11010 = 128MB b11011 = 256MB b11100 = 512MB b11101 = 1GB b11110 = 2GB b11111 = 4GB. [0] Enable Enables or disables a memory region: 0 = Memory region disabled. Memory regions are disabled on reset. 1 = Memory region enabled. A memory region must be enabled before it is used. [a] Sub-region 0 covers the least significant addresses in the region, while sub-region 7 covers the most significant addresses in the region. For more information, see Subregions. To access an MPU Region Size and Enable Register, read or write CP15 with: MRC p15, 0, , c6, c1, 2 ; Read Data MPU Region Size and Enable Register MCR p15, 0, , c6, c1, 2 ; Write Data MPU Region Size and Enable Register Writing a region size that is outside the range results in Unpredictable behavior. c6, MPU Region Access Control Registers The MPU Region Access Control Register characteristics are: Purpose Holds the region attributes and access permissions for the region specified by the Memory Region Number Register. Usage constraints The MPU Region Access Control Registers are: read/write registers accessible in Privileged mode only. Configurations Use these registers if the processor is configured with an MPU. Attributes See Table 4.33. Figure 4.35 shows the MPU Region Access Control Registers bit assignments. Figure 4.35. MPU Region Access Control Register bit assignments Table 4.33 shows the MPU Region Access Control Registers bit assignments. Table 4.33. MPU Region Access Control Register bit assignments Bits Name Function [31:13] - SBZ. [12] XN eXecute Never. Determines if a region of memory is executable: 0 = all instruction fetches enabled 1 = no instruction fetches enabled. [11] - Reserved. [10:8] AP Access permission. Defines the data access permissions. For more information on AP bit values see, Table 4.36. [7:6] - SBZ. [5:3] TEX Type extension. Defines the type extension attribute[a]. [2] S Share. Determines if the memory region is Shared or Non-shared: 0 = Non-shared. 1 = Shared. This bit only applies to Normal, not Device or Strongly-ordered memory. [1] C C bit[a]: [0] B B bit[a]: [a] For more information on this region attribute, see Table 4.34. Table 4.34 shows the encoding for the TEX[2:0], C, and B regions. Table 4.34. TEX[2:0], C, and B encodings TEX[2:0] C B Description Memory Type Shareable? 000 0 0 Strongly-ordered. Strongly-ordered Shareable 000 0 1 Shareable Device. Device Shareable 000 1 0 Outer and Inner write-through, no write-allocate. Normal S bit[a] 000 1 1 Outer and Inner write-back, no write-allocate.[b] Normal S bit[a] 001 0 0 Outer and Inner Non-cacheable. Normal S bit[a] 001 0 1 Reserved. - - 001 1 0 001 1 1 Outer and Inner write-back, write-allocate. Normal S bit[a] 010 0 0 Non-shareable Device. Device Non-shareable 010 0 1 Reserved. - - 010 1 X Reserved. - - 011 X X Reserved. - - 1BB A A Cacheable memory: AA[c] = Inner policy BB[c] = Outer policy Normal S bit[a] [a] Region is Shareable if S == 1, and Non-shareable if S == 0. [b] If the memory region type is specified as Write back cacheable (no write-allocate), memory accesses to this type of memory behave as Write Back Write Allocate behavior for a memory. [c] Table 4.35 shows the encoding for these bits. When TEX[2] == 1, the memory region is cacheable memory, and the rest of the encoding defines the Inner and Outer cache policies: TEX[1:0] Defines the Outer cache policy. C,B Defines the Inner cache policy. The same encoding is used for the Outer and Inner cache policies. Table 4.35 shows the encoding. Table 4.35. Inner and Outer cache policy encoding Memory attribute encoding Cache policy 00 Non-cacheable 01 Write-back, write-allocate 10 Write-through, no write-allocate 11 Write-back, no write-allocate Table 4.36 shows the AP bit values that determine the permissions for Privileged and User data access. Table 4.36. Access data permission bit encoding AP bit values Privileged permissions User permissions Description b000 No access No access All accesses generate a permission fault b001 Read/write No access Privileged access only b010 Read/write Read-only Writes in User mode generate permission faults b011 Read/write Read/write Full access b100 UNP UNP Reserved b101 Read-only No access Privileged read-only b110 Read-only Read-only Privileged/User read-only b111 UNP UNP Reserved To access the MPU Region Access Control Registers read or write CP15 with: MRC p15, 0, , c6, c1, 4 ; Read Region access control Register MCR p15, 0, , c6, c1, 4 ; Write Region access control Register To execute instructions in User and Privileged modes: the region must have read access as defined by the AP bits the XN bit must be set to 0. c6, MPU Memory Region Number Register The RGNRs characteristics are: Purpose Multiple registers with one register for each memory region implemented. The value contained in the RGNR determines which of the multiple registers is accessed. Usage constraints The RGNRs are: Read/write register. Accessible in Privileged mode only. Writing this register with a value greater than or equal to the number of regions from the MPUIR is Unpredictable. Associated MPU Region Register accesses are also Unpredictable. Configurations Use this register if the processor is configured with an MPU. Attributes See Table 4.37. Figure 4.36 shows the RGNR bit assignments. Figure 4.36. RGNR Register bit assignments Table 4.37 shows the RGNR bit assignments. Table 4.37. RGNR Register bit assignments Bits Name Function [31:4] - SBZ. [3:0] Region Defines the group of registers to be accessed. Read the MPUIR to determine the number of supported regions, see c0, MPU Type Register. To access the RGNR, read or write CP15 with: MRC p15, 0, , c6, c2, 0 ; Read RGNR MCR p15, 0, , c6, c2, 0 ; Write RGNR Writing this register with a value greater than or equal to the number of regions from the MPUIR is Unpredictable. Associated MPU Region Register accesses are also Unpredictable. ---------------------------------- 4.3.22. c9, BTCM Region Register The BTCM Region Register characteristics are: Purpose Holds the base address and size of the BTCM. Determines if the BTCM is enabled. Usage constraints The BTCM Region Register is: a read/write register accessible in Privileged mode only. Configurations Available in all processor configurations. Attributes See Table 4.41. Figure 4.40 shows the BTCM Region Register bit assignments. Figure 4.40. BTCM Region Register bit assignments Table 4.41 shows the BTCM Region Register bit assignments. Table 4.41. BTCM Region Register bit assignments Bits Name Function [31:12] Base address Base address. Defines the base address of the BTCM. The base address must be aligned to the size of the BTCM. Any bits in the range [(log2(RAMSize)-1):12] are ignored. At reset, if LOCZRAMA is set to: 0 =The initial base address is 0x0. 1 =The initial base address is implementation-defined. See Configurable options. [11:7] - UNP on reads, SBZ on writes. [6:2] Size Size. Indicates the size of the BTCM on reads. On writes this field is ignored. See About the TCMs: b00000 = 0KB b00011 = 4KB b00100 = 8KB b00101 = 16KB b00110 = 32KB b00111 = 64KB b01000 = 128KB b01001 = 256KB b01010 = 512kB b01011 = 1MB b01100 = 2MB b01101 = 4MB b01110 = 8MB [1] - SBZ. [0] Enable Enables or disables the BTCM: 0 = Disabled 1 = Enabled. The reset value of this field is determined by the INITRAMB input pin. To access the BTCM Region Register, read or write CP15 with: MRC p15, 0, , c9, c1, 0 ; Read BTCM Region Register MCR p15, 0, , c9, c1, 0 ; Write BTCM Region Register ----------------------------------- 4.3.23. c9, ATCM Region Register The ATCM Region Register characteristics are: Purpose Holds the base address and size of the ATCM. Determines if the ATCM is enabled. Usage constraints The ATCM Region Register is: a read/write register accessible in Privileged mode only. Configurations Available in all processor configurations. Attributes See Table 4.42. Figure 4.41 shows the ATCM Region Register bit assignments. Figure 4.41. ATCM Region Register bit assignments Table 4.42 shows the ATCM Region Register bit assignments. Table 4.42. ATCM Region Register bit assignments Bits Name Function [31:12] Base address Base address. Defines the base address of the ATCM. The base address must be aligned to the size of the ATCM. Any bits in the range [(log2(RAMSize)-1):12] are ignored. At reset, if LOCZRAMA is set to: 0 = The initial base address is implementation-defined. See Configurable options 1 = The initial base address is 0x0. [11:7] - UNP on reads, SBZ on writes. [6:2] Size Size. Indicates the size of the ATCM on reads. On writes this field is ignored. See About the TCMs. b00000 = 0KB b00011 = 4KB b00100 = 8KB b00101 = 16KB b00110 = 32KB b00111 = 64KB b01000 = 128KB b01001 = 256KB b01010 = 512kB b01011 = 1MB b01100 = 2MB b01101 = 4MB b01110 = 8MB. [1] - SBZ [0] Enable Enables or disables the ATCM. 0 = Disabled 1 = Enabled. The reset value of this field is determined by the INITRAMA input pin. To access the ATCM Region Register, read or write CP15 with: MRC p15, 0, , c9, c1, 1 ; Read ATCM Region Register MCR p15, 0, , c9, c1, 1 ; Write ATCM Region Register --------------------------- 4.3.25. c11, Slave Port Control Register The Slave Port Control Register characteristics are: Purpose Enables or disables TCM access to the AXI slave port in Privileged or User mode. Enables access to the cache RAMs through the AXI slave port. See c1, Auxiliary Control Register. Usage constraints The Slave Port Control Register is: a read/write register accessible in Privileged mode only. Configurations Available in all processor configurations. Attributes See Table 4.43. Figure 4.42 shows the Slave Port Control Register bit assignments. Figure 4.42. Slave Port Control Register bit assignments Table 4.43 shows the Slave Port Control Register bit assignments. Table 4.43. Slave Port Control Register bit assignments Bits Name Function [31:2] - RAZ/UNP [1] Privileged access Defines level of access for TCM accesses: 0 = Non-privileged and privileged access. This is the reset value. 1 = Privileged access only. [0] AXI slave enable Enables or disables the AXI slave port for TCM accesses: 0 = Enables AXI slave port. This is the reset value. 1 = Disables AXI slave port. To access the Slave Port Control Register, read or write CP15 with: MRC p15, 0, , c11, c0, 0 ; Read Slave Port Control Register MCR p15, 0, , c11, c0, 0 ; Write Slave Port Control Register ----------------------------------- 4.3.27. c13, Context ID Register The CONTEXTIDR characteristics are: Purpose Holds a process IDentification (ID) value for the running process. The Embedded Trace Macrocell (ETM) and the debug logic use this register. The ETM can broadcast its value to indicate the process that is running. You must program each process with a unique number. Enables process dependent breakpoints and instructions. Usage constraints The CONTEXTIDR is: a read/write register accessible in Privileged mode only. Configurations Available in all processor configurations. Attributes The CONTEXTIDR, bits [31:0] contain the process ID number. To use the CONTEXTIDR, read or write CP15 with: MRC p15, 0, , c13, c0, 1 ; Read CONTEXTIDR MCR p15, 0, , c13, c0, 1 ; Write CONTEXTIDR ---------------------------------- 4.3.28. c13, Thread and Process ID Registers The Thread and Process ID Registers provide locations to store the IDs of software threads and processes for Operating System (OS) management purposes. The Thread and Process ID Registers are: three read/write registers: User read/write Thread and Process ID Register User read-only Thread and Process ID Register Privileged-only Thread and Process ID Register. each accessible in different modes: The User read/write register can be read and written in User and Privileged modes. The User read-only register can only be read in User mode, but can be read and written in Privileged modes. The Privileged-only register can be read and written in Privileged modes only. To access the Thread and Process ID registers, read or write CP15 with: MRC p15, 0, , c13, c0, 2 ; Read User read/write Thread and Proc. ID Register MCR p15, 0, , c13, c0, 2 ; Write User read/write Thread and Proc. ID Register MRC p15, 0, , c13, c0, 3 ; Read User Read Only Thread and Proc. ID Register MCR p15, 0, , c13, c0, 3 ; Write User Read Only Thread and Proc. ID Register MRC p15, 0, , c13, c0, 4 ; Read Privileged Only Thread and Proc. ID Register MCR p15, 0, , c13, c0, 4 ; Write Privileged Only Thread and Proc. ID Register Reading or writing the Thread and Process ID registers has no effect on processor state or operation. These registers provide OS support, and the OS must manage them. You must clear the contents of all Thread and Process ID registers on process switches to prevent data leaking from one process to another. This is important to ensure the security of data. The reset value of these registers is 0. -------------------------------- 4.3.29. Validation Registers The processor implements a set of validation registers. This section describes: c15, nVAL IRQ Enable Set Register c15, nVAL FIQ Enable Set Register c15, nVAL Reset Enable Set Register c15, VAL Debug Request Enable Set Register c15, nVAL IRQ Enable Clear Register c15, nVAL FIQ Enable Clear Register c15, nVAL Reset Enable Clear Register c15, VAL Debug Request Enable Clear Register c15, Cache Size Override Register. c15, nVAL IRQ Enable Set Register The nVAL IRQ Enable Set Register characteristics are: Purpose Enables any of the PMXEVCNTR Registers, PMXEVCNTR0-PMXEVCNTR2, and PMCCNTR, to generate an interrupt request on overflow. If enabled, the interrupt request is signaled by nVALIRQ being asserted LOW. Usage constraints The nVAL IRQ Enable Set Register is: A read/write register. Always accessible in Privileged mode. The PMUSERENR Register determines access in User mode, see c9, User Enable Register. Configurations Available in all processor configurations. Attributes See Table 4.44. Figure 4.43 shows the nVAL IRQ Enable Set Register bit assignments. Figure 4.43. nVAL IRQ Enable Set Register bit assignments Table 4.44 shows the nVAL IRQ Enable Set Register bit assignments. Table 4.44. nVAL IRQ Enable Set Register bit assignments Bits Name Function [31] C PMCCNTR overflow IRQ request [30: 3] - UNP or SBZP [2] P2 PMC2 overflow IRQ request [1] P1 PMC1 overflow IRQ request [0] P0 PMC0 overflow IRQ request To access the nVAL IRQ Enable Set Register, read or write CP15 with: MRC p15, 0, , c15, c1, 0 ; Read nVAL IRQ Enable Set Register MCR p15, 0, , c15, c1, 0 ; Write nVAL IRQ Enable Set Register On reads, this register returns the current setting. On writes, interrupt requests can be enabled by writing a 1 to the appropriate bits. If an interrupt request is enabled it is disabled by writing to the nVAL IRQ Enable Clear Register, see c15, nVAL IRQ Enable Clear Register. If one or more of the IRQ request fields (P2, P1, P0, and C) is enabled, and the corresponding counter overflows, then an IRQ request is indicated by nVALIRQ being asserted LOW. This signal might be passed to a system interrupt controller. c15, nVAL FIQ Enable Set Register The nVAL FIQ Enable Set Register characteristics are: Purpose Enables any of the PMXEVCNTR Registers, PMXEVCNTR0-PMXEVCNTR2, and PMCCNTR, to generate an fast interrupt request on overflow. If enabled, the interrupt request is signaled by nVALFIQ being asserted LOW. Usage constraints The nVAL FIQ Enable Set Register is: A read/write register. Always accessible in Privileged mode. The PMUSERENR Register determines access in User mode, see c9, User Enable Register. Configurations Available in all processor configurations. Attributes See Table 4.45. Figure 4.44 shows the nVAL FIQ Enable Set Register bit assignments. Figure 4.44. nVAL FIQ Enable Set Register bit assignments Table 4.45 shows the nVAL FIQ Enable Set Register bit assignments. Table 4.45. nVAL FIQ Enable Set Register bit assignments Bits Name Function [31] C PMCCNTR overflow FIQ request [30:3] - UNP or SBZP [2] P2 PMC2 overflow FIQ request [1] P1 PMC1 overflow FIQ request [0] P0 PMC0 overflow FIQ request To access the FIQ Enable Set Register, read or write CP15 with: MRC p15, 0, , c15, c1, 1 ; Read FIQ Enable Set Register MCR p15, 0, , c15, c1, 1 ; Write FIQ Enable Set Register On reads, this register returns the current setting. On writes, interrupt requests can be enabled by writing a 1 to the appropriate bits. If an interrupt request is enabled it is disabled by writing to the FIQ Enable Clear Register, see c15, nVAL FIQ Enable Clear Register. If one or more of the FIQ request fields (P2, P1, P0, and C) is enabled, and the corresponding counter overflows, then an FIQ request is indicated by nVALFIQ being asserted LOW. This signal can be passed to a system interrupt controller. c15, nVAL Reset Enable Set Register The nVAL Reset Enable Set Register is: A read/write register. Always accessible in Privileged mode. The PMUSERENR Register determines access in User mode, see c9, User Enable Register. The nVAL Reset Enable Set Register characteristics are: Purpose Enables any of the PMXEVCNTR Registers, PMXEVCNTR0-PMXEVCNTR2, and PMCCNTR, to generate a reset request on overflow. If enabled, the reset request is signaled by nVALRESET being asserted LOW. Usage constraints The nVAL Reset Enable Set Register is: A read/write register. Always accessible in Privileged mode. The PMUSERENR Register determines access in User mode, see c9, User Enable Register. Configurations Available in all processor configurations. Attributes See Table 4.46. Figure 4.45 shows the nVAL Reset Enable Set Register bit assignments. Figure 4.45. nVAL Reset Enable Set Register bit assignments Table 4.46 shows the nVAL Reset Enable Set Register bit assignments. Table 4.46. nVAL Reset Enable Set Register bit assignments Bits Name Function [31] C PMCCNTR overflow reset request [30:3] - UNP or SBZP [2] P2 PMC2 overflow reset request [1] P1 PMC1 overflow reset request [0] P0 PMC0 overflow reset request To access the nVAL Reset Enable Set Register, read or write CP15 with: MRC p15, 0, , c15, c1, 2 ; Read nVAL Reset Enable Set Register MCR p15, 0, , c15, c1, 2 ; Write nVAL Reset Enable Set Register On reads, this register returns the current setting. On writes, interrupt requests can be enabled by writing a 1 to the appropriate bits. If a reset request is enabled, it is disabled by writing to the nVAL Reset Enable Clear Register. See c15, nVAL Reset Enable Clear Register. If one or more of the reset request fields (P2, P1, P0, and C) is enabled, and the corresponding counter overflows, then a reset request is indicated by nVALRESET being asserted LOW. This signal can be passed to a system reset controller. c15, VAL Debug Request Enable Set Register The VAL Debug Request Enable Set Register characteristics are: Purpose Enables any of the PMXEVCNTR Registers, PMXEVCNTR0-PMXEVCNTR2, and PMCCNTR, to generate a debug request on overflow. If enabled, the debug request is signaled by VALEDBGRQ being asserted HIGH. Usage constraints The VAL Debug Request Enable Set Register is: A read/write register. Always accessible in Privileged mode. The PMUSERENR Register determines access in User mode, see c9, User Enable Register. Configurations Available in all processor configurations. Attributes See Table 4.47. Figure 4.46 shows the VAL Debug Request Enable Set Register bit assignments. Figure 4.46. VAL Debug Request Enable Set Register bit assignments Table 4.47 shows the VAL Debug Request Enable Set Register bit assignments. Table 4.47. VAL Debug Request Enable Set Register bit assignments Bits Name Function [31] C PMCCNTR overflow debug request [30:3] - UNP or SBZP [2] P2 PMC2 overflow debug request [1] P1 PMC1 overflow debug request [0] P0 PMC0 overflow debug request To access the nVAL Debug Request Enable Set Register, read or write CP15 with: MRC p15, 0, , c15, c1, 3 ; Read nVAL Debug Request Enable Set Register MCR p15, 0, , c15, c1, 3 ; Write nVAL Debug Request Enable Set Register On reads, this register returns the current setting. On writes, interrupt requests can be enabled by writing a 1 to the appropriate bits. If a debug request is enabled, it is disabled by writing to the nVAL Debug Request Enable Clear Register. See c15, VAL Debug Request Enable Clear Register. If one or more of the reset request fields (P2, P1, P0, and C) is enabled, and the corresponding counter overflows, then a debug reset request is indicated by VALEDBGRQ being asserted HIGH. This signal can be passed to an external debugger. c15, nVAL IRQ Enable Clear Register The nVAL IRQ Enable Clear Register characteristics are: Purpose Disables overflow IRQ requests from any of the PMXEVCNTR Registers, PMXEVCNTR0-PMXEVCNTR2, and PMCCNTR, for which they have been enabled. Usage constraints The nVAL IRQ Enable Clear Register is: A read/write register. Always accessible in Privileged mode. The PMUSERENR Register determines access in User mode, see c9, User Enable Register. Configurations Available in all processor configurations. Attributes See Table 4.48. Figure 4.47 shows the nVAL IRQ Enable Clear Register bit assignments. Figure 4.47. nVAL IRQ Enable Clear Register bit assignments Table 4.48 shows the nVAL IRQ Enable Clear Register bit assignments. Table 4.48. nVAL IRQ Enable Clear Register bit assignments Bits Name Function [31] C PMCCNTR overflow IRQ request [30:3] - UNP or SBZP [2] P2 PMC2 overflow IRQ request [1] P1 PMC1 overflow IRQ request [0] P0 PMC0 overflow IRQ request To access the nVAL IRQ Enable Clear Register, read or write CP15 with: MRC p15, 0, , c15, c1, 4 ; Read nVAL IRQ Enable Clear Register MCR p15, 0, , c15, c1, 4 ; Write nVAL IRQ Enable Clear Register On reads, this register returns the current setting. On writes, overflow interrupt requests that are enabled can be disabled by writing a 1 to the appropriate bits. For more information of how to enable IRQ requests on counter overflows, and how the requests are signaled, see c15, nVAL IRQ Enable Set Register. c15, nVAL FIQ Enable Clear Register The nVAL FIQ Enable Clear Register characteristics are: Purpose Disables overflow FIQ requests from any of the PMXEVCNTR Registers, PMXEVCNTR0-PMXEVCNTR2, and PMCCNTR, that are enabled. Usage constraints The nVAL FIQ Enable Clear Register is: A read/write register. Always accessible in Privileged mode. The PMUSERENR Register determines access in User mode, see c9, User Enable Register. Configurations Available in all processor configurations. Attributes See Table 4.49. Figure 4.48 shows the nVAL FIQ Enable Clear Register bit assignments. Figure 4.48. nVAL FIQ Enable Clear Register bit assignments Table 4.49 shows the nVAL FIQ Enable Clear Register bit assignments. Table 4.49. nVAL FIQ Enable Clear Register bit assignments Bits Name Function [31] C PMCCNTR overflow FIQ request [30:3] - UNP or SBZP [2] P2 PMC2 overflow FIQ request [1] P1 PMC1 overflow FIQ request [0] P0 PMC0 overflow FIQ request To access the FIQ Enable Clear Register, read or write CP15 with: MRC p15, 0, , c15, c1, 5 ; Read FIQ Enable Clear Register MCR p15, 0, , c15, c1, 5 ; Write FIQ Enable Clear Register On reads, this register returns the current setting. On writes, overflow interrupt requests that are enabled can be disabled by writing a 1 to the appropriate bits. For information on how to enable FIQ requests on counter overflows, and how the requests are signaled, see c15, nVAL FIQ Enable Set Register. c15, nVAL Reset Enable Clear Register The nVAL Reset Enable Clear Register characteristics are: Purpose Disables overflow reset requests from any of the PMXEVCNTR Registers, PMXEVCNTR0-PMXEVCNTR2, and PMCCNTR, that are enabled. Usage constraints The nVAL Reset Enable Clear Register is: A read/write register. Always accessible in Privileged mode. The PMUSERENR Register determines access in User mode, see c9, User Enable Register. Configurations Available in all processor configurations. Attributes See Table 4.50. Figure 4.49 shows the nVAL Reset Enable Clear Register bit assignments. Figure 4.49. nVAL Reset Enable Clear Register bit assignments Table 4.50 shows the nVAL Reset Enable Clear Register bit assignments. Table 4.50. nVAL Reset Enable Clear Register bit assignments Bits Name Function [31] C PMCCNTR overflow reset request [30:3] - UNP or SBZP [2] P2 PMC2 overflow reset request [1] P1 PMC1 overflow reset request [0] P0 PMC0 overflow reset request To access the nVAL Reset Enable Clear Register, read or write CP15 with: MRC p15, 0, , c15, c1, 6 ; Read nVAL Reset Enable Clear Register MCR p15, 0, , c15, c1, 6 ; Write nVAL Reset Enable Clear Register On reads, this register returns the current setting. On writes, overflow reset requests that are enabled can be disabled by writing a 1 to the appropriate bits. For more information of how to enable reset requests on counter overflows, and how the requests are signaled, see c15, nVAL Reset Enable Set Register. c15, VAL Debug Request Enable Clear Register The VAL Debug Request Enable Clear Register characteristics are: Purpose Disables overflow debug requests from any of the PMXEVCNTR Registers, PMXEVCNTR0-PMXEVCNTR2, and PMCCNTR, that are enabled. Usage constraints The VAL Debug Request Enable Clear Register is: A read/write register. Always accessible in Privileged mode. The PMUSERENR Register determines access in User mode, see c9, User Enable Register. Configurations Available in all processor configurations. Attributes See Table 4.51. Figure 4.50 shows the VAL Debug Request Enable Clear Register bit assignments. Figure 4.50. VAL Debug Request Enable Clear Register bit assignments Table 4.51 shows the VAL Debug Request Enable Clear Register bit assignments. Table 4.51. VAL Debug Request Enable Clear Register bit assignments Bits Name Function [31] C PMCCNTR overflow debug request [30:3] - UNP or SBZP [2] P2 PMC2 overflow debug request [1] P1 PMC1 overflow debug request [0] P0 PMC0 overflow debug request To access the nVAL Debug Request Enable Clear Register, read or write CP15 with: MRC p15, 0, , c15, c1, 7 ; Read nVAL Debug Request Enable Clear Register MCR p15, 0, , c15, c1, 7 ; Write nVAL Debug Request Enable Clear Register On reads, this register returns the current setting. On writes, overflow debug requests that are enabled can be disabled by writing a 1 to the appropriate bits. For more information of how to enable debug requests on counter overflows, and how the requests are signaled, see c15, VAL Debug Request Enable Set Register. c15, Cache Size Override Register The Cache Size Override Register characteristics are: Purpose Overwrites the caches size fields in the main register. This enables you to choose a smaller instruction and data cache size than is implemented. Usage constraints The Cache Size Override Register is: a write-only register only accessible in Privileged mode. Configurations Available in all processor configurations. Attributes See Table 4.52. Figure 4.51 shows the Cache Size Override Register bit assignments. Figure 4.51. Cache Size Override Register bit assignments Table 4.52 shows the Cache Size Override Register bit assignments. Table 4.52. Cache Size Override Register bit assignments Bits Name Function [31:8] - SBZ. [7:4] Dcache Defines the data cache size override value. See Table 4.53. [3:0] Icache Defines the instruction cache size override value. See Table 4.53. Table 4.53 shows the encodings for the instruction and data cache sizes. Table 4.53. instruction and data cache size encodings Encoding Instruction and data cache size b0000 4kB b0001 8kB b0011 16kB b0111 32kB b1111 64kB To access the Cache Size Override Register, write CP15 with: MCR p15, 0, , c15, c14, 0 ; VAL Cache Size Override Register Note The Cache Size Override Register can only be used to select cache sizes for which the appropriate RAM is integrated. Larger cache sizes require deeper data and tag RAMs, and smaller cache sizes require wider tag RAMs. Therefore, it is unlikely that you can change the cache size using this register except using a simulation model of the cache RAMs. ------------------------------ 4.3.30. Correctable Fault Location Register The CFLR characteristics are: Purpose Indicates the location of the last correctable error that occurred during cache or TCM operations. Usage constraints The CFLR is: a read/write register accessible in Privileged mode only not updated on: speculative accesses, for example, an instruction fetch for an instruction that is not executed because of a previous branch a TCM external error or external retry request. updated on: parity or ECC errors in the instruction cache single-bit ECC errors in the data cache parity or multi-bit errors in the data cache when write-through behavior is forced single-bit TCM ECC errors. updated by the processor, regardless of whether an abort is taken or an access is retried in response to the error. Configurations Available in all processor configurations. Attributes See Table 4.54. Every correctable error that causes a CFLR update also has an associated event. See Table 6.1 for the events that are related to CFLR updates. If two correctable errors occur simultaneously, for example an AXI slave error and an LSU or PFU error, the LSU or PFU write takes priority. If multiple errors occur, the value in the CFLR reflects the location of the latest event. The same register is updated by all correctable errors. You can read bits [25:24] to determine whether the error was from a cache or TCM access. Figure 4.52 shows the CFLR bit assignments, when it indicates a correctable cache error. Figure 4.52. CFLR - cache, bit assignments Table 4.54 shows the CFLR bit assignments, when it indicates a correctable cache error. Table 4.54. CFLR - cache, bit assignments Bits Name Function [31:30] - RAZ [29:26] Way Indicates the Way of the error. [25:24] Side Indicates the source of the error. For cache errors, this value is always 0b00. [23:14] - RAZ [13:5] Index Indicates the index of the location where the error occurred. [4:2] - RAZ [1:0] Type Indicates the type of access that caused the error: 0b00 = Instruction cache. 0b01 = Data cache. Figure 4.53 shows the CFLR bit assignments, when it indicates a correctable TCM error. Figure 4.53. CFLR - TCM, bit assignments Table 4.55 shows the CFLR bit assignments, when it indicates a correctable TCM error. Table 4.55. CFLR - TCM, bit assignments Bits Name Function [31:26] - RAZ [25:24] Side Indicates the source of the error: 0b01 = ATCM 0b10 = BTCM [23] - RAZ [22:3] Address Indicates the address in the TCM where the error occurred. [2] - RAZ [1:0] Type Indicates the type of access that caused the error: 0b00 = Instruction. 0b01 = Data. 0b10 = AXI slave 0b11 is unused. To access the CFLR, read or write CP15 with: MRC p15, 0, , c15, c3, 0 : Read CFLR MCR p15, 0, , c15, c3, 0 : Write CFLR -------------------------------- 4.3.31. Build Options Registers Note These registers are implemented from the r1pn releases of the processor. Attempting to access these registers in r0pn releases of the processor results in an Undefined Instruction exception. c15, Build Options 1 Register The Build Options 1 Register characteristics are: Purpose Reflects the build configuration options used to build the processor. Usage constraints The Build Options 1 Register is: a read-only register accessible in Privileged mode only Configurations Available in all processor configurations. Attributes See Table 4.56. Figure 4.54 shows the Build Options 1 Register bit assignments. Figure 4.54. Build Options 1 Register bit assignments Table 4.56 shows the Build Options 1 Register bit assignments. Table 4.56. Build Options 1 Register bit assignments Bits Name Function [31:12] TCM_HI_INIT_ADDR Default high address for the TCM. [11:0] - SBZ To access the Build Options 1 Register, read CP15 with: MRC p15, 0, , c15, c2, 0 ; read Build Options 1 Register c15, Build Options 2 Register The Build Options 2 Register characteristics are: Purpose Reflects the build configuration options used to build the processor. Usage constraints The Build Options 2 Register is: a read-only register accessible in Privileged mode only. Configurations Available in all processor configurations. Attributes See Table 4.57. Figure 4.55 shows the Build Options 2 Register bit assignments. Figure 4.55. Build Options 2 Register bit assignments Table 4.57 shows the Build Options 2 Register bit assignments. Table 4.57. Build Options 2 Register bit assignments Bits Name Function [31] DUAL_CORE[a] Indicates whether a second, redundant, copy of the processor logic and checking logic was instantiated: 0 = single core 1 = dual core. [30] DUAL_NCLK[a] Indicates whether an inverted clock is used for the redundant core: 0 = inverted clock not used 1 = inverted clock used. [29] NO_ICACHE Indicates whether the processor contains instruction cache: 0 = processor contains instruction cache 1 = processor does not contain instruction cache. [28] NO_DCACHE Indicates whether the processor contains data cache: 0 = processor contains data cache 1 = processor does not contain data cache. [27:26] ATCM_ES Indicates whether an error scheme is implemented on the ATCM interface: 00 = no error scheme 01 = 8-bit parity logic 10 = 32-bit error detection and correction 11 = 64-bit error detection and correction. [25:24] BTCM_ES Indicates whether an error scheme is implemented on the BTCM interface(s): 00 = no error scheme 01 = 8-bit parity logic 10 = 32-bit error detection and correction 11 = 64-bit error detection and correction. [23] NO_IE Indicates whether the processor supports big-endian instructions: 0 = processor supports big-endian instructions 1 = processor does not support big-endian instructions. [22] NO_FPU Indicates whether the processor contains a floating point unit: 0 = processor contains a floating point unit 1 = processor does not contain a floating point unit. [21] NO_MPU Indicates whether the processor contains a Memory Protection Unit (MPU): 0 = processor contains an MPU 1 = processor does not contain an MPU. [20] MPU_REGIONS Indicates the number of regions in the included MPU: 0 = 8 1 = 12. If the processor does not contain an MPU (bit [21] set to 0), this bit is set to 0. [19:17] BREAK_POINTS Indicates the number of break points implemented in the processor, minus 1. [16:14] WATCH_POINTS Indicates the number of watch points implemented in the processor, minus 1. [13] NO_A_TCM_INF Indicates whether the processor contains an ATCM port: 0 = processor contains ATCM port 1 = processor does not contain ATCM port. [12] NO_B0_TCM_INF Indicates whether the processor contains a B0TCM port: 0 = processor contains B0TCM port 1 = processor does not contain B0TCM port. [11] NO_B1_TCM_INF Indicates whether the processor contains a B1TCM port: 0 = processor contains B1TCM port 1 = processor does not contain B1TCM port. [10] TCMBUSPARITY Indicates whether the processor contains TCM address bus parity logic: 0 = processor does not contain TCM address bus parity logic 1 = processor contains TCM address bus parity logic. [9] NO_SLAVE Indicates whether the processor contains an AXI slave port: 0 = processor contains an AXI slave port 1 = processor does not contain an AXI slave port. [8:7] ICACHE_ES Indicates whether an error scheme is implemented for the instruction cache: 00 = no error scheme 01 = 8-bit parity error detection 11 = 64-bit error detection and correction. If the processor does not contain an Icache, these bits are set to 00. [6:5] DCACHE_ES Indicates whether an error scheme is implemented for the data cache: 00 = no error scheme 01 = 8-bit parity error detection 10 = 32-bit error detection and correction. If the processor does not contain a Dcache, these bits are set to0b00. [4] NO_HARD_ERROR_CACHE Indicates whether the processor contains cache for corrected TCM errors: 0 = processor contains TCM error cache 1 = processor does not contain TCM error cache. [3] AXIBUSPARITY Indicates whether the processor contains AXI bus parity logic. 0 = processor does not contain AXI bus parity logic 1 = processor contains AXI bus parity logic. [2:0] - Undefined. [a] The value of this bit is Unpredictable in revision r1p0 of the processor. To access the Build Options 2 Register, write CP15 with: MRC p15, 0, , c15, c2, 1 ; read Build Options 2 Register Table 4.23. SCTLR Register bit assignments Bits Name Function [31] IE Identifies little or big instruction endianness in use: 0 = little-endianness 1 = big-endianness. The primary input CFGIE defines the reset value. This bit is read-only. [30] TE Thumb exception enable: 0 = enable ARM exception generation 1 = enable Thumb exception generation. The primary input TEINIT defines the reset value. [29] AFE Access Flag Enable. On the processor this bit is SBZ. [28] TRE TEX Remap Enable. On the processor this bit is SBZ. [27] NMFI NMFI, non-maskable fast interrupt enable: 0 = Software can disable FIQs 1 = Software cannot disable FIQs. This bit is read-only. The configuration input CFGNMFI defines its value. [26] - SBZ. [25] EE Determines how the E bit in the CPSR is set on an exception: 0 = CPSR E bit is set to 0 on an exception 1 = CPSR E bit is set to 1 on an exception. The primary input CFGEE defines the reset value. [24] VE Configures vectored interrupt: 0 = exception vector address for IRQ is 0x00000018 or 0xFFFF0018. See V bit. 1 = VIC controller provides handler address for IRQ. The reset value of this bit is 0. [23:22] - SBO. [21] FI Fast Interrupts enable. On the processor Fast Interrupts are always enabled. This bit is SBO. [20] - SBZ. [19] DZ Divide by zero: 0 = do not generate an Undefined Instruction exception 1 = generate an Undefined Instruction exception. The reset value of this bit is 0. [18] - SBO. [17] BR MPU background region enable. [16] - SBO. [15] - SBZ. [14] RR Round-robin bit, controls replacement strategy for instruction and data caches: 0 = random replacement strategy 1 = round-robin replacement strategy. The reset value of this bit is 0. The processor always uses a random replacement strategy, regardless of the state of this bit. [13] V Determines the location of exception vectors: 0 = normal exception vectors selected, address range = 0x00000000-0x0000001C 1 = high exception vectors (HIVECS) selected, address range = 0xFFFF0000-0xFFFF001C. The primary input VINITHI defines the reset value. [12] I Enables L1 instruction cache: 0 = instruction caching disabled. This is the reset value. 1 = instruction caching enabled. If no instruction cache is implemented, then this bit is SBZ. [11] Z Branch prediction enable bit. The processor supports branch prediction. This bit is SBO. The ACTLR can control branch prediction, see c1, Auxiliary Control Register. [10:7] - SBZ. [6:3] - SBO. [2] C Enables L1 data cache: 0 = data caching disabled. This is the reset value. 1 = data caching enabled. If no data cache is implemented, then this bit is SBZ. [1] A Enables strict alignment of data to detect alignment faults in data accesses: 0 = strict alignment fault checking disabled. This is the reset value. 1 = strict alignment fault checking enabled. [0] M Enables the MPU: 0 = MPU disabled. This is the reset value. 1 = MPU enabled. If no MPU is implemented, this bit is SBZ. To use the SCTLR, ARM recommends that you use a read-modify-write technique. To access the SCTLR, read or write CP15 with: MRC p15, 0, , c1, c0, 0 ; Read SCTLR MCR p15, 0, , c1, c0, 0 ; Write SCTLR -----------------------------------