Update ARMv7-R system control register definitions from TRM
This commit is contained in:
parent
67604e661f
commit
b9feaf13b0
@ -47,22 +47,6 @@
|
||||
|
||||
#ifdef CONFIG_ARCH_FPU
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Private Data
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Private Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: up_copyarmstate
|
||||
*
|
||||
@ -76,7 +60,7 @@ void up_copyarmstate(uint32_t *dest, uint32_t *src)
|
||||
{
|
||||
int i;
|
||||
|
||||
/* In the Cortex-M model, the state is copied from the stack to the TCB,
|
||||
/* In the Cortex-R model, the state is copied from the stack to the TCB,
|
||||
* but only a reference is passed to get the state from the TCB. So the
|
||||
* following check avoids copying the TCB save area onto itself:
|
||||
*/
|
||||
|
@ -55,7 +55,12 @@
|
||||
#undef CPU_CACHE_ROUND_ROBIN
|
||||
#undef CPU_DCACHE_DISABLE
|
||||
#undef CPU_ICACHE_DISABLE
|
||||
#undef CPU_AFE_ENABLE
|
||||
#define CPU_SCTLR_CCP15BEN 1
|
||||
#define CPU_BACKGROUND_REGION 1
|
||||
#undef CPU_DIV0_FAULT
|
||||
#undef CPU_FAST_INTERRUPT
|
||||
#undef CPU_IMPL_VECTORS
|
||||
#undef CPU_NONMASKABLE_FIQ
|
||||
|
||||
/* There are three operational memory configurations:
|
||||
*
|
||||
@ -145,32 +150,72 @@ __start:
|
||||
* example, we get here via a bootloader and the control register is in some
|
||||
* unknown state.
|
||||
*
|
||||
* SCTLR_A Bit 1: Strict alignment disabled (reset value)
|
||||
* SCTLR_C Bit 2: DCache disabled (reset value)
|
||||
* SCTLR_A Bit 1: Strict alignment disabled
|
||||
* SCTLR_C Bit 2: DCache disabled
|
||||
* SCTLR_CCP15BEN Bit 5: CP15 barrier enable
|
||||
* SCTLR_B Bit 7: Should be zero on ARMv7R */
|
||||
*
|
||||
* SCTLR_SW Bit 10: SWP/SWPB not enabled (reset value)
|
||||
* SCTLR_I Bit 12: ICache disabled (reset value)
|
||||
* SCTLR_V Bit 13: Assume low vectors (reset value)
|
||||
* SCTLR_RR Bit 14: The Cortex-A5 processor only supports a fixed random
|
||||
* replacement strategy.
|
||||
* SCTLR_HA Bit 17: Not supported by A5
|
||||
* SCTLR_SW Bit 10: SWP/SWPB not enabled
|
||||
* SCTLR_I Bit 12: ICache disabled
|
||||
* SCTLR_V Bit 13: Assume low vectors
|
||||
* SCTLR_RR Bit 14: Round-robin replacement strategy.
|
||||
*
|
||||
* SCTLR_EE Bit 25: Little endian (reset value).
|
||||
* SCTLR_TRE Bit 28: No memory region remapping (reset value)
|
||||
* SCTLR_AFE Bit 29: Full, legacy access permissions behavior (reset value).
|
||||
* SCTLR_TE Bit 30: All exceptions handled in ARM state (reset value).
|
||||
* SCTLR_BR Bit 17: Background Region bit
|
||||
* SCTLR_DZ Bit 19: Divide by Zero fault enable bit
|
||||
* SCTLR_FI Bit 21: Fast interrupts configuration enable bit
|
||||
* SCTLR_U Bit 22: Unaligned access model (always one)
|
||||
*
|
||||
* SCTLR_VE Bit 24: Interrupt Vectors Enable bit
|
||||
* SCTLR_EE Bit 25: Little endian.
|
||||
* SCTLR_NMFI Bit 27: Non-maskable FIQ (NMFI) support
|
||||
* SCTLR_TE Bit 30: All exceptions handled in ARM state.
|
||||
* SCTLR_IE Bit 31: Instruction endian-ness.
|
||||
*/
|
||||
|
||||
bic r0, r0, #(SCTLR_A | SCTLR_C)
|
||||
bic r0, r0, #(SCTLR_SW | SCTLR_I | SCTLR_V | SCTLR_RR | SCTLR_HA)
|
||||
bic r0, r0, #(SCTLR_EE | SCTLR_TRE | SCTLR_AFE | SCTLR_TE)
|
||||
/* Clear all configurable bits */
|
||||
|
||||
/* Set bits to enable the MMU
|
||||
bic r0, r0, #(SCTLR_A | SCTLR_C | SCTLR_CCP15BEN | SCTLR_B)
|
||||
bic r0, r0, #(SCTLR_SW | SCTLR_I | SCTLR_V | SCTLR_RR)
|
||||
bic r0, r0, #(SCTLR_BR | SCTLR_DZ | SCTLR_FI | SCTLR_U)
|
||||
bic r0, r0, #(SCTLR_VE | SCTLR_EE | SCTLR_NMFI | SCTLR_TE | SCLTR_IE)
|
||||
|
||||
/* Set configured bits */
|
||||
|
||||
#ifdef CPU_ALIGNMENT_TRAP
|
||||
/* Alignment abort enable
|
||||
*
|
||||
* SCTLR_Z Bit 11: Program flow prediction control
|
||||
* SCTLR_A Bit 1: Strict alignment enabled
|
||||
*/
|
||||
|
||||
orr r0, r0, #(SCTLR_Z)
|
||||
orr r0, r0, #(SCTLR_A)
|
||||
#endif
|
||||
|
||||
#ifndef CPU_DCACHE_DISABLE
|
||||
/* Dcache enable
|
||||
*
|
||||
* SCTLR_C Bit 2: DCache enable
|
||||
*/
|
||||
|
||||
orr r0, r0, #(SCTLR_C)
|
||||
#endif
|
||||
|
||||
#define CPU_SCTLR_CCP15BEN 1
|
||||
/* Enable memory barriers
|
||||
*
|
||||
* SCTLR_CCP15BEN Bit 5: CP15 barrier enable
|
||||
*/
|
||||
|
||||
orr r0, r0, #(SCTLR_CCP15BEN)
|
||||
#endif
|
||||
|
||||
#ifndef CPU_ICACHE_DISABLE
|
||||
/* Icache enable
|
||||
*
|
||||
* SCTLR_I Bit 12: ICache enable
|
||||
*/
|
||||
|
||||
orr r0, r0, #(SCTLR_I)
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_ARCH_LOWVECTORS
|
||||
/* Position vectors to 0xffff0000 if so configured.
|
||||
@ -184,50 +229,55 @@ __start:
|
||||
#ifdef CPU_CACHE_ROUND_ROBIN
|
||||
/* Round Robin cache replacement
|
||||
*
|
||||
* SCTLR_RR Bit 14: The Cortex-A5 processor only supports a fixed random
|
||||
* replacement strategy.
|
||||
* SCTLR_RR Bit 14: Round-robin replacement strategy.
|
||||
*/
|
||||
|
||||
orr r0, r0, #(SCTLR_RR)
|
||||
#endif
|
||||
|
||||
#ifndef CPU_DCACHE_DISABLE
|
||||
/* Dcache enable
|
||||
#define CPU_BACKGROUND_REGION 1
|
||||
/* Allow PL1 access to back region when MPU is enabled
|
||||
*
|
||||
* SCTLR_C Bit 2: DCache enable
|
||||
* SCTLR_BR Bit 17: Background Region bit
|
||||
*/
|
||||
|
||||
orr r0, r0, #(SCTLR_C)
|
||||
orr r0, r0, #(SCTLR_BR)
|
||||
#endif
|
||||
|
||||
#ifndef CPU_ICACHE_DISABLE
|
||||
/* Icache enable
|
||||
#ifdef CPU_DIV0_FAULT
|
||||
/* Enable divide by zero faults
|
||||
*
|
||||
* SCTLR_I Bit 12: ICache enable
|
||||
* SCTLR_DZ Bit 19: Divide by Zero fault enable bit
|
||||
*/
|
||||
|
||||
orr r0, r0, #(SCTLR_I)
|
||||
orr r0, r0, #(SCTLR_DZ)
|
||||
#endif
|
||||
|
||||
#ifdef CPU_ALIGNMENT_TRAP
|
||||
/* Alignment abort enable
|
||||
#ifdef CPU_FAST_INTERRUPT
|
||||
/* Fast interrupts configuration enable bit
|
||||
*
|
||||
* SCTLR_A Bit 1: Strict alignment enabled
|
||||
* SCTLR_FI Bit 21: Fast interrupts configuration enable bit
|
||||
*/
|
||||
|
||||
orr r0, r0, #(SCTLR_A)
|
||||
orr r0, r0, #(SCTLR_FI)
|
||||
#endif
|
||||
|
||||
#ifdef CPU_AFE_ENABLE
|
||||
/* AP[0:2] Permissions model
|
||||
#ifdef CPU_IMPL_VECTORS
|
||||
/* Implementation defined interrupt vectors
|
||||
*
|
||||
* SCTLR_AFE Bit 29: Full, legacy access permissions behavior (reset value).
|
||||
*
|
||||
* When AFE=1, the page table AP[0] is used as an access flag and AP[2:1]
|
||||
* control. When AFE=0, AP[2:0] control access permissions.
|
||||
* SCTLR_VE Bit 24: Interrupt Vectors Enable bit
|
||||
*/
|
||||
|
||||
orr r0, r0, #(SCTLR_AFE)
|
||||
orr r0, r0, #(SCTLR_VE)
|
||||
#endif
|
||||
|
||||
#ifdef CPU_NONMASKABLE_FIQ
|
||||
/* Non-maskable FIQ support
|
||||
*
|
||||
* SCTLR_NMFI Bit 27: Non-maskable FIQ (NMFI) support
|
||||
*/
|
||||
|
||||
orr r0, r0, #(SCTLR_NMFI)
|
||||
#endif
|
||||
|
||||
/* Then write the configured control register */
|
||||
|
@ -74,8 +74,8 @@
|
||||
*
|
||||
* Description:
|
||||
* Shouldn't happen. This exception handler is in a separate file from
|
||||
* other vector handlers because some processors (e.g., Cortex-A5) do not
|
||||
* support the Address Exception vector.
|
||||
* other vector handlers because some processors do not support the
|
||||
* Address Exception vector.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
@ -7,9 +7,7 @@
|
||||
*
|
||||
* References:
|
||||
*
|
||||
* "Cortex-A5™ MPCore, Technical Reference Manual", Revision: r0p1, Copyright © 2010
|
||||
* ARM. All rights reserved. ARM DDI 0434B (ID101810)
|
||||
* "ARM® Architecture Reference Manual, ARMv7-A and ARMv7-R edition", Copyright ©
|
||||
* "ARM Architecture Reference Manual, ARMv7-A and ARMv7-R edition", Copyright
|
||||
* 1996-1998, 2000, 2004-2012 ARM. All rights reserved. ARM DDI 0406C.b (ID072512)
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -51,172 +49,317 @@
|
||||
/************************************************************************************
|
||||
* Pre-processor Definitions
|
||||
************************************************************************************/
|
||||
/* Reference: Cortex-A5™ MPCore Paragraph 4.2, "Register summary." */
|
||||
/* CP15 c0 Registers ****************************************************************/
|
||||
|
||||
/* Main ID Register (MIDR) */
|
||||
/* TODO: To be provided */
|
||||
|
||||
/* Cache Type Register (CTR) */
|
||||
/* TODO: To be provided */
|
||||
|
||||
/* TCM Type Register
|
||||
*
|
||||
* The Cortex-A5 MPCore processor does not implement instruction or data Tightly
|
||||
* Coupled Memory (TCM), so this register always Reads-As-Zero (RAZ).
|
||||
*
|
||||
* TLB Type Register
|
||||
*
|
||||
* The Cortex-A5 MPCore processor does not implement instruction or data Tightly
|
||||
* CoupledMemory (TCM), so this register always Reads-As-Zero (RAZ).
|
||||
/* Main ID Register (MIDR): CRn=c0, opc1=0, CRm=c0, opc2=0
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* Multiprocessor Affinity Register (MPIDR) */
|
||||
/* TODO: To be provided */
|
||||
/* Cache Type Register (CTR): CRn=c0, opc1=0, CRm=c0, opc2=1
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* Processor Feature Register 0 (ID_PFR0) */
|
||||
/* TODO: To be provided */
|
||||
/* TCM Type Register (TCMTR): CRn=c0, opc1=0, CRm=c0, opc2=2
|
||||
* Details implementation defined.
|
||||
*/
|
||||
|
||||
/* Processor Feature Register 1 (ID_PFR1) */
|
||||
/* TODO: To be provided */
|
||||
/* Aliases of Main ID register (MIDR): CRn=c0, opc1=0, CRm=c0, opc2=3,7
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* Debug Feature Register 0 (ID_DFR0) */
|
||||
/* TODO: To be provided */
|
||||
/* MPU Type Register (MPUIR): CRn=c0, opc1=0, CRm=c0, opc2=4
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* Auxiliary Feature Register 0 (ID_AFR0) */
|
||||
/* TODO: To be provided */
|
||||
/* Multiprocessor Affinity Register (MPIDR): CRn=c0, opc1=0, CRm=c0, opc2=5
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* Memory Model Features Register 0 (ID_MMFR0) */
|
||||
/* Memory Model Features Register 1 (ID_MMFR1) */
|
||||
/* Memory Model Features Register 2 (ID_MMFR2) */
|
||||
/* Memory Model Features Register 3 (ID_MMFR3) */
|
||||
/* TODO: To be provided */
|
||||
/* Revision ID Register (REVIDR): CRn=c0, opc1=0, CRm=c0, opc2=6
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* Instruction Set Attributes Register 0 (ID_ISAR0) */
|
||||
/* Instruction Set Attributes Register 1 (ID_ISAR1) */
|
||||
/* Instruction Set Attributes Register 2 (ID_ISAR2) */
|
||||
/* Instruction Set Attributes Register 3 (ID_ISAR3) */
|
||||
/* Instruction Set Attributes Register 4 (ID_ISAR4) */
|
||||
/* Instruction Set Attributes Register 5 (ID_ISAR5) */
|
||||
/* Instruction Set Attributes Register 6-7 (ID_ISAR6-7). Reserved. */
|
||||
/* TODO: Others to be provided */
|
||||
/* Processor Feature Register 0 (ID_PFR0): CRn=c0, opc1=0, CRm=c1, opc2=0
|
||||
* Processor Feature Register 1 (ID_PFR1): CRn=c0, opc1=0, CRm=c1, opc2=1
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* Cache Size Identification Register (CCSIDR) */
|
||||
/* TODO: To be provided */
|
||||
/* Debug Feature Register 0 (ID_DFR0): CRn=c0, opc1=0, CRm=c1, opc2=2
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* Cache Level ID Register (CLIDR) */
|
||||
/* TODO: To be provided */
|
||||
/* Auxiliary Feature Register 0 (ID_AFR0): CRn=c0, opc1=0, CRm=c1, opc2=3
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* Auxiliary ID Register (AIDR) */
|
||||
/* TODO: To be provided */
|
||||
/* Memory Model Features Register 0 (ID_MMFR0): CRn=c0, opc1=0, CRm=c1, opc2=4
|
||||
* Memory Model Features Register 1 (ID_MMFR1): CRn=c0, opc1=0, CRm=c1, opc2=5
|
||||
* Memory Model Features Register 2 (ID_MMFR2): CRn=c0, opc1=0, CRm=c1, opc2=6
|
||||
* Memory Model Features Register 3 (ID_MMFR3): CRn=c0, opc1=0, CRm=c1, opc2=7
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* Cache Size Selection Register (CSSELR) */
|
||||
/* TODO: To be provided */
|
||||
/* Instruction Set Attributes Register 0 (ID_ISAR0): CRn=c0, opc1=0, CRm=c2, opc2=0
|
||||
* Instruction Set Attributes Register 1 (ID_ISAR1): CRn=c0, opc1=0, CRm=c2, opc2=1
|
||||
* Instruction Set Attributes Register 2 (ID_ISAR2): CRn=c0, opc1=0, CRm=c2, opc2=2
|
||||
* Instruction Set Attributes Register 3 (ID_ISAR3): CRn=c0, opc1=0, CRm=c2, opc2=3
|
||||
* Instruction Set Attributes Register 4 (ID_ISAR4): CRn=c0, opc1=0, CRm=c2, opc2=4
|
||||
* Instruction Set Attributes Register 5 (ID_ISAR5): CRn=c0, opc1=0, CRm=c2, opc2=5
|
||||
* Instruction Set Attributes Register 6-7 (ID_ISAR6-7). Reserved.
|
||||
* TODO: Others to be provided
|
||||
*/
|
||||
|
||||
/* System Control Register (SCTLR)
|
||||
*
|
||||
* NOTES:
|
||||
* (1) Always enabled on A5
|
||||
* (2) Not available on A5
|
||||
/* Reserved: CRn=c0, opc1=0, CRm=c3-c7, opc2=* */
|
||||
|
||||
/* Cache Size Identification Register (CCSIDR): CRn=c0, opc1=1, CRm=c0, opc2=0
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* Cache Level ID Register (CLIDR): CRn=c0, opc1=1, CRm=c0, opc2=1
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* Auxiliary ID Register (AIDR): CRn=c0, opc1=1, CRm=c0, opc2=7
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* Cache Size Selection Register (CSSELR): CRn=c0, opc1=2, CRm=c0, opc2=0
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* CP15 c1 Registers ****************************************************************/
|
||||
/* System Control Register (SCTLR): CRn=c1, opc1=0, CRm=c0, opc2=0
|
||||
*/
|
||||
|
||||
#define SCTLR_A (1 << 1) /* Bit 1: Enables strict alignment of data */
|
||||
#define SCTLR_C (1 << 2) /* Bit 2: Determines if data can be cached */
|
||||
/* Bits 3-9: Reserved */
|
||||
/* Bits 3-4: Reserved */
|
||||
#define SCTLR_CCP15BEN (1 << 5) /* Bit 5: CP15 barrier enable */
|
||||
/* Bit 6: Reserved */
|
||||
#define SCTLR_B (1 << 7) /* Bit 7: Should be zero on ARMv7R */
|
||||
/* Bits 8-9: Reserved */
|
||||
#define SCTLR_SW (1 << 10) /* Bit 10: SWP/SWPB Enable bit */
|
||||
#define SCTLR_Z (1 << 11) /* Bit 11: Program flow prediction control (1) */
|
||||
#define SCTLR_Z (1 << 11) /* Bit 11: Program flow prediction control */
|
||||
#define SCTLR_I (1 << 12) /* Bit 12: Determines if instructions can be cached */
|
||||
#define SCTLR_V (1 << 13) /* Bit 13: Vectors bit */
|
||||
#define SCTLR_RR (1 << 14) /* Bit 14: Cache replacement strategy (2) */
|
||||
#define SCTLR_RR (1 << 14) /* Bit 14: Cache replacement strategy */
|
||||
/* Bits 15-16: Reserved */
|
||||
#define SCTLR_HA (1 << 17) /* Bit 17: Hardware management access disabled (2) */
|
||||
/* Bits 18-24: Reserved */
|
||||
#define SCTLR_BR (1 << 17) /* Bit 17: Background Region bit */
|
||||
/* Bit 18: Reserved */
|
||||
#define SCTLR_DZ (1 << 19) /* Bit 19: Divide by Zero fault enable bit */
|
||||
/* Bit 20: Reserved */
|
||||
#define SCTLR_FI (1 << 21) /* Bit 21: Fast interrupts configuration enable bit */
|
||||
#define SCTLR_U (1 << 22) /* Bit 22: Unaligned access model (always one) */
|
||||
#define SCTLR_VE (1 << 24) /* Bit 24: Interrupt Vectors Enable bit */
|
||||
#define SCTLR_EE (1 << 25) /* Bit 25: Determines the value the CPSR.E */
|
||||
/* Bits 26-27: Reserved */
|
||||
#define SCTLR_TRE (1 << 28) /* Bit 28: TEX remap */
|
||||
#define SCTLR_AFE (1 << 29) /* Bit 29: Access Flag Enable bit */
|
||||
#define SCTLR_NMFI (1 << 27) /* Bit 27: Non-maskable FIQ (NMFI) support */
|
||||
/* Bits 28-29: Reserved */
|
||||
#define SCTLR_TE (1 << 30) /* Bit 30: Thumb exception enable */
|
||||
/* Bit 31: Reserved */
|
||||
#define SCTLR_IE (1 << 31) /* Bit 31: Instruction endian-ness */
|
||||
|
||||
/* Auxiliary Control Register (ACTLR) */
|
||||
/* TODO: To be provided */
|
||||
/* Auxiliary Control Register (ACTLR): CRn=c1, opc1=0, CRm=c0, opc2=1
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* Coprocessor Access Control Register (CPACR) */
|
||||
/* TODO: To be provided */
|
||||
/* Coprocessor Access Control Register (CPACR): CRn=c1, opc1=0, CRm=c0, opc2=2
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* Secure Configuration Register (SCR) */
|
||||
/* TODO: To be provided */
|
||||
/* CP15 c2-c4 Registers *************************************************************/
|
||||
/* Not used on ARMv7R */
|
||||
|
||||
/* Secure Debug Enable Register (SDER) */
|
||||
/* TODO: To be provided */
|
||||
/* CP15 c5 Registers ****************************************************************/
|
||||
/* Data Fault Status Register (DFSR): CRn=c5, opc1=0, CRm=c0, opc2=0
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* Non-secure Access Control Register (NSACR) */
|
||||
/* Instruction Fault Status Register (IFSR): CRn=c5, opc1=0, CRm=c0, opc2=1
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* Bits 0-9: Reserved */
|
||||
#define NSACR_CP10 (1 << 10) /* Bit 10: Permission to access coprocessor 10 */
|
||||
#define NSACR_CP11 (1 << 11) /* Bit 11: Permission to access coprocessor 11 */
|
||||
/* Bits 12-13: Reserved */
|
||||
#define NSACR_NSD32DIS (1 << 14) /* Bit 14: Disable the Non-secure use of VFP D16-D31 */
|
||||
#define NSACR_NSASEDIS (1 << 15) /* Bit 15: Disable Non-secure Advanced SIMD Extension */
|
||||
/* Bits 16-17: Reserved */
|
||||
#define NSACR_NSSMP (1 << 18) /* Bit 18: ACR SMP bit writable */
|
||||
/* Bits 19-31: Reserved */
|
||||
/* Auxiliary DFSR (ADFSR): CRn=c5, opc1=0, CRm=c1, opc2=0
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* Virtualization Control Register (VCR) */
|
||||
/* TODO: To be provided */
|
||||
/* Auxiliary IFSR (AIFSR): CRn=c5, opc1=0, CRm=c1, opc2=1
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* Auxiliary Data Fault Status Register (ADFSR). Not used in this implementation. */
|
||||
/* CP15 c6 Registers ****************************************************************/
|
||||
|
||||
/* Data Fault Address Register(DFAR)
|
||||
/* Data Fault Address Register(DFAR): CRn=c6, opc1=0, CRm=c0, opc2=0
|
||||
*
|
||||
* Holds the MVA of the faulting address when a synchronous fault occurs
|
||||
*
|
||||
* Instruction Fault Address Register(IFAR)
|
||||
*/
|
||||
|
||||
/* Instruction Fault Address Register(IFAR): CRn=c6, opc1=0, CRm=c0, opc2=1
|
||||
*
|
||||
* Holds the MVA of the faulting address of the instruction that caused a prefetch
|
||||
* abort.
|
||||
*
|
||||
* NOP Register
|
||||
*
|
||||
* The use of this register is optional and deprecated. Use the NOP instruction
|
||||
* instead.
|
||||
*
|
||||
* Physical Address Register (PAR)
|
||||
*
|
||||
* Holds:
|
||||
* - the PA after a successful translation
|
||||
* - the source of the abort for an unsuccessful translation
|
||||
*
|
||||
* Instruction Synchronization Barrier
|
||||
*
|
||||
* The use of ISB is optional and deprecated. Use the instruction ISB instead.
|
||||
*
|
||||
* Data Memory Barrier
|
||||
* The use of DMB is deprecated and, on Cortex-A5 MPCore, behaves as NOP. Use the
|
||||
* instruction DMB instead.
|
||||
*/
|
||||
|
||||
/* Vector Base Address Register (VBAR) */
|
||||
/* Data Region Base Address Register (DRBAR): CRn=c6, opc1=0, CRm=c1, opc2=0
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
#define VBAR_MASK (0xffffffe0)
|
||||
/* Instruction Region Base Address Register (IRBAR): CRn=c6, opc1=0, CRm=c1, opc2=1
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* Monitor Vector Base Address Register (MVBAR) */
|
||||
/* TODO: To be provided */
|
||||
/* Data Region Size and Enable Register (DRSR): CRn=c6, opc1=0, CRm=c1, opc2=2
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* Interrupt Status Register (ISR) */
|
||||
/* TODO: To be provided */
|
||||
/* Instruction Region Size and Enable Register (IRSR): CRn=c6, opc1=0, CRm=c1, opc2=3
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* Virtualization Interrupt Register (VIR) */
|
||||
/* TODO: To be provided */
|
||||
/* Data Region Access Control Register (DRACR): CRn=c6, opc1=0, CRm=c1, opc2=4
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* Context ID Register (CONTEXTIDR) */
|
||||
/* Instruction Region Access Control Register (IRACR): CRn=c6, opc1=0, CRm=c1, opc2=5
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
#define CONTEXTIDR_ASID_SHIFT (0) /* Bits 0-7: Address Space Identifier */
|
||||
#define CONTEXTIDR_ASID_MASK (0xff << CONTEXTIDR_ASID_SHIFT)
|
||||
#define CONTEXTIDR_PROCID_SHIFT (8) /* Bits 8-31: Process Identifier */
|
||||
#define CONTEXTIDR_PROCID_MASK (0x00ffffff << CONTEXTIDR_PROCID_SHIFT)
|
||||
/* MPU Region Number Register (RGNR): CRn=c6, opc1=0, CRm=c2, opc2=0
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* Configuration Base Address Register (CBAR) */
|
||||
/* TODO: To be provided */
|
||||
/* CP15 c7 Registers ****************************************************************/
|
||||
/* See cp15_cacheops.h */
|
||||
|
||||
/* CP15 c8 Registers ****************************************************************/
|
||||
/* Not used on ARMv7R */
|
||||
|
||||
/* CP15 c9 Registers ****************************************************************/
|
||||
/* 32-bit Performance Monitors Control Register (PMCR): CRn=c9, opc1=0, CRm=c0, opc2=0
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* 32-bit Performance Monitors Count Enable Set register (PMCNTENSET): CRn=c9, opc1=0, CRm=c12, opc2=1
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* 32-bit Performance Monitors Count Enable Clear register (PMCNTENCLR): CRn=c9, opc1=0, CRm=c12, opc2=2
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* 32-bit Performance Monitors Overflow Flag Status Register (PMOVSR): CRn=c9, opc1=0, CRm=c12, opc2=3
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* 32-bit Performance Monitors Software Increment register (PMSWINC): CRn=c9, opc1=0, CRm=c12, opc2=4
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* 32-bit Performance Monitors Event Counter Selection Register (PMSELR): CRn=c9, opc1=0, CRm=c12, opc2=5
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* 32-bit Performance Monitors Common Event Identification (PMCEID0): CRn=c9, opc1=0, CRm=c12, opc2=6
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* 32-bit Performance Monitors Common Event Identification (PMCEID1): CRn=c9, opc1=0, CRm=c12, opc2=7
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* 32-bit Performance Monitors Cycle Count Register (PMCCNTR): CRn=c9, opc1=0, CRm=c13, opc2=0
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* 32-bit Performance Monitors Event Type Select Register (PMXEVTYPER): CRn=c9, opc1=0, CRm=c13, opc2=1
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* 32-bit Performance Monitors Event Count Register (PMXEVCNTR): CRn=c9, opc1=0, CRm=c13, opc2=2
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* 32-bit Performance Monitors User Enable Register (PMUSERENR): CRn=c9, opc1=0, CRm=c14, opc2=0
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* 32-bit Performance Monitors Interrupt Enable Set register (PMINTENSET): CRn=c9, opc1=0, CRm=c14, opc2=1
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* 32-bit Performance Monitors Interrupt Enable Clear register (PMINTENCLR): CRn=c9, opc1=0, CRm=c14, opc2=2
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* CP15 c10 Registers ***************************************************************/
|
||||
/* Not used on ARMv7R */
|
||||
|
||||
/* CP15 c11 Registers ***************************************************************/
|
||||
/* Reserved for implementation defined DMA functions */
|
||||
|
||||
/* CP15 c12 Registers ***************************************************************/
|
||||
/* Not used on ARMv7R */
|
||||
|
||||
/* CP15 c13 Registers ***************************************************************/
|
||||
|
||||
/* Context ID Register (CONTEXTIDR): CRn=c13, opc1=0, CRm=c0, opc2=1
|
||||
* 32-Bit ContextID value.
|
||||
*/
|
||||
|
||||
/* User Read/Write (TPIDRURW): CRn=c13, opc1=0, CRm=c0, opc2=2
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* User Read Only (TPIDRURO): CRn=c13, opc1=0, CRm=c0, opc2=3
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* PL1 only (TPIDRPRW): CRn=c13, opc1=0, CRm=c0, opc2=4
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* CP15 c14 Registers ***************************************************************/
|
||||
|
||||
/* Counter Frequency register (CNTFRQ): CRn=c14, opc1=0, CRm=c0, opc2=0
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* Timer PL1 Control register (CNTKCTL): CRn=c14, opc1=0, CRm=c1, opc2=0
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* PL1 Physical TimerValue register (CNTP_TVAL): CRn=c14, opc1=0, CRm=c2, opc2=0
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* PL1 Physical Timer Control register (CNTP_CTL): CRn=c14, opc1=0, CRm=c2, opc2=0
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* Virtual TimerValue register (CNTV_TVAL): CRn=c14, opc1=0, CRm=c3, opc2=0
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* Virtual Timer Control register (CNTV_CTL): CRn=c14, opc1=0, CRm=c3, opc2=0
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* 64-bit Physical Count register (CNTPCT): CRn=c14, opc1=0, CRm=c14, opc2=n
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* Virtual Count register (CNTVCT): CRn=c14, opc1=1, CRm=c14, opc2=n
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* PL1 Physical Timer CompareValue register (CNTP_CVAL): CRn=c14, opc1=2, CRm=c14, opc2=n
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* Virtual Timer CompareValue register (CNTV_CVAL): CRn=c14, opc1=3, CRm=c14, opc2=n
|
||||
* TODO: To be provided
|
||||
*/
|
||||
|
||||
/* CP15 c15 Registers ***************************************************************/
|
||||
/* Implementation defined */
|
||||
|
||||
/************************************************************************************
|
||||
* Assemby Macros
|
||||
|
@ -72,7 +72,7 @@
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* Cortex M3 system calls ***********************************************************/
|
||||
/* Cortex-R system calls ************************************************************/
|
||||
|
||||
/* SYS call 0:
|
||||
*
|
||||
|
Loading…
x
Reference in New Issue
Block a user