|
|
@@ -277,6 +277,29 @@ The macros <b>_VAL2FLD(field, value)</b> and <b>_FLD2VAL(field, value)</b> enabl
|
|
|
/**
|
|
|
\defgroup CMSIS_SCTLR Core Register SCTLR
|
|
|
\brief Type definitions and defines for SCTLR
|
|
|
+\details Provides the top level control of the system, including its memory system.
|
|
|
+
|
|
|
+| Bits | Name | Function |
|
|
|
+| :------ | :------------ | :------------------------------------------------------------ |
|
|
|
+| [31] | - | Reserved. |
|
|
|
+| [30] | TE | Thumb Exception enable. |
|
|
|
+| [29] | AFE | Access flag enable bit. |
|
|
|
+| [28] | TRE | TEX remap enable bit. |
|
|
|
+| [27:26] | - | Reserved. |
|
|
|
+| [25] | EE | Exception Endianness bit. |
|
|
|
+| [24:21] | - | Reserved. |
|
|
|
+| [20] | UWXN | Unprivileged write permission implies PL1 Execute Never (XN). |
|
|
|
+| [19] | WXN | Write permission implies Execute Never (XN). |
|
|
|
+| [18:14] | - | Reserved. |
|
|
|
+| [13] | V | Vectors bit. |
|
|
|
+| [12] | I | Instruction cache enable bit. |
|
|
|
+| [11] | Z | Branch prediction enable bit. |
|
|
|
+| [10] | SW | SWP and SWPB enable bit. |
|
|
|
+| [9:3] | - | Reserved. |
|
|
|
+| [2] | C | Cache enable bit. |
|
|
|
+| [1] | A | Alignment bit. |
|
|
|
+| [0] | M | Address translation enable bit. |
|
|
|
+
|
|
|
@{
|
|
|
*/
|
|
|
/**
|
|
|
@@ -372,6 +395,7 @@ The macros <b>_VAL2FLD(field, value)</b> and <b>_FLD2VAL(field, value)</b> enabl
|
|
|
\def ISR_I_Pos
|
|
|
\def ISR_F_Pos
|
|
|
*/
|
|
|
+
|
|
|
/** @} */
|
|
|
/* end group CMSIS_ISR */
|
|
|
|
|
|
@@ -411,21 +435,34 @@ Hardware Abstraction Layer.
|
|
|
\fn __STATIC_INLINE void L1C_CleanDCacheMVA(void *va)
|
|
|
\fn __STATIC_INLINE void L1C_InvalidateDCacheMVA(void *va)
|
|
|
\fn __STATIC_INLINE void L1C_CleanInvalidateDCacheMVA(void *va)
|
|
|
+
|
|
|
\fn __STATIC_INLINE void L1C_CleanInvalidateCache(uint32_t op)
|
|
|
+\details
|
|
|
+Generic mechanism for cleaning/invalidating the entire data or unified cache to the point of coherency.
|
|
|
+
|
|
|
\fn __STATIC_INLINE void L1C_InvalidateDCacheAll(void)
|
|
|
\fn __STATIC_INLINE void L1C_CleanDCacheAll(void)
|
|
|
\fn __STATIC_INLINE void L1C_CleanInvalidateDCacheAll(void)
|
|
|
-\fn __STATIC_INLINE __ASM void __L1C_CleanInvalidateCache(uint32_t op)
|
|
|
+\fn __STATIC_INLINE __ASM void __L1C_CleanInvalidateCache(uint32_t op)
|
|
|
+\details
|
|
|
+Generic mechanism for cleaning/invalidating the entire data or unified cache to the point of coherency.
|
|
|
+
|
|
|
+The parameter \b op defines which cleaning/invalidation strategy should be used:
|
|
|
+ - 0 - Cache is invalidated using DCISW register.
|
|
|
+ - 1 - Cache is cleaned using DCCSW register.
|
|
|
+ - other - Cache is invalidated and cleaned using DCCISW register.
|
|
|
@}
|
|
|
*/
|
|
|
|
|
|
/* ########################## L2 Cache functions ################################# */
|
|
|
|
|
|
-//Cache Sync operation
|
|
|
/**
|
|
|
\defgroup L2_chache_functions L2C-310 Cache Controller Functions
|
|
|
\details Functions to controll the Level 2 Cache.
|
|
|
-@{
|
|
|
+*/
|
|
|
+/** @{ */
|
|
|
+
|
|
|
+/**
|
|
|
\struct L2C_310_TypeDef
|
|
|
\def L2C_310
|
|
|
\fn __STATIC_INLINE void L2C_Sync(void)
|
|
|
@@ -438,9 +475,10 @@ Hardware Abstraction Layer.
|
|
|
\fn __STATIC_INLINE void L2C_InvPa (void *pa)
|
|
|
\fn __STATIC_INLINE void L2C_CleanPa (void *pa)
|
|
|
\fn __STATIC_INLINE void L2C_CleanInvPa (void *pa)
|
|
|
-@}
|
|
|
*/
|
|
|
|
|
|
+/** @} */
|
|
|
+
|
|
|
/* ########################## GIC functions ###################################### */
|
|
|
/**
|
|
|
\defgroup GIC_functions Generic Interrupt Controller Functions
|
|
|
@@ -449,13 +487,11 @@ The Generic Interrupt Controller Functions grants access to the configuration, c
|
|
|
status registers of an ARM Generic Interrupt Controller (ARM GIC). For detailed informations
|
|
|
about its capabilities and usage constraints refere to the
|
|
|
<a href="http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ihi0048b/index.html">ARM Generic Interrupt Controller Architecture Specificaton</a>.
|
|
|
+*/
|
|
|
|
|
|
-@{
|
|
|
-\struct GICDistributor_Type
|
|
|
-\def GICDistributor
|
|
|
-\struct GICInterface_Type
|
|
|
-\def GICInterface
|
|
|
+/** @{ */
|
|
|
|
|
|
+/**
|
|
|
\fn __STATIC_INLINE void GIC_EnableDistributor(void)
|
|
|
\details Globally enable the forwarding of interrupts to the CPU interfaces.
|
|
|
|
|
|
@@ -633,443 +669,400 @@ Initializes the distributor and the cpu interface.
|
|
|
\see
|
|
|
GIC_DistInit\n
|
|
|
GIC_CPUInterfaceInit
|
|
|
-@}
|
|
|
+*/
|
|
|
|
|
|
-@{
|
|
|
-\var __IOM uint32_t GICDistributor_Type::D_CTLR
|
|
|
-\details Distributor Control Register
|
|
|
+/**
|
|
|
+\def GICDistributor
|
|
|
+\struct GICDistributor_Type
|
|
|
+*/
|
|
|
|
|
|
-When access is Secure, in a system that supports two Security states:
|
|
|
+/**
|
|
|
+\def GICInterface
|
|
|
+\struct GICInterface_Type
|
|
|
+*/
|
|
|
|
|
|
-| Bits | Name | Function |
|
|
|
-| :------ | :------------ | :------------------------------------------------------------- |
|
|
|
-| [31] | RWP | Indicates whether a register write is in progress or not. |
|
|
|
-| [30:8] | - | Reserved. |
|
|
|
-| [7] | EINWF | Enable 1 of N Wakeup Functionality, if available. |
|
|
|
-| [6] | DS | Disable Security. |
|
|
|
-| [5] | ARE_NS | Affinity Routing Enable, Non-secure state. |
|
|
|
-| [4] | ARE_S | Affinity Routing Enable, Secure state. |
|
|
|
-| [3] | - | Reserved. |
|
|
|
-| [2] | EnableGrp1S | Enable Secure Group 1 interrupts. |
|
|
|
-| [1] | EnableGrp1NS | Enable Non-secure Group 1 interrupts. |
|
|
|
-| [0] | EnableGrp0 | Enable Group 0 interrupts. |
|
|
|
+/** @} */
|
|
|
|
|
|
-When access is Non-secure, in a system that supports two Security states:
|
|
|
+/* ########################## Physical Timer functions ############################ */
|
|
|
+/**
|
|
|
+\defgroup PL1_timer_functions Physical Timer Functions
|
|
|
+\brief Physical timer functions (on Cortex-A7 class devices)
|
|
|
+*/
|
|
|
+/** @{ */
|
|
|
|
|
|
-| Bits | Name | Function |
|
|
|
-| :------ | :------------ | :------------------------------------------------------------- |
|
|
|
-| [31] | RWP | Indicates whether a register write is in progress or not. |
|
|
|
-| [30:5] | - | Reserved. |
|
|
|
-| [4] | ARE_NS | Affinity Routing Enable, Non-secure state. |
|
|
|
-| [3:2] | - | Reserved. |
|
|
|
-| [1] | EnableGrp1A | Enable Non-secure Group 1 interrupts. |
|
|
|
-| [0] | EnableGrp1 | Enable Non-secure Group 1 interrupts. |
|
|
|
+/** \brief Physical Timer Control register */
|
|
|
+typedef union
|
|
|
+{
|
|
|
+ struct
|
|
|
+ {
|
|
|
+ uint32_t ENABLE:1; /*!< \brief bit: 0 Enables the timer. */
|
|
|
+ uint32_t IMASK:1; /*!< \brief bit: 1 Timer output signal mask bit. */
|
|
|
+ uint32_t ISTATUS:1; /*!< \brief bit: 2 The status of the timer. */
|
|
|
+ uint32_t _reserved0:29; /*!< \brief bit: 3..31 Reserved */
|
|
|
+ } b; /*!< \brief Structure used for bit access */
|
|
|
+ uint32_t w; /*!< \brief Type used for word access */
|
|
|
+} CNTP_CTL_Type;
|
|
|
+
|
|
|
+/** Configures the frequency the timer shall run at.
|
|
|
+* \param value The timer frequency in Hz.
|
|
|
+*/
|
|
|
+__STATIC_INLINE void PL1_SetCounterFrequency(uint32_t value);
|
|
|
|
|
|
-When in a system that supports only a single Security state:
|
|
|
+/** Sets the reset value of the timer.
|
|
|
+* \param value The value the timer is loaded with.
|
|
|
+*/
|
|
|
+__STATIC_INLINE void PL1_SetLoadValue(uint32_t value);
|
|
|
|
|
|
-| Bits | Name | Function |
|
|
|
-| :------ | :------------ | :------------------------------------------------------------- |
|
|
|
-| [31] | RWP | Indicates whether a register write is in progress or not. |
|
|
|
-| [30:8] | - | Reserved. |
|
|
|
-| [7] | EINWF | Enable 1 of N Wakeup Functionality, if available. |
|
|
|
-| [6] | DS | Disable Security. |
|
|
|
-| [5] | - | Reserved. |
|
|
|
-| [4] | ARE | Affinity Routing Enable. |
|
|
|
-| [3:2] | - | Reserved. |
|
|
|
-| [1] | EnableGrp1 | Enable Group 1 interrupts. |
|
|
|
-| [0] | EnableGrp0 | Enable Group 0 interrupts. |
|
|
|
+/** Get the current counter value.
|
|
|
+* \return Current counter value.
|
|
|
+*/
|
|
|
+__STATIC_INLINE uint32_t PL1_GetCurrentValue();
|
|
|
|
|
|
-\var __IM uint32_t GICDistributor_Type::D_TYPER
|
|
|
-\details Interrupt Controller Type Register
|
|
|
+/** Configure the timer by setting the control value.
|
|
|
+* \param value New \ref CNTP_CTL_Type "timer control value".
|
|
|
+*/
|
|
|
+__STATIC_INLINE void PL1_SetControl(uint32_t value);
|
|
|
|
|
|
-| Bits | Name | Function |
|
|
|
-| :------ | :------------ | :------------------------------------------------------------- |
|
|
|
-| [31:16] | - | Reserved. |
|
|
|
-| [15:11] | LSPI | Maximum number of lockable shared interrupts. |
|
|
|
-| [10] | SecurityExtn | Security Extensions: 0 - not implemented. 1 - implemented. |
|
|
|
-| [9:8] | - | Reserved. |
|
|
|
-| [7:5] | CPUNumber | Number of implemented CPU interfaces [=CPUNumber+1] |
|
|
|
-| [4:0] | ITLinesNumber | Maximum number of interrups supported [=32*(ITLinesNumber+1)]. |
|
|
|
+/** @} */
|
|
|
|
|
|
-\var __IM uint32_t GICDistributor_Type::D_IIDR
|
|
|
-\details Distributor Implementer Identification Register
|
|
|
+/* ########################## Private Timer functions ############################ */
|
|
|
+/**
|
|
|
+\defgroup PTM_timer_functions Private Timer Functions
|
|
|
+\brief Private timer functions (on Cortex-A5 and -A9 class devices)
|
|
|
+@{
|
|
|
+\struct Timer_Type
|
|
|
+\def PTIM
|
|
|
+\fn __STATIC_INLINE void PTIM_SetLoadValue(uint32_t value)
|
|
|
+\fn __STATIC_INLINE uint32_t PTIM_GetLoadValue()
|
|
|
+\fn __STATIC_INLINE uint32_t PTIM_GetCurrentValue()
|
|
|
+\fn __STATIC_INLINE void PTIM_SetControl(uint32_t value)
|
|
|
+\fn __STATIC_INLINE uint32_t PTIM_GetControl(void)
|
|
|
+\fn __STATIC_INLINE void PTIM_ClearEventFlag(void)
|
|
|
+@}
|
|
|
+*/
|
|
|
|
|
|
-| Bits | Name | Function |
|
|
|
-| :------ | :------------ | :------------------------------------------------------------- |
|
|
|
-| [31:24] | ProductID | An IMPLEMENTATION DEFINED product identifier |
|
|
|
-| [23:20] | - | Reserved. |
|
|
|
-| [19:16] | Variant | An IMPLEMENTATION DEFINED variant number. |
|
|
|
-| [15:12] | Revision | An IMPLEMENTATION DEFINED revision number. |
|
|
|
-| [11:0] | Implementer | Contains the JEP106 code of the company implemented the GICD. |
|
|
|
+/* ########################## FPU functions ############################ */
|
|
|
+/**
|
|
|
+\defgroup FPU_functions Floating Point Unit Functions
|
|
|
+\brief FPU functions
|
|
|
+@{
|
|
|
+\fn __STATIC_INLINE __ASM void __FPU_Enable(void)
|
|
|
+@}
|
|
|
+*/
|
|
|
|
|
|
-\var __IOM uint8_t GICDistributor_Type::D_ITARGETSR[1020]
|
|
|
-\details Interrupt Processor Targets Registers
|
|
|
+/* ########################## MMU functions ###################################### */
|
|
|
+/**
|
|
|
+\defgroup MMU_functions Memory Management Unit Functions
|
|
|
+\brief Functions and defines that relate to the Memory Management Unit
|
|
|
+*/
|
|
|
|
|
|
-Each bit in the target field corresponds to one CPU interface. A CPU targets field bit that corresponds
|
|
|
-to an unimplemented CPU interface is RAZ/WI.
|
|
|
+/** @{ */
|
|
|
|
|
|
-| CPU target field value | Interrupt targets |
|
|
|
-| :--------------------- | :---------------- |
|
|
|
-| 0bxxxxxxx1 | CPU interface 0 |
|
|
|
-| 0bxxxxxx1x | CPU interface 1 |
|
|
|
-| 0bxxxxx1xx | CPU interface 2 |
|
|
|
-| 0bxxxx1xxx | CPU interface 3 |
|
|
|
-| 0bxxx1xxxx | CPU interface 4 |
|
|
|
-| 0bxx1xxxxx | CPU interface 5 |
|
|
|
-| 0bx1xxxxxx | CPU interface 6 |
|
|
|
-| 0b1xxxxxxx | CPU interface 7 |
|
|
|
+/**
|
|
|
+\defgroup MMU_defs_gr MMU Defines and Structs
|
|
|
+\brief Defines and structures that relate to the Memory Management Unit
|
|
|
+*/
|
|
|
|
|
|
-\var __IOM uint32_t GICDistributor_Type::D_IGROUPR[32]
|
|
|
-\details Interrupt Group Registers
|
|
|
+/** @{ */
|
|
|
|
|
|
-Each bit corresponds to one interrupt:
|
|
|
- - Register index is given by INTID/32
|
|
|
- - Bit number is given by INTID%32
|
|
|
-
|
|
|
-And the value denotes:
|
|
|
-- 0 When \ref GICDistributor_Type::D_CTLR "D_CTLR".DS==1, the corresponding interrupt is Group 0\n
|
|
|
- When \ref GICDistributor_Type::D_CTLR "D_CTLR".DS==0, the corresponding interrupt is Secure.
|
|
|
-- 1 When \ref GICDistributor_Type::D_CTLR "D_CTLR".DS==1, the corresponding interrupt is Group 1.\n
|
|
|
- When \ref GICDistributor_Type::D_CTLR "D_CTLR".DS==0, the corresponding interrupt is Non-secure Group 1.
|
|
|
-
|
|
|
-\var __IO uint32_t GICDistributor_Type::D_CLRSPI_NSR
|
|
|
-\details Clear Non-secure SPI Pending Register
|
|
|
+/**
|
|
|
+\def SECTION_DESCRIPTOR
|
|
|
+\def SECTION_B_SHIFT
|
|
|
+\def SECTION_C_SHIFT
|
|
|
+\def SECTION_TEX0_SHIFT
|
|
|
+\def SECTION_TEX1_SHIFT
|
|
|
+\def SECTION_TEX2_SHIFT
|
|
|
+\def SECTION_XN_SHIFT
|
|
|
+\def SECTION_DOMAIN_SHIFT
|
|
|
+\def SECTION_P_SHIFT
|
|
|
+\def SECTION_AP_SHIFT
|
|
|
+\def SECTION_AP2_SHIFT
|
|
|
+\def SECTION_S_SHIFT
|
|
|
+\def SECTION_NG_SHIFT
|
|
|
+\def SECTION_NS_SHIFT
|
|
|
+\def PAGE_L1_DESCRIPTOR
|
|
|
+\def PAGE_L2_4K_DESC
|
|
|
+\def PAGE_L2_64K_DESC
|
|
|
+\def PAGE_4K_B_SHIFT
|
|
|
+\def PAGE_4K_C_SHIFT
|
|
|
+\def PAGE_4K_TEX0_SHIFT
|
|
|
+\def PAGE_4K_TEX1_SHIFT
|
|
|
+\def PAGE_4K_TEX2_SHIFT
|
|
|
+\def PAGE_64K_B_SHIFT
|
|
|
+\def PAGE_64K_C_SHIFT
|
|
|
+\def PAGE_64K_TEX0_SHIFT
|
|
|
+\def PAGE_64K_TEX1_SHIFT
|
|
|
+\def PAGE_64K_TEX2_SHIFT
|
|
|
+\def PAGE_B_SHIFT
|
|
|
+\def PAGE_C_SHIFT
|
|
|
+\def PAGE_TEX_SHIFT
|
|
|
+\def PAGE_XN_4K_SHIFT
|
|
|
+\def PAGE_XN_64K_SHIFT
|
|
|
+\def PAGE_DOMAIN_SHIFT
|
|
|
+\def PAGE_P_SHIFT
|
|
|
+\def PAGE_AP_SHIFT
|
|
|
+\def PAGE_AP2_SHIFT
|
|
|
+\def PAGE_S_SHIFT
|
|
|
+\def PAGE_NG_SHIFT
|
|
|
+\def PAGE_NS_SHIFT
|
|
|
+\def OFFSET_1M
|
|
|
+\def OFFSET_64K
|
|
|
+\def OFFSET_4K
|
|
|
+\def DESCRIPTOR_FAULT
|
|
|
|
|
|
-| Bits | Name | Function |
|
|
|
-| :------ | :------------ | :------------------------------------------------ |
|
|
|
-| [31:10] | - | Reserved. |
|
|
|
-| [9:0] | INTID | The interrupt number to clear pending state from. |
|
|
|
+\enum mmu_region_size_Type
|
|
|
+\enum mmu_memory_Type
|
|
|
+\enum mmu_cacheability_Type
|
|
|
+\enum mmu_ecc_check_Type
|
|
|
+\enum mmu_execute_Type
|
|
|
+\enum mmu_global_Type
|
|
|
+\enum mmu_shared_Type
|
|
|
+\enum mmu_secure_Type
|
|
|
+\enum mmu_access_Type
|
|
|
|
|
|
-\var __IO uint32_t GICDistributor_Type::D_CLRSPI_SR
|
|
|
-\details Clear Secure SPI Pending Register
|
|
|
+\struct mmu_region_attributes_Type
|
|
|
|
|
|
-| Bits | Name | Function |
|
|
|
-| :------ | :------------ | :------------------------------------------------ |
|
|
|
-| [31:10] | - | Reserved. |
|
|
|
-| [9:0] | INTID | The interrupt number to clear pending state from. |
|
|
|
+\def section_normal(descriptor_l1, region)
|
|
|
+\def section_normal_cod(descriptor_l1, region)
|
|
|
+\def section_normal_ro(descriptor_l1, region)
|
|
|
+\def section_normal_rw(descriptor_l1, region)
|
|
|
+\def section_so(descriptor_l1, region)
|
|
|
+\def section_device_ro(descriptor_l1, region)
|
|
|
+\def section_device_rw(descriptor_l1, region)
|
|
|
+\def page4k_device_rw(descriptor_l1, descriptor_l2, region)
|
|
|
+\def page64k_device_rw(descriptor_l1, descriptor_l2, region)
|
|
|
+*/
|
|
|
+/** @} */
|
|
|
+/* end group MMU_defs_gr */
|
|
|
|
|
|
-\var __IOM uint32_t GICDistributor_Type::D_IGRPMODR[32]
|
|
|
-\details Interrupt Group Modifier Registers
|
|
|
+/* start grouping functions */
|
|
|
+/** @{ */
|
|
|
|
|
|
-Each bit corresponds to one interrupt:
|
|
|
- - Register index is given by INTID/32
|
|
|
- - Bit number is given by INTID%32
|
|
|
-
|
|
|
-\var __IOM uint64_t GICDistributor_Type::D_IROUTER[988]
|
|
|
-\details Interrupt Routing Registers
|
|
|
+/**
|
|
|
+\fn __STATIC_INLINE int MMU_XNSection(uint32_t *descriptor_l1, mmu_execute_Type xn)
|
|
|
+\details
|
|
|
+ The function sets section execution-never attribute
|
|
|
|
|
|
-| Bits | Name | Function |
|
|
|
-| :------ | :------------ | :------------------------------------------------------------ |
|
|
|
-| [63:40] | - | Reserved. |
|
|
|
-| [39:32] | Aff3 | Affinity level 3, the least significant affinity level field. |
|
|
|
-| [31] | IRM | Interrupt Routing Mode. Defines how SPIs are routed in an affinity hierarchy. |
|
|
|
-| [30:24] | - | Reserved. |
|
|
|
-| [23:16] | Aff2 | Affinity level 2, an intermediate affinity level field. |
|
|
|
-| [15:8] | Aff1 | Affinity level 1, an intermediate affinity level field. |
|
|
|
-| [7:0] | Aff0 | Affinity level 0, the most significant affinity level field. |
|
|
|
+\fn __STATIC_INLINE int MMU_DomainSection(uint32_t *descriptor_l1, uint8_t domain)
|
|
|
+\details
|
|
|
+The function sets section domain.
|
|
|
|
|
|
-\var __IOM uint32_t GICDistributor_Type::D_NSACR[64]
|
|
|
-\details Non-secure Access Control Registers
|
|
|
+\fn __STATIC_INLINE int MMU_PSection(uint32_t *descriptor_l1, mmu_ecc_check_Type p_bit)
|
|
|
+\details
|
|
|
+ The function sets section parity check
|
|
|
|
|
|
-Each two bits corresponds to one interrupt:
|
|
|
- - Register index is given by INTID/16
|
|
|
- - Bit number is given by 2*INTID%16
|
|
|
+\fn __STATIC_INLINE int MMU_APSection(uint32_t *descriptor_l1, mmu_access_Type user, mmu_access_Type priv, uint32_t afe)
|
|
|
+\details
|
|
|
+The function sets section access privileges
|
|
|
|
|
|
-The possible values of each 2-bit field are:
|
|
|
- - 00 - Non-secure accesses to all fields associated with the corresponding interrupt are permitted.
|
|
|
- - 01 - Non-secure accesses are only permitted to requesting fields.
|
|
|
- - 10 - As 01, additionally accesses to clearing field are permitted.
|
|
|
- - 11 - As 10, additionally accesses to target and routing fields are permitted.
|
|
|
-
|
|
|
-\var __IO uint32_t GICDistributor_Type::D_SETSPI_NSR
|
|
|
-\details Set Non-secure SPI Pending Register
|
|
|
+\fn __STATIC_INLINE int MMU_SharedSection(uint32_t *descriptor_l1, mmu_shared_Type s_bit)
|
|
|
+\details
|
|
|
+ The function sets section shareability
|
|
|
|
|
|
-| Bits | Name | Function |
|
|
|
-| :------ | :------------ | :------------------------------------------------ |
|
|
|
-| [31:10] | - | Reserved. |
|
|
|
-| [9:0] | INTID | The interrupt number to set pending state for. |
|
|
|
+\fn __STATIC_INLINE int MMU_GlobalSection(uint32_t *descriptor_l1, mmu_global_Type g_bit)
|
|
|
+\details
|
|
|
+ The function sets section Global attribute
|
|
|
|
|
|
-\var __IO uint32_t GICDistributor_Type::D_SETSPI_SR
|
|
|
-\details Set Secure SPI Pending Register
|
|
|
+\fn __STATIC_INLINE int MMU_SecureSection(uint32_t *descriptor_l1, mmu_secure_Type s_bit)
|
|
|
+\details
|
|
|
+ The function sets section Global attribute
|
|
|
|
|
|
-| Bits | Name | Function |
|
|
|
-| :------ | :------------ | :------------------------------------------------ |
|
|
|
-| [31:10] | - | Reserved. |
|
|
|
-| [9:0] | INTID | The interrupt number to set pending state for. |
|
|
|
+\fn __STATIC_INLINE int MMU_XNPage(uint32_t *descriptor_l2, mmu_execute_Type xn, mmu_region_size_Type page)
|
|
|
+\details
|
|
|
+ The function sets 4k/64k page execution-never attribute
|
|
|
|
|
|
-\var __IOM uint8_t GICDistributor_Type::D_SPENDSGIR[16]
|
|
|
-\details SGI Set-Pending Registers
|
|
|
-Each register corresponds to one software generated interrupt (SGI).
|
|
|
+\fn __STATIC_INLINE int MMU_DomainPage(uint32_t *descriptor_l1, uint8_t domain)
|
|
|
+\details
|
|
|
+ The function sets 4k/64k page domain
|
|
|
|
|
|
-Reading from this register reveals
|
|
|
- - 0 - interrupt is not pending
|
|
|
- - 1 - interrupt is pending
|
|
|
-
|
|
|
-Writing to this register causes
|
|
|
- - 0 - no effect
|
|
|
- - 1 - adds the pending state
|
|
|
-
|
|
|
-\var __IOM uint8_t GICDistributor_Type::D_CPENDSGIR[16]
|
|
|
-\details SGI Clear-Pending Registers
|
|
|
-Each register corresponds to one software generated interrupt (SGI).
|
|
|
+\fn __STATIC_INLINE int MMU_PPage(uint32_t *descriptor_l1, mmu_ecc_check_Type p_bit)
|
|
|
+\details
|
|
|
+ The function sets 4k/64k page parity check
|
|
|
|
|
|
-Reading from this register reveals
|
|
|
- - 0 - interrupt is not pending
|
|
|
- - 1 - interrupt is pending
|
|
|
-
|
|
|
-Writing to this register causes
|
|
|
- - 0 - no effect
|
|
|
- - 1 - removes the pending state
|
|
|
+\fn __STATIC_INLINE int MMU_APPage(uint32_t *descriptor_l2, mmu_access_Type user, mmu_access_Type priv, uint32_t afe)
|
|
|
+\details
|
|
|
+ The function sets 4k/64k page access privileges
|
|
|
+\fn __STATIC_INLINE int MMU_SharedPage(uint32_t *descriptor_l2, mmu_shared_Type s_bit)
|
|
|
+\details
|
|
|
+ The function sets 4k/64k page shareability
|
|
|
|
|
|
-\var __IOM uint32_t GICDistributor_Type::D_STATUSR
|
|
|
-\details Error Reporting Status Register
|
|
|
+\fn __STATIC_INLINE int MMU_GlobalPage(uint32_t *descriptor_l2, mmu_global_Type g_bit)
|
|
|
+\details
|
|
|
+ The function sets 4k/64k page Global attribute
|
|
|
|
|
|
-| Bits | Name | Function |
|
|
|
-| :------ | :------------ | :------------------------------------------------ |
|
|
|
-| [31:4] | - | Reserved. |
|
|
|
-| [3] | WROD | Write to an RO location. |
|
|
|
-| [2] | RWOD | Read of a WO location. |
|
|
|
-| [1] | WRD | Write to a reserved location. |
|
|
|
-| [0] | RRD | Read of a reserved location. |
|
|
|
+\fn __STATIC_INLINE int MMU_SecurePage(uint32_t *descriptor_l1, mmu_secure_Type s_bit)
|
|
|
+\details
|
|
|
+ The function sets 4k/64k page Global attribute
|
|
|
|
|
|
-\var __IOM uint32_t GICDistributor_Type::D_ISENABLER[32]
|
|
|
-\details Interrupt Set-Enable Registers
|
|
|
+\fn __STATIC_INLINE int MMU_MemorySection(uint32_t *descriptor_l1, mmu_memory_Type mem, mmu_cacheability_Type outer, mmu_cacheability_Type inner)
|
|
|
+\details
|
|
|
+ The function sets section memory attributes
|
|
|
|
|
|
-Each bit corresponds to one interrupt:
|
|
|
- - Register index is given by INTID/32
|
|
|
- - Bit number is given by INTID%32
|
|
|
+\fn __STATIC_INLINE int MMU_MemoryPage(uint32_t *descriptor_l2, mmu_memory_Type mem, mmu_cacheability_Type outer, mmu_cacheability_Type inner, mmu_region_size_Type page)
|
|
|
+\details
|
|
|
+ The function sets 4k/64k page memory attributes
|
|
|
|
|
|
-\note Bits corresponding to unimplemented interrupts are RAZ/WI.
|
|
|
+\fn __STATIC_INLINE int MMU_GetSectionDescriptor(uint32_t *descriptor, mmu_region_attributes_Type reg)
|
|
|
+\details
|
|
|
+ The function creates a section descriptor.
|
|
|
|
|
|
-\var __IOM uint32_t GICDistributor_Type::D_ICENABLER[32]
|
|
|
-\details Interrupt Clear-Enable Registers
|
|
|
+\fn __STATIC_INLINE int MMU_GetPageDescriptor(uint32_t *descriptor, uint32_t *descriptor2, mmu_region_attributes_Type reg)
|
|
|
+\details
|
|
|
+ The function creates a 4k/64k page descriptor.
|
|
|
+ Assumptions:
|
|
|
+ - TEX remap disabled, so memory type and attributes are described directly by bits in the descriptor
|
|
|
+ - Functions always return 0
|
|
|
|
|
|
-Each bit corresponds to one interrupt:
|
|
|
- - Register index is given by INTID/32
|
|
|
- - Bit number is given by INTID%32
|
|
|
+\fn __STATIC_INLINE void MMU_TTSection(uint32_t *ttb, uint32_t base_address, uint32_t count, uint32_t descriptor_l1)
|
|
|
+\fn __STATIC_INLINE void MMU_TTPage4k(uint32_t *ttb, uint32_t base_address, uint32_t count, uint32_t descriptor_l1, uint32_t *ttb_l2, uint32_t descriptor_l2 )
|
|
|
+\fn __STATIC_INLINE void MMU_TTPage64k(uint32_t *ttb, uint32_t base_address, uint32_t count, uint32_t descriptor_l1, uint32_t *ttb_l2, uint32_t descriptor_l2 )
|
|
|
+\fn __STATIC_INLINE void MMU_Enable(void)
|
|
|
+\details
|
|
|
+ Set M bit 0 to enable the MMU
|
|
|
+ Set AFE bit to enable simplified access permissions model
|
|
|
+ Clear TRE bit to disable TEX remap and A bit to disable strict alignment fault checking
|
|
|
|
|
|
-\note Bits corresponding to unimplemented interrupts are RAZ/WI.
|
|
|
+\fn __STATIC_INLINE void MMU_Disable(void)
|
|
|
|
|
|
-\var __IOM uint32_t GICDistributor_Type::D_ISPENDR[32]
|
|
|
-\details Interrupt Set-Pending Registers
|
|
|
+\fn __STATIC_INLINE void MMU_InvalidateTLB(void)
|
|
|
+*/
|
|
|
|
|
|
-Each bit corresponds to one interrupt:
|
|
|
- - Register index is given by INTID/32
|
|
|
- - Bit number is given by INTID%32
|
|
|
+/** @} */
|
|
|
+/* end of MMU_func_gr */
|
|
|
|
|
|
-\note Bits corresponding to unimplemented interrupts are RAZ/WI.
|
|
|
+/** @} */
|
|
|
+/* end of MMU_functions */
|
|
|
|
|
|
-\var __IOM uint32_t GICDistributor_Type::D_ICPENDR[32]
|
|
|
-\details Interrupt Clear-Pending Registers
|
|
|
+/** @} */
|
|
|
|
|
|
-Each bit corresponds to one interrupt:
|
|
|
- - Register index is given by INTID/32
|
|
|
- - Bit number is given by INTID%32
|
|
|
-
|
|
|
-\note Bits corresponding to unimplemented interrupts are RAZ/WI.
|
|
|
+/* ########################## L2C_310_TypeDef Member ########################## */
|
|
|
+/**
|
|
|
+\var L2C_310_TypeDef::ADDRESS_FILTER_END
|
|
|
+\brief
|
|
|
|
|
|
-\var __IOM uint32_t GICDistributor_Type::D_ICFGR[64]
|
|
|
-\details Interrupt Configuration Registers
|
|
|
+\var __IOM uint32_t L2C_310_TypeDef::ADDRESS_FILTER_START
|
|
|
+\brief
|
|
|
|
|
|
-Each interrupt can be configured by two corresponding bits:
|
|
|
+\var __IOM uint32_t L2C_310_TypeDef::AUX_CNT
|
|
|
+\brief
|
|
|
|
|
|
-| Bits | Name | Function |
|
|
|
-| :------------- | :------------ | :------------------------------------------------------------- |
|
|
|
-| [2*INTID%16+1] | Edge | Interrupt is: 0 - level sensitive, 1 - edge triggered |
|
|
|
-| [2*INTID%16] | Model | 0 - N-N Model, 1 - 1-N Model; RAZ/WI when unsupported |
|
|
|
+\var __IM uint32_t L2C_310_TypeDef::CACHE_ID
|
|
|
+\brief
|
|
|
|
|
|
-\var __IOM uint8_t GICDistributor_Type::D_IPRIORITYR[1020]
|
|
|
-\details Interrupt Priority Registers
|
|
|
+\var __IOM uint32_t L2C_310_TypeDef::CACHE_SYNC
|
|
|
+\brief
|
|
|
|
|
|
-A GIC might implement fewer than eight priority bits, but must implement at least bits [7:4] of each
|
|
|
-field. In each field, unimplemented bits are RAZ/WI.
|
|
|
+\var __IM uint32_t L2C_310_TypeDef::CACHE_TYPE
|
|
|
+\brief
|
|
|
|
|
|
-\note A register field corresponding to an unimplemented interrupt is RAZ/WI.
|
|
|
+\var __IOM uint32_t L2C_310_TypeDef::CLEAN_INV_LINE_INDEX_WAY
|
|
|
+\brief
|
|
|
|
|
|
-\var __IOM uint32_t GICDistributor_Type::D_ISACTIVER[32]
|
|
|
-\details Interrupt Set-Active Registers
|
|
|
+\var __IOM uint32_t L2C_310_TypeDef::CLEAN_INV_LINE_PA
|
|
|
+\brief
|
|
|
|
|
|
-Each bit corresponds to one interrupt:
|
|
|
- - Register index is given by INTID/32
|
|
|
- - Bit number is given by INTID%32
|
|
|
-
|
|
|
-\note Bits corresponding to unimplemented interrupts are RAZ/WI.
|
|
|
+\var __IOM uint32_t L2C_310_TypeDef::CLEAN_INV_WAY
|
|
|
+\brief
|
|
|
|
|
|
-\var __IOM uint32_t GICDistributor_Type::D_ICACTIVER[32]
|
|
|
-\details Interrupt Clear-Active Registers
|
|
|
+\var __IOM uint32_t L2C_310_TypeDef::CLEAN_LINE_INDEX_WAY
|
|
|
+\brief
|
|
|
|
|
|
-Each bit corresponds to one interrupt:
|
|
|
- - Register index is given by INTID/32
|
|
|
- - Bit number is given by INTID%32
|
|
|
+\var __IOM uint32_t L2C_310_TypeDef::CLEAN_LINE_PA
|
|
|
+\brief
|
|
|
|
|
|
-\note Bits corresponding to unimplemented interrupts are RAZ/WI.
|
|
|
+\var __IOM uint32_t L2C_310_TypeDef::CLEAN_WAY
|
|
|
+\brief
|
|
|
|
|
|
-\var __OM uint32_t GICDistributor_Type::D_SGIR
|
|
|
-\details Software Generated Interrupt Register
|
|
|
+\var __IOM uint32_t L2C_310_TypeDef::CONTROL
|
|
|
+\brief
|
|
|
|
|
|
-| Bits | Name | Function |
|
|
|
-| :------ | :------------ | :--------------------------------------------------------------- |
|
|
|
-| [31:26] | - | Reserved. |
|
|
|
-| [25:24] | TargetFilterList | Determines how the Distributor processes the requested SGI. |
|
|
|
-| [23:16] | CPUTargetList | When TargetListFilter is 00, this field defines the CPU interfaces to which the Distributor must forward the interrupt. |
|
|
|
-| [15] | NSATT | Specifies the required group of the SGI. |
|
|
|
-| [14:4] | - | Reserved. |
|
|
|
-| [3:0] | INTID | The INTID of the SGI to forward to the specified CPU interfaces. |
|
|
|
+\var __IOM uint32_t L2C_310_TypeDef::DATA_LOCK_0_WAY
|
|
|
+\brief
|
|
|
|
|
|
-Refer to \ref GICDistributor_Type::D_ITARGETSR "D_ITARGETSR" for details on TargetFilterList field.
|
|
|
+\var __IOM uint32_t L2C_310_TypeDef::DATA_LOCK_1_WAY
|
|
|
+\brief
|
|
|
|
|
|
-\var __IOM uint32_t GICInterface_Type::C_CTLR
|
|
|
-\details CPU Interface Control Register
|
|
|
+\var __IOM uint32_t L2C_310_TypeDef::DATA_LOCK_2_WAY
|
|
|
+\brief
|
|
|
|
|
|
-Enables the signaling of interrupts by the CPU interface to the connected processor, and
|
|
|
-provides additional top-level control of the CPU interface. In a GICv2 implementation, this
|
|
|
-includes control of the end of interrupt (EOI) behavior.
|
|
|
+\var __IOM uint32_t L2C_310_TypeDef::DATA_LOCK_3_WAY
|
|
|
+\brief
|
|
|
|
|
|
-| Bits | Name | Function |
|
|
|
-| :------ | :------------ | :------------------------------------------------------------- |
|
|
|
-| [31:1] | - | Reserved. |
|
|
|
-| [0] | Enable | Interrupt signaling: 0 - Disable. 1 - Enable. |
|
|
|
+\var __IOM uint32_t L2C_310_TypeDef::DATA_LOCK_4_WAY
|
|
|
+\brief
|
|
|
|
|
|
-\var __IM uint32_t GICInterface_Type::C_IAR
|
|
|
-\details CPU Interface Interrupt Acknowledge Register
|
|
|
+\var __IOM uint32_t L2C_310_TypeDef::DATA_LOCK_5_WAY
|
|
|
+\brief
|
|
|
|
|
|
-| Bits | Name | Function |
|
|
|
-| :------ | :------------ | :------------------------------------------------------------- |
|
|
|
-| [31:24] | - | Reserved. |
|
|
|
-| [23:0] | INTID | The interrupt number of the signaled interrupt. |
|
|
|
+\var __IOM uint32_t L2C_310_TypeDef::DATA_LOCK_6_WAY
|
|
|
+\brief
|
|
|
|
|
|
-\var __OM uint32_t GICInterface_Type::C_EOIR
|
|
|
-\details CPU Interface End Of Interrupt Register
|
|
|
+\var __IOM uint32_t L2C_310_TypeDef::DATA_LOCK_7_WAY
|
|
|
+\brief
|
|
|
|
|
|
-| Bits | Name | Function |
|
|
|
-| :------ | :------------ | :------------------------------------------------------------- |
|
|
|
-| [31:24] | - | Reserved. |
|
|
|
-| [23:0] | INTID | The interrupt number of the finished interrupt. |
|
|
|
-
|
|
|
- \var __IM uint32_t GICInterface_Type::C_HPPIR
|
|
|
-\details CPU Interface Highest Priority Pending Interrupt Register
|
|
|
+\var __IOM uint32_t L2C_310_TypeDef::DEBUG_CONTROL
|
|
|
+\brief
|
|
|
|
|
|
-| Bits | Name | Function |
|
|
|
-| :------ | :------------ | :------------------------------------------------------------- |
|
|
|
-| [31:24] | - | Reserved. |
|
|
|
-| [23:0] | INTID | The INTID of the signaled interrupt. |
|
|
|
+\var __IOM uint32_t L2C_310_TypeDef::EVENT_CONTROL
|
|
|
+\brief
|
|
|
|
|
|
-\var __IM uint32_t GICInterface_Type::C_IIDR
|
|
|
-\details CPU Interface Identification Register
|
|
|
+\var __IOM uint32_t L2C_310_TypeDef::EVENT_COUNTER0_CONF
|
|
|
+\brief
|
|
|
|
|
|
-| Bits | Name | Function |
|
|
|
-| :------ | :------------ | :------------------------------------------------------------- |
|
|
|
-| [31:20] | ProductID | An IMPLEMENTATION DEFINED product identifier |
|
|
|
-| [19:16] | Arch_version | The version of the GIC architecture that is implemented. |
|
|
|
-| [15:12] | Revision | An IMPLEMENTATION DEFINED revision number for the CPU interface. |
|
|
|
-| [11:0] | Implementer | Contains the JEP106 code of the company that implemented the CPU interface. |
|
|
|
+\var __IOM uint32_t L2C_310_TypeDef::EVENT_COUNTER1_CONF
|
|
|
+\brief
|
|
|
|
|
|
+\var __IOM uint32_t L2C_310_TypeDef::INST_LOCK_0_WAY
|
|
|
+\brief
|
|
|
|
|
|
-\var __IOM uint32_t GICInterface_Type::C_PMR
|
|
|
-\details CPU Interface Priority Mask Register
|
|
|
+\var __IOM uint32_t L2C_310_TypeDef::INST_LOCK_1_WAY
|
|
|
+\brief
|
|
|
|
|
|
-| Bits | Name | Function |
|
|
|
-| :------ | :------------ | :------------------------------------------------------------- |
|
|
|
-| [31:8] | - | Reserved. |
|
|
|
-| [7:0] | Priority | The priority mask level for the CPU interface. |
|
|
|
+\var __IOM uint32_t L2C_310_TypeDef::INST_LOCK_2_WAY
|
|
|
+\brief
|
|
|
|
|
|
-\note IMPLEMENTATION DEFINED unsupported priority bits might be RAZ/WI.
|
|
|
-
|
|
|
-\var __IOM uint32_t GICInterface_Type::C_BPR
|
|
|
-\details CPU Interface Binary Point Register
|
|
|
+\var __IOM uint32_t L2C_310_TypeDef::INST_LOCK_3_WAY
|
|
|
+\brief
|
|
|
|
|
|
-| Bits | Name | Function |
|
|
|
-| :------ | :------------ | :------------------------------------------------------------- |
|
|
|
-| [31:3] | - | Reserved. |
|
|
|
-| [2:0] | Binary_Point | Controls how the 8-bit interrupt priority field is split into a group priority field and a subpriority field. |
|
|
|
+\var __IOM uint32_t L2C_310_TypeDef::INST_LOCK_4_WAY
|
|
|
+\brief
|
|
|
|
|
|
-The binary point (values 0-7) defines the amount of priority bits used as subpriority. Please
|
|
|
-refer to the section Interrupt prioritization in the
|
|
|
-<a href="http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ihi0048b/index.html">ARM Generic Interrupt Controller Architecture Specificaton</a>
|
|
|
-for details.
|
|
|
+\var __IOM uint32_t L2C_310_TypeDef::INST_LOCK_5_WAY
|
|
|
+\brief
|
|
|
|
|
|
-\var __IOM uint32_t GICInterface_Type::C_ABPR
|
|
|
-\details CPU Interface Aliased Binary Point Register
|
|
|
-\see GICInterface_Type::C_BPR
|
|
|
+\var __IOM uint32_t L2C_310_TypeDef::INST_LOCK_6_WAY
|
|
|
+\brief
|
|
|
|
|
|
-\var __OM uint32_t GICInterface_Type::C_AEOIR
|
|
|
-\details CPU Interface Aliased End Of Interrupt Register
|
|
|
-\see GICInterface_Type::C_EOIR
|
|
|
+\var __IOM uint32_t L2C_310_TypeDef::INST_LOCK_7_WAY
|
|
|
+\brief
|
|
|
|
|
|
-\var __IM uint32_t GICInterface_Type::C_AHPPIR
|
|
|
-\details CPU Interface Aliased Highest Priority Pending Interrupt Register
|
|
|
-\see GICInterface_Type::C_HPPIR
|
|
|
+\var __OM uint32_t L2C_310_TypeDef::INTERRUPT_CLEAR
|
|
|
+\brief
|
|
|
|
|
|
-\var __IM uint32_t GICInterface_Type::C_AIAR
|
|
|
-\details CPU Interface Aliased Interrupt Acknowledge Register
|
|
|
-\see GICInterface_Type::C_IAR
|
|
|
+\var __IOM uint32_t L2C_310_TypeDef::INTERRUPT_MASK
|
|
|
+\brief
|
|
|
|
|
|
-\var __IOM uint32_t GICInterface_Type::C_APR[4]
|
|
|
-\details CPU Interface Active Priorities Registers
|
|
|
-\note The register values are IMPLEMENTATION DEFINED.
|
|
|
+\var __IOM uint32_t L2C_310_TypeDef::INV_LINE_PA
|
|
|
+\brief
|
|
|
|
|
|
-\var __OM uint32_t GICInterface_Type::C_DIR
|
|
|
-\details CPU Interface Deactivate Interrupt Register
|
|
|
-
|
|
|
-| Bits | Name | Function |
|
|
|
-| :------ | :---- | :------------------------------------------------------------- |
|
|
|
-| [31:24] | - | Reserved. |
|
|
|
-| [23:0] | INTID | The INTID of the interrupt to be disabled. |
|
|
|
-
|
|
|
-\var __IOM uint32_t GICInterface_Type::C_NSAPR[4]
|
|
|
-\details CPU Interface Non-secure Active Priorities Registers
|
|
|
-\note The register values are IMPLEMENTATION DEFINED.
|
|
|
-\see GICInterface_Type::C_APR[4]
|
|
|
-
|
|
|
-\var __IM uint32_t GICInterface_Type::C_RPR
|
|
|
-\details CPU Interface Running Priority Register
|
|
|
-
|
|
|
-| Bits | Name | Function |
|
|
|
-| :------ | :------- | :------------------------------------------------------------- |
|
|
|
-| [31:8] | - | Reserved. |
|
|
|
-| [7:0] | Priority | The current running priority on the CPU interface. |
|
|
|
+\var __IOM uint32_t L2C_310_TypeDef::INV_WAY
|
|
|
+\brief
|
|
|
|
|
|
-\var __IOM uint32_t GICInterface_Type::C_STATUSR
|
|
|
-\details CPU Interface Status Register
|
|
|
+\var __IOM uint32_t L2C_310_TypeDef::LOCK_LINE_EN
|
|
|
+\brief
|
|
|
|
|
|
-| Bits | Name | Function |
|
|
|
-| :------ | :------- | :------------------------------------------------------------- |
|
|
|
-| [31:5] | - | Reserved. |
|
|
|
-| [4] | ASV | Attempted security violation. |
|
|
|
-| [3] | WROD | Write to an RO location. |
|
|
|
-| [2] | RWOD | Read of a WO location. |
|
|
|
-| [1] | WRD | Write to a reserved location. |
|
|
|
-| [0] | RRD | Read of a reserved location. |
|
|
|
+\var __IM uint32_t L2C_310_TypeDef::MASKED_INT_STATUS
|
|
|
+\brief
|
|
|
|
|
|
-@}
|
|
|
-*/
|
|
|
+\var __IM uint32_t L2C_310_TypeDef::RAW_INT_STATUS
|
|
|
+\brief
|
|
|
|
|
|
-/* ########################## Physical Timer functions ############################ */
|
|
|
-/**
|
|
|
-\defgroup PL1_timer_functions Physical Timer Functions
|
|
|
-\brief Physical timer functions (on Cortex-A7 class devices)
|
|
|
-@{
|
|
|
-\fn __STATIC_INLINE void PL1_SetCounterFrequency(uint32_t value)
|
|
|
-\fn __STATIC_INLINE void PL1_SetLoadValue(uint32_t value)
|
|
|
-\fn __STATIC_INLINE uint32_t PL1_GetCurrentValue()
|
|
|
-\fn __STATIC_INLINE void PL1_SetControl(uint32_t value)
|
|
|
-@}
|
|
|
+\var __IOM uint32_t L2C_310_TypeDef::UNLOCK_ALL_BY_WAY
|
|
|
+\brief
|
|
|
*/
|
|
|
|
|
|
-/* ########################## Private Timer functions ############################ */
|
|
|
+/* ########################## Timer_Type Members ########################## */
|
|
|
/**
|
|
|
-\defgroup PTM_timer_functions Private Timer Functions
|
|
|
-\brief Private timer functions (on Cortex-A5 and -A9 class devices)
|
|
|
-@{
|
|
|
-\struct Timer_Type
|
|
|
-\def PTIM
|
|
|
-\fn __STATIC_INLINE void PTIM_SetLoadValue(uint32_t value)
|
|
|
-\fn __STATIC_INLINE uint32_t PTIM_GetLoadValue()
|
|
|
-\fn __STATIC_INLINE uint32_t PTIM_GetCurrentValue()
|
|
|
-\fn __STATIC_INLINE void PTIM_SetControl(uint32_t value)
|
|
|
-\fn __STATIC_INLINE uint32_t PTIM_GetControl(void)
|
|
|
-\fn __STATIC_INLINE void PTIM_ClearEventFlag(void)
|
|
|
-
|
|
|
\var __IOM uint32_t Timer_Type::LOAD
|
|
|
\details Private Timer Load Register
|
|
|
The Timer Load Register contains the value copied to the Timer Counter Register when
|
|
|
@@ -1114,218 +1107,498 @@ zero. If the timer interrupt is enabled, Interrupt ID 29 is set as pending in th
|
|
|
Distributor after the event flag is set. The event flag is cleared when written to 1.
|
|
|
|
|
|
\var __IOM uint32_t Timer_Type::WLOAD
|
|
|
-\details
|
|
|
+\details Watchdog Load Register
|
|
|
+
|
|
|
+The Watchdog Load Register contains the value copied to the Watchdog Counter
|
|
|
+Register when it decrements down to zero with auto reload mode enabled, in Timer
|
|
|
+mode. Writing to the Watchdog Load Register means that you also write to the
|
|
|
+Watchdog Counter Register.
|
|
|
|
|
|
\var __IOM uint32_t Timer_Type::WCOUNTER
|
|
|
-\details
|
|
|
+\details Watchdog Counter Register
|
|
|
+
|
|
|
+The Watchdog Counter Register is a down counter.
|
|
|
+
|
|
|
+The behavior of the watchdog when the Watchdog Counter Register reaches zero
|
|
|
+depends on its current mode:
|
|
|
+ - Timer mode: The watchdog interrupt status event flag is set and the interrupt
|
|
|
+ is set as pending in the Interrupt Distributor.
|
|
|
+ - Watchdog mode: Tthe Watchdog reset status flag is set and the associated WDRESETREQ
|
|
|
+ reset request output pin is asserted.
|
|
|
|
|
|
\var __IOM uint32_t Timer_Type::WCONTROL
|
|
|
-\details
|
|
|
+\details Watchdog Control Register
|
|
|
+
|
|
|
+| Bits | Name | Function |
|
|
|
+| :------ | :-------------- | :------------------------------------------------------------- |
|
|
|
+| [31:16] | - | Reserved. |
|
|
|
+| [15:8] | Prescaler | The prescaler modifies the clock period for the decrementing event for the Counter Register. |
|
|
|
+| [7:4] | - | Reserved. |
|
|
|
+| [3] | Watchdog Mode | 0 - Timer mode (default), 1 - Watchdog mode |
|
|
|
+| [2] | IT Enable | Interrupt enable for timer mode. |
|
|
|
+| [1] | Auto Reload | 0 - Single shot mode, 1 - Continuous timer mode |
|
|
|
+| [0] | Watchdog Enable | 0 - Watchdog counter disabled, 1 - Watchdog timer enabled |
|
|
|
|
|
|
\var __IOM uint32_t Timer_Type::WISR
|
|
|
-\details
|
|
|
+\details Watchdog Interrupt Status Register
|
|
|
+
|
|
|
+| Bits | Name | Function |
|
|
|
+| :------ | :-------------- | :------------------------------------------------------------- |
|
|
|
+| [31:1] | - | Reserved. |
|
|
|
+| [0] | Event Flag | The event flag is a sticky bit that is automatically set when the Counter Register reaches zero in timer mode. |
|
|
|
|
|
|
\var __IOM uint32_t Timer_Type::WRESET
|
|
|
-\details
|
|
|
+\details Watchdog Reset Status Register
|
|
|
|
|
|
-\var __IM uint32_t Timer_Type::WDISABLE
|
|
|
-\details
|
|
|
-@}
|
|
|
-*/
|
|
|
+| Bits | Name | Function |
|
|
|
+| :------ | :-------------- | :------------------------------------------------------------- |
|
|
|
+| [31:1] | - | Reserved. |
|
|
|
+| [0] | Reset Flag | The reset flag is a sticky bit that is automatically set when the Counter Register reaches zero and a reset request is sent accordingly. (In watchdog mode) |
|
|
|
|
|
|
-/* ########################## FPU functions ############################ */
|
|
|
-/**
|
|
|
-\defgroup FPU_functions Floating Point Unit Functions
|
|
|
-\brief FPU functions
|
|
|
-@{
|
|
|
-\fn __STATIC_INLINE __ASM void __FPU_Enable(void)
|
|
|
-@}
|
|
|
-*/
|
|
|
+\var __IM uint32_t Timer_Type::WDISABLE
|
|
|
+\details Watchdog Disable Register
|
|
|
|
|
|
-/* ########################## MMU functions ###################################### */
|
|
|
-/**
|
|
|
-\defgroup MMU_functions Memory Management Unit Functions
|
|
|
-\brief Functions and defines that relate to the Memory Management Unit
|
|
|
-@{
|
|
|
+Use the Watchdog Disable Register to switch from watchdog to timer mode. The
|
|
|
+software must write 0x12345678 then 0x87654321 successively to the Watchdog Disable
|
|
|
+Register so that the watchdog mode bit in the Watchdog Control Register is set to zero.
|
|
|
*/
|
|
|
|
|
|
+/* ########################## GICInterface_Type Member ########################## */
|
|
|
/**
|
|
|
-\defgroup MMU_defs_gr MMU Defines and Structs
|
|
|
-\brief Defines and structures that relate to the Memory Management Unit
|
|
|
-@{
|
|
|
-*/
|
|
|
+\var __IOM uint32_t GICInterface_Type::C_CTLR
|
|
|
+\details CPU Interface Control Register
|
|
|
|
|
|
-/**
|
|
|
-\def SECTION_DESCRIPTOR
|
|
|
-\def SECTION_B_SHIFT
|
|
|
-\def SECTION_C_SHIFT
|
|
|
-\def SECTION_TEX0_SHIFT
|
|
|
-\def SECTION_TEX1_SHIFT
|
|
|
-\def SECTION_TEX2_SHIFT
|
|
|
-\def SECTION_XN_SHIFT
|
|
|
-\def SECTION_DOMAIN_SHIFT
|
|
|
-\def SECTION_P_SHIFT
|
|
|
-\def SECTION_AP_SHIFT
|
|
|
-\def SECTION_AP2_SHIFT
|
|
|
-\def SECTION_S_SHIFT
|
|
|
-\def SECTION_NG_SHIFT
|
|
|
-\def SECTION_NS_SHIFT
|
|
|
-\def PAGE_L1_DESCRIPTOR
|
|
|
-\def PAGE_L2_4K_DESC
|
|
|
-\def PAGE_L2_64K_DESC
|
|
|
-\def PAGE_4K_B_SHIFT
|
|
|
-\def PAGE_4K_C_SHIFT
|
|
|
-\def PAGE_4K_TEX0_SHIFT
|
|
|
-\def PAGE_4K_TEX1_SHIFT
|
|
|
-\def PAGE_4K_TEX2_SHIFT
|
|
|
-\def PAGE_64K_B_SHIFT
|
|
|
-\def PAGE_64K_C_SHIFT
|
|
|
-\def PAGE_64K_TEX0_SHIFT
|
|
|
-\def PAGE_64K_TEX1_SHIFT
|
|
|
-\def PAGE_64K_TEX2_SHIFT
|
|
|
-\def PAGE_B_SHIFT
|
|
|
-\def PAGE_C_SHIFT
|
|
|
-\def PAGE_TEX_SHIFT
|
|
|
-\def PAGE_XN_4K_SHIFT
|
|
|
-\def PAGE_XN_64K_SHIFT
|
|
|
-\def PAGE_DOMAIN_SHIFT
|
|
|
-\def PAGE_P_SHIFT
|
|
|
-\def PAGE_AP_SHIFT
|
|
|
-\def PAGE_AP2_SHIFT
|
|
|
-\def PAGE_S_SHIFT
|
|
|
-\def PAGE_NG_SHIFT
|
|
|
-\def PAGE_NS_SHIFT
|
|
|
-\def OFFSET_1M
|
|
|
-\def OFFSET_64K
|
|
|
-\def OFFSET_4K
|
|
|
-\def DESCRIPTOR_FAULT
|
|
|
+Enables the signaling of interrupts by the CPU interface to the connected processor, and
|
|
|
+provides additional top-level control of the CPU interface. In a GICv2 implementation, this
|
|
|
+includes control of the end of interrupt (EOI) behavior.
|
|
|
|
|
|
-\enum mmu_region_size_Type
|
|
|
-\enum mmu_memory_Type
|
|
|
-\enum mmu_cacheability_Type
|
|
|
-\enum mmu_ecc_check_Type
|
|
|
-\enum mmu_execute_Type
|
|
|
-\enum mmu_global_Type
|
|
|
-\enum mmu_shared_Type
|
|
|
-\enum mmu_secure_Type
|
|
|
-\enum mmu_access_Type
|
|
|
+| Bits | Name | Function |
|
|
|
+| :------ | :------------ | :------------------------------------------------------------- |
|
|
|
+| [31:1] | - | Reserved. |
|
|
|
+| [0] | Enable | Interrupt signaling: 0 - Disable. 1 - Enable. |
|
|
|
|
|
|
-\struct mmu_region_attributes_Type
|
|
|
+\var __IM uint32_t GICInterface_Type::C_IAR
|
|
|
+\details CPU Interface Interrupt Acknowledge Register
|
|
|
|
|
|
-\def section_normal(descriptor_l1, region)
|
|
|
-\def section_normal_cod(descriptor_l1, region)
|
|
|
-\def section_normal_ro(descriptor_l1, region)
|
|
|
-\def section_normal_rw(descriptor_l1, region)
|
|
|
-\def section_so(descriptor_l1, region)
|
|
|
-\def section_device_ro(descriptor_l1, region)
|
|
|
-\def section_device_rw(descriptor_l1, region)
|
|
|
-\def page4k_device_rw(descriptor_l1, descriptor_l2, region)
|
|
|
-\def page64k_device_rw(descriptor_l1, descriptor_l2, region)
|
|
|
-*/
|
|
|
-/** @} */
|
|
|
-/* end group MMU_defs_gr */
|
|
|
+| Bits | Name | Function |
|
|
|
+| :------ | :------------ | :------------------------------------------------------------- |
|
|
|
+| [31:24] | - | Reserved. |
|
|
|
+| [23:0] | INTID | The interrupt number of the signaled interrupt. |
|
|
|
|
|
|
-/* start grouping functions */
|
|
|
-/**
|
|
|
-@{
|
|
|
-*/
|
|
|
+\var __OM uint32_t GICInterface_Type::C_EOIR
|
|
|
+\details CPU Interface End Of Interrupt Register
|
|
|
|
|
|
-/**
|
|
|
-\fn __STATIC_INLINE int MMU_XNSection(uint32_t *descriptor_l1, mmu_execute_Type xn)
|
|
|
-\details
|
|
|
- The function sets section execution-never attribute
|
|
|
+| Bits | Name | Function |
|
|
|
+| :------ | :------------ | :------------------------------------------------------------- |
|
|
|
+| [31:24] | - | Reserved. |
|
|
|
+| [23:0] | INTID | The interrupt number of the finished interrupt. |
|
|
|
+
|
|
|
+ \var __IM uint32_t GICInterface_Type::C_HPPIR
|
|
|
+\details CPU Interface Highest Priority Pending Interrupt Register
|
|
|
|
|
|
-\fn __STATIC_INLINE int MMU_DomainSection(uint32_t *descriptor_l1, uint8_t domain)
|
|
|
-\details
|
|
|
-The function sets section domain.
|
|
|
+| Bits | Name | Function |
|
|
|
+| :------ | :------------ | :------------------------------------------------------------- |
|
|
|
+| [31:24] | - | Reserved. |
|
|
|
+| [23:0] | INTID | The INTID of the signaled interrupt. |
|
|
|
|
|
|
-\fn __STATIC_INLINE int MMU_PSection(uint32_t *descriptor_l1, mmu_ecc_check_Type p_bit)
|
|
|
-\details
|
|
|
- The function sets section parity check
|
|
|
+\var __IM uint32_t GICInterface_Type::C_IIDR
|
|
|
+\details CPU Interface Identification Register
|
|
|
|
|
|
-\fn __STATIC_INLINE int MMU_APSection(uint32_t *descriptor_l1, mmu_access_Type user, mmu_access_Type priv, uint32_t afe)
|
|
|
-\details
|
|
|
-The function sets section access privileges
|
|
|
+| Bits | Name | Function |
|
|
|
+| :------ | :------------ | :------------------------------------------------------------- |
|
|
|
+| [31:20] | ProductID | An IMPLEMENTATION DEFINED product identifier |
|
|
|
+| [19:16] | Arch_version | The version of the GIC architecture that is implemented. |
|
|
|
+| [15:12] | Revision | An IMPLEMENTATION DEFINED revision number for the CPU interface. |
|
|
|
+| [11:0] | Implementer | Contains the JEP106 code of the company that implemented the CPU interface. |
|
|
|
|
|
|
-\fn __STATIC_INLINE int MMU_SharedSection(uint32_t *descriptor_l1, mmu_shared_Type s_bit)
|
|
|
-\details
|
|
|
- The function sets section shareability
|
|
|
|
|
|
-\fn __STATIC_INLINE int MMU_GlobalSection(uint32_t *descriptor_l1, mmu_global_Type g_bit)
|
|
|
-\details
|
|
|
- The function sets section Global attribute
|
|
|
+\var __IOM uint32_t GICInterface_Type::C_PMR
|
|
|
+\details CPU Interface Priority Mask Register
|
|
|
|
|
|
-\fn __STATIC_INLINE int MMU_SecureSection(uint32_t *descriptor_l1, mmu_secure_Type s_bit)
|
|
|
-\details
|
|
|
- The function sets section Global attribute
|
|
|
+| Bits | Name | Function |
|
|
|
+| :------ | :------------ | :------------------------------------------------------------- |
|
|
|
+| [31:8] | - | Reserved. |
|
|
|
+| [7:0] | Priority | The priority mask level for the CPU interface. |
|
|
|
|
|
|
-\fn __STATIC_INLINE int MMU_XNPage(uint32_t *descriptor_l2, mmu_execute_Type xn, mmu_region_size_Type page)
|
|
|
-\details
|
|
|
- The function sets 4k/64k page execution-never attribute
|
|
|
+\note IMPLEMENTATION DEFINED unsupported priority bits might be RAZ/WI.
|
|
|
+
|
|
|
+\var __IOM uint32_t GICInterface_Type::C_BPR
|
|
|
+\details CPU Interface Binary Point Register
|
|
|
|
|
|
-\fn __STATIC_INLINE int MMU_DomainPage(uint32_t *descriptor_l1, uint8_t domain)
|
|
|
-\details
|
|
|
- The function sets 4k/64k page domain
|
|
|
+| Bits | Name | Function |
|
|
|
+| :------ | :------------ | :------------------------------------------------------------- |
|
|
|
+| [31:3] | - | Reserved. |
|
|
|
+| [2:0] | Binary_Point | Controls how the 8-bit interrupt priority field is split into a group priority field and a subpriority field. |
|
|
|
|
|
|
-\fn __STATIC_INLINE int MMU_PPage(uint32_t *descriptor_l1, mmu_ecc_check_Type p_bit)
|
|
|
-\details
|
|
|
- The function sets 4k/64k page parity check
|
|
|
+The binary point (values 0-7) defines the amount of priority bits used as subpriority. Please
|
|
|
+refer to the section Interrupt prioritization in the
|
|
|
+<a href="http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ihi0048b/index.html">ARM Generic Interrupt Controller Architecture Specificaton</a>
|
|
|
+for details.
|
|
|
|
|
|
-\fn __STATIC_INLINE int MMU_APPage(uint32_t *descriptor_l2, mmu_access_Type user, mmu_access_Type priv, uint32_t afe)
|
|
|
-\details
|
|
|
- The function sets 4k/64k page access privileges
|
|
|
-\fn __STATIC_INLINE int MMU_SharedPage(uint32_t *descriptor_l2, mmu_shared_Type s_bit)
|
|
|
-\details
|
|
|
- The function sets 4k/64k page shareability
|
|
|
+\var __IOM uint32_t GICInterface_Type::C_ABPR
|
|
|
+\details CPU Interface Aliased Binary Point Register
|
|
|
+\see GICInterface_Type::C_BPR
|
|
|
|
|
|
-\fn __STATIC_INLINE int MMU_GlobalPage(uint32_t *descriptor_l2, mmu_global_Type g_bit)
|
|
|
-\details
|
|
|
- The function sets 4k/64k page Global attribute
|
|
|
+\var __OM uint32_t GICInterface_Type::C_AEOIR
|
|
|
+\details CPU Interface Aliased End Of Interrupt Register
|
|
|
+\see GICInterface_Type::C_EOIR
|
|
|
|
|
|
-\fn __STATIC_INLINE int MMU_SecurePage(uint32_t *descriptor_l1, mmu_secure_Type s_bit)
|
|
|
-\details
|
|
|
- The function sets 4k/64k page Global attribute
|
|
|
+\var __IM uint32_t GICInterface_Type::C_AHPPIR
|
|
|
+\details CPU Interface Aliased Highest Priority Pending Interrupt Register
|
|
|
+\see GICInterface_Type::C_HPPIR
|
|
|
|
|
|
-\fn __STATIC_INLINE int MMU_MemorySection(uint32_t *descriptor_l1, mmu_memory_Type mem, mmu_cacheability_Type outer, mmu_cacheability_Type inner)
|
|
|
-\details
|
|
|
- The function sets section memory attributes
|
|
|
+\var __IM uint32_t GICInterface_Type::C_AIAR
|
|
|
+\details CPU Interface Aliased Interrupt Acknowledge Register
|
|
|
+\see GICInterface_Type::C_IAR
|
|
|
|
|
|
-\fn __STATIC_INLINE int MMU_MemoryPage(uint32_t *descriptor_l2, mmu_memory_Type mem, mmu_cacheability_Type outer, mmu_cacheability_Type inner, mmu_region_size_Type page)
|
|
|
-\details
|
|
|
- The function sets 4k/64k page memory attributes
|
|
|
+\var __IOM uint32_t GICInterface_Type::C_APR[4]
|
|
|
+\details CPU Interface Active Priorities Registers
|
|
|
+\note The register values are IMPLEMENTATION DEFINED.
|
|
|
|
|
|
-\fn __STATIC_INLINE int MMU_GetSectionDescriptor(uint32_t *descriptor, mmu_region_attributes_Type reg)
|
|
|
-\details
|
|
|
- The function creates a section descriptor.
|
|
|
+\var __OM uint32_t GICInterface_Type::C_DIR
|
|
|
+\details CPU Interface Deactivate Interrupt Register
|
|
|
|
|
|
-\fn __STATIC_INLINE int MMU_GetPageDescriptor(uint32_t *descriptor, uint32_t *descriptor2, mmu_region_attributes_Type reg)
|
|
|
-\details
|
|
|
- The function creates a 4k/64k page descriptor.
|
|
|
- Assumptions:
|
|
|
- - TEX remap disabled, so memory type and attributes are described directly by bits in the descriptor
|
|
|
- - Functions always return 0
|
|
|
+| Bits | Name | Function |
|
|
|
+| :------ | :---- | :------------------------------------------------------------- |
|
|
|
+| [31:24] | - | Reserved. |
|
|
|
+| [23:0] | INTID | The INTID of the interrupt to be disabled. |
|
|
|
|
|
|
-\fn __STATIC_INLINE void MMU_TTSection(uint32_t *ttb, uint32_t base_address, uint32_t count, uint32_t descriptor_l1)
|
|
|
-\fn __STATIC_INLINE void MMU_TTPage4k(uint32_t *ttb, uint32_t base_address, uint32_t count, uint32_t descriptor_l1, uint32_t *ttb_l2, uint32_t descriptor_l2 )
|
|
|
-\fn __STATIC_INLINE void MMU_TTPage64k(uint32_t *ttb, uint32_t base_address, uint32_t count, uint32_t descriptor_l1, uint32_t *ttb_l2, uint32_t descriptor_l2 )
|
|
|
-\fn __STATIC_INLINE void MMU_Enable(void)
|
|
|
-\details
|
|
|
- Set M bit 0 to enable the MMU
|
|
|
- Set AFE bit to enable simplified access permissions model
|
|
|
- Clear TRE bit to disable TEX remap and A bit to disable strict alignment fault checking
|
|
|
+\var __IOM uint32_t GICInterface_Type::C_NSAPR[4]
|
|
|
+\details CPU Interface Non-secure Active Priorities Registers
|
|
|
+\note The register values are IMPLEMENTATION DEFINED.
|
|
|
+\see GICInterface_Type::C_APR[4]
|
|
|
|
|
|
-\fn __STATIC_INLINE void MMU_Disable(void)
|
|
|
+\var __IM uint32_t GICInterface_Type::C_RPR
|
|
|
+\details CPU Interface Running Priority Register
|
|
|
|
|
|
-\fn __STATIC_INLINE void MMU_InvalidateTLB(void)
|
|
|
+| Bits | Name | Function |
|
|
|
+| :------ | :------- | :------------------------------------------------------------- |
|
|
|
+| [31:8] | - | Reserved. |
|
|
|
+| [7:0] | Priority | The current running priority on the CPU interface. |
|
|
|
+
|
|
|
+\var __IOM uint32_t GICInterface_Type::C_STATUSR
|
|
|
+\details CPU Interface Status Register
|
|
|
+
|
|
|
+| Bits | Name | Function |
|
|
|
+| :------ | :------- | :------------------------------------------------------------- |
|
|
|
+| [31:5] | - | Reserved. |
|
|
|
+| [4] | ASV | Attempted security violation. |
|
|
|
+| [3] | WROD | Write to an RO location. |
|
|
|
+| [2] | RWOD | Read of a WO location. |
|
|
|
+| [1] | WRD | Write to a reserved location. |
|
|
|
+| [0] | RRD | Read of a reserved location. |
|
|
|
*/
|
|
|
|
|
|
-/** @} */
|
|
|
-/* end of MMU_func_gr */
|
|
|
+/* ########################## GICDistributor_Type Member ########################## */
|
|
|
+/**
|
|
|
+\var __IOM uint32_t GICDistributor_Type::D_CTLR
|
|
|
+\details Distributor Control Register
|
|
|
|
|
|
-/** @} */
|
|
|
-/* end of MMU_functions */
|
|
|
+When access is Secure, in a system that supports two Security states:
|
|
|
+
|
|
|
+| Bits | Name | Function |
|
|
|
+| :------ | :------------ | :------------------------------------------------------------- |
|
|
|
+| [31] | RWP | Indicates whether a register write is in progress or not. |
|
|
|
+| [30:8] | - | Reserved. |
|
|
|
+| [7] | EINWF | Enable 1 of N Wakeup Functionality, if available. |
|
|
|
+| [6] | DS | Disable Security. |
|
|
|
+| [5] | ARE_NS | Affinity Routing Enable, Non-secure state. |
|
|
|
+| [4] | ARE_S | Affinity Routing Enable, Secure state. |
|
|
|
+| [3] | - | Reserved. |
|
|
|
+| [2] | EnableGrp1S | Enable Secure Group 1 interrupts. |
|
|
|
+| [1] | EnableGrp1NS | Enable Non-secure Group 1 interrupts. |
|
|
|
+| [0] | EnableGrp0 | Enable Group 0 interrupts. |
|
|
|
+
|
|
|
+When access is Non-secure, in a system that supports two Security states:
|
|
|
+
|
|
|
+| Bits | Name | Function |
|
|
|
+| :------ | :------------ | :------------------------------------------------------------- |
|
|
|
+| [31] | RWP | Indicates whether a register write is in progress or not. |
|
|
|
+| [30:5] | - | Reserved. |
|
|
|
+| [4] | ARE_NS | Affinity Routing Enable, Non-secure state. |
|
|
|
+| [3:2] | - | Reserved. |
|
|
|
+| [1] | EnableGrp1A | Enable Non-secure Group 1 interrupts. |
|
|
|
+| [0] | EnableGrp1 | Enable Non-secure Group 1 interrupts. |
|
|
|
+
|
|
|
+When in a system that supports only a single Security state:
|
|
|
+
|
|
|
+| Bits | Name | Function |
|
|
|
+| :------ | :------------ | :------------------------------------------------------------- |
|
|
|
+| [31] | RWP | Indicates whether a register write is in progress or not. |
|
|
|
+| [30:8] | - | Reserved. |
|
|
|
+| [7] | EINWF | Enable 1 of N Wakeup Functionality, if available. |
|
|
|
+| [6] | DS | Disable Security. |
|
|
|
+| [5] | - | Reserved. |
|
|
|
+| [4] | ARE | Affinity Routing Enable. |
|
|
|
+| [3:2] | - | Reserved. |
|
|
|
+| [1] | EnableGrp1 | Enable Group 1 interrupts. |
|
|
|
+| [0] | EnableGrp0 | Enable Group 0 interrupts. |
|
|
|
+
|
|
|
+\var __IM uint32_t GICDistributor_Type::D_TYPER
|
|
|
+\details Interrupt Controller Type Register
|
|
|
+
|
|
|
+| Bits | Name | Function |
|
|
|
+| :------ | :------------ | :------------------------------------------------------------- |
|
|
|
+| [31:16] | - | Reserved. |
|
|
|
+| [15:11] | LSPI | Maximum number of lockable shared interrupts. |
|
|
|
+| [10] | SecurityExtn | Security Extensions: 0 - not implemented. 1 - implemented. |
|
|
|
+| [9:8] | - | Reserved. |
|
|
|
+| [7:5] | CPUNumber | Number of implemented CPU interfaces [=CPUNumber+1] |
|
|
|
+| [4:0] | ITLinesNumber | Maximum number of interrups supported [=32*(ITLinesNumber+1)]. |
|
|
|
+
|
|
|
+\var __IM uint32_t GICDistributor_Type::D_IIDR
|
|
|
+\details Distributor Implementer Identification Register
|
|
|
+
|
|
|
+| Bits | Name | Function |
|
|
|
+| :------ | :------------ | :------------------------------------------------------------- |
|
|
|
+| [31:24] | ProductID | An IMPLEMENTATION DEFINED product identifier |
|
|
|
+| [23:20] | - | Reserved. |
|
|
|
+| [19:16] | Variant | An IMPLEMENTATION DEFINED variant number. |
|
|
|
+| [15:12] | Revision | An IMPLEMENTATION DEFINED revision number. |
|
|
|
+| [11:0] | Implementer | Contains the JEP106 code of the company implemented the GICD. |
|
|
|
+
|
|
|
+\var __IOM uint8_t GICDistributor_Type::D_ITARGETSR[1020]
|
|
|
+\details Interrupt Processor Targets Registers
|
|
|
+
|
|
|
+Each bit in the target field corresponds to one CPU interface. A CPU targets field bit that corresponds
|
|
|
+to an unimplemented CPU interface is RAZ/WI.
|
|
|
|
|
|
+| CPU target field value | Interrupt targets |
|
|
|
+| :--------------------- | :---------------- |
|
|
|
+| 0bxxxxxxx1 | CPU interface 0 |
|
|
|
+| 0bxxxxxx1x | CPU interface 1 |
|
|
|
+| 0bxxxxx1xx | CPU interface 2 |
|
|
|
+| 0bxxxx1xxx | CPU interface 3 |
|
|
|
+| 0bxxx1xxxx | CPU interface 4 |
|
|
|
+| 0bxx1xxxxx | CPU interface 5 |
|
|
|
+| 0bx1xxxxxx | CPU interface 6 |
|
|
|
+| 0b1xxxxxxx | CPU interface 7 |
|
|
|
+
|
|
|
+\var __IOM uint32_t GICDistributor_Type::D_IGROUPR[32]
|
|
|
+\details Interrupt Group Registers
|
|
|
+
|
|
|
+Each bit corresponds to one interrupt:
|
|
|
+ - Register index is given by INTID/32
|
|
|
+ - Bit number is given by INTID%32
|
|
|
+
|
|
|
+And the value denotes:
|
|
|
+- 0 When \ref GICDistributor_Type::D_CTLR "D_CTLR".DS==1, the corresponding interrupt is Group 0\n
|
|
|
+ When \ref GICDistributor_Type::D_CTLR "D_CTLR".DS==0, the corresponding interrupt is Secure.
|
|
|
+- 1 When \ref GICDistributor_Type::D_CTLR "D_CTLR".DS==1, the corresponding interrupt is Group 1.\n
|
|
|
+ When \ref GICDistributor_Type::D_CTLR "D_CTLR".DS==0, the corresponding interrupt is Non-secure Group 1.
|
|
|
+
|
|
|
+\var __IO uint32_t GICDistributor_Type::D_CLRSPI_NSR
|
|
|
+\details Clear Non-secure SPI Pending Register
|
|
|
+
|
|
|
+| Bits | Name | Function |
|
|
|
+| :------ | :------------ | :------------------------------------------------ |
|
|
|
+| [31:10] | - | Reserved. |
|
|
|
+| [9:0] | INTID | The interrupt number to clear pending state from. |
|
|
|
+
|
|
|
+\var __IO uint32_t GICDistributor_Type::D_CLRSPI_SR
|
|
|
+\details Clear Secure SPI Pending Register
|
|
|
+
|
|
|
+| Bits | Name | Function |
|
|
|
+| :------ | :------------ | :------------------------------------------------ |
|
|
|
+| [31:10] | - | Reserved. |
|
|
|
+| [9:0] | INTID | The interrupt number to clear pending state from. |
|
|
|
+
|
|
|
+\var __IOM uint32_t GICDistributor_Type::D_IGRPMODR[32]
|
|
|
+\details Interrupt Group Modifier Registers
|
|
|
+
|
|
|
+Each bit corresponds to one interrupt:
|
|
|
+ - Register index is given by INTID/32
|
|
|
+ - Bit number is given by INTID%32
|
|
|
+
|
|
|
+\var __IOM uint64_t GICDistributor_Type::D_IROUTER[988]
|
|
|
+\details Interrupt Routing Registers
|
|
|
+
|
|
|
+| Bits | Name | Function |
|
|
|
+| :------ | :------------ | :------------------------------------------------------------ |
|
|
|
+| [63:40] | - | Reserved. |
|
|
|
+| [39:32] | Aff3 | Affinity level 3, the least significant affinity level field. |
|
|
|
+| [31] | IRM | Interrupt Routing Mode. Defines how SPIs are routed in an affinity hierarchy. |
|
|
|
+| [30:24] | - | Reserved. |
|
|
|
+| [23:16] | Aff2 | Affinity level 2, an intermediate affinity level field. |
|
|
|
+| [15:8] | Aff1 | Affinity level 1, an intermediate affinity level field. |
|
|
|
+| [7:0] | Aff0 | Affinity level 0, the most significant affinity level field. |
|
|
|
+
|
|
|
+\var __IOM uint32_t GICDistributor_Type::D_NSACR[64]
|
|
|
+\details Non-secure Access Control Registers
|
|
|
+
|
|
|
+Each two bits corresponds to one interrupt:
|
|
|
+ - Register index is given by INTID/16
|
|
|
+ - Bit number is given by 2*INTID%16
|
|
|
+
|
|
|
+The possible values of each 2-bit field are:
|
|
|
+ - 00 - Non-secure accesses to all fields associated with the corresponding interrupt are permitted.
|
|
|
+ - 01 - Non-secure accesses are only permitted to requesting fields.
|
|
|
+ - 10 - As 01, additionally accesses to clearing field are permitted.
|
|
|
+ - 11 - As 10, additionally accesses to target and routing fields are permitted.
|
|
|
+
|
|
|
+\var __IO uint32_t GICDistributor_Type::D_SETSPI_NSR
|
|
|
+\details Set Non-secure SPI Pending Register
|
|
|
+
|
|
|
+| Bits | Name | Function |
|
|
|
+| :------ | :------------ | :------------------------------------------------ |
|
|
|
+| [31:10] | - | Reserved. |
|
|
|
+| [9:0] | INTID | The interrupt number to set pending state for. |
|
|
|
+
|
|
|
+\var __IO uint32_t GICDistributor_Type::D_SETSPI_SR
|
|
|
+\details Set Secure SPI Pending Register
|
|
|
+
|
|
|
+| Bits | Name | Function |
|
|
|
+| :------ | :------------ | :------------------------------------------------ |
|
|
|
+| [31:10] | - | Reserved. |
|
|
|
+| [9:0] | INTID | The interrupt number to set pending state for. |
|
|
|
+
|
|
|
+\var __IOM uint8_t GICDistributor_Type::D_SPENDSGIR[16]
|
|
|
+\details SGI Set-Pending Registers
|
|
|
+Each register corresponds to one software generated interrupt (SGI).
|
|
|
+
|
|
|
+Reading from this register reveals
|
|
|
+ - 0 - interrupt is not pending
|
|
|
+ - 1 - interrupt is pending
|
|
|
+
|
|
|
+Writing to this register causes
|
|
|
+ - 0 - no effect
|
|
|
+ - 1 - adds the pending state
|
|
|
+
|
|
|
+\var __IOM uint8_t GICDistributor_Type::D_CPENDSGIR[16]
|
|
|
+\details SGI Clear-Pending Registers
|
|
|
+Each register corresponds to one software generated interrupt (SGI).
|
|
|
+
|
|
|
+Reading from this register reveals
|
|
|
+ - 0 - interrupt is not pending
|
|
|
+ - 1 - interrupt is pending
|
|
|
+
|
|
|
+Writing to this register causes
|
|
|
+ - 0 - no effect
|
|
|
+ - 1 - removes the pending state
|
|
|
+
|
|
|
+\var __IOM uint32_t GICDistributor_Type::D_STATUSR
|
|
|
+\details Error Reporting Status Register
|
|
|
+
|
|
|
+| Bits | Name | Function |
|
|
|
+| :------ | :------------ | :------------------------------------------------ |
|
|
|
+| [31:4] | - | Reserved. |
|
|
|
+| [3] | WROD | Write to an RO location. |
|
|
|
+| [2] | RWOD | Read of a WO location. |
|
|
|
+| [1] | WRD | Write to a reserved location. |
|
|
|
+| [0] | RRD | Read of a reserved location. |
|
|
|
+
|
|
|
+\var __IOM uint32_t GICDistributor_Type::D_ISENABLER[32]
|
|
|
+\details Interrupt Set-Enable Registers
|
|
|
+
|
|
|
+Each bit corresponds to one interrupt:
|
|
|
+ - Register index is given by INTID/32
|
|
|
+ - Bit number is given by INTID%32
|
|
|
+
|
|
|
+\note Bits corresponding to unimplemented interrupts are RAZ/WI.
|
|
|
+
|
|
|
+\var __IOM uint32_t GICDistributor_Type::D_ICENABLER[32]
|
|
|
+\details Interrupt Clear-Enable Registers
|
|
|
+
|
|
|
+Each bit corresponds to one interrupt:
|
|
|
+ - Register index is given by INTID/32
|
|
|
+ - Bit number is given by INTID%32
|
|
|
+
|
|
|
+\note Bits corresponding to unimplemented interrupts are RAZ/WI.
|
|
|
+
|
|
|
+\var __IOM uint32_t GICDistributor_Type::D_ISPENDR[32]
|
|
|
+\details Interrupt Set-Pending Registers
|
|
|
+
|
|
|
+Each bit corresponds to one interrupt:
|
|
|
+ - Register index is given by INTID/32
|
|
|
+ - Bit number is given by INTID%32
|
|
|
+
|
|
|
+\note Bits corresponding to unimplemented interrupts are RAZ/WI.
|
|
|
+
|
|
|
+\var __IOM uint32_t GICDistributor_Type::D_ICPENDR[32]
|
|
|
+\details Interrupt Clear-Pending Registers
|
|
|
+
|
|
|
+Each bit corresponds to one interrupt:
|
|
|
+ - Register index is given by INTID/32
|
|
|
+ - Bit number is given by INTID%32
|
|
|
+
|
|
|
+\note Bits corresponding to unimplemented interrupts are RAZ/WI.
|
|
|
+
|
|
|
+\var __IOM uint32_t GICDistributor_Type::D_ICFGR[64]
|
|
|
+\details Interrupt Configuration Registers
|
|
|
+
|
|
|
+Each interrupt can be configured by two corresponding bits:
|
|
|
+
|
|
|
+| Bits | Name | Function |
|
|
|
+| :------------- | :------------ | :------------------------------------------------------------- |
|
|
|
+| [2*INTID%16+1] | Edge | Interrupt is: 0 - level sensitive, 1 - edge triggered |
|
|
|
+| [2*INTID%16] | Model | 0 - N-N Model, 1 - 1-N Model; RAZ/WI when unsupported |
|
|
|
+
|
|
|
+\var __IOM uint8_t GICDistributor_Type::D_IPRIORITYR[1020]
|
|
|
+\details Interrupt Priority Registers
|
|
|
+
|
|
|
+A GIC might implement fewer than eight priority bits, but must implement at least bits [7:4] of each
|
|
|
+field. In each field, unimplemented bits are RAZ/WI.
|
|
|
+
|
|
|
+\note A register field corresponding to an unimplemented interrupt is RAZ/WI.
|
|
|
+
|
|
|
+\var __IOM uint32_t GICDistributor_Type::D_ISACTIVER[32]
|
|
|
+\details Interrupt Set-Active Registers
|
|
|
+
|
|
|
+Each bit corresponds to one interrupt:
|
|
|
+ - Register index is given by INTID/32
|
|
|
+ - Bit number is given by INTID%32
|
|
|
+
|
|
|
+\note Bits corresponding to unimplemented interrupts are RAZ/WI.
|
|
|
+
|
|
|
+\var __IOM uint32_t GICDistributor_Type::D_ICACTIVER[32]
|
|
|
+\details Interrupt Clear-Active Registers
|
|
|
+
|
|
|
+Each bit corresponds to one interrupt:
|
|
|
+ - Register index is given by INTID/32
|
|
|
+ - Bit number is given by INTID%32
|
|
|
+
|
|
|
+\note Bits corresponding to unimplemented interrupts are RAZ/WI.
|
|
|
+
|
|
|
+\var __OM uint32_t GICDistributor_Type::D_SGIR
|
|
|
+\details Software Generated Interrupt Register
|
|
|
+
|
|
|
+| Bits | Name | Function |
|
|
|
+| :------ | :------------ | :--------------------------------------------------------------- |
|
|
|
+| [31:26] | - | Reserved. |
|
|
|
+| [25:24] | TargetFilterList | Determines how the Distributor processes the requested SGI. |
|
|
|
+| [23:16] | CPUTargetList | When TargetListFilter is 00, this field defines the CPU interfaces to which the Distributor must forward the interrupt. |
|
|
|
+| [15] | NSATT | Specifies the required group of the SGI. |
|
|
|
+| [14:4] | - | Reserved. |
|
|
|
+| [3:0] | INTID | The INTID of the SGI to forward to the specified CPU interfaces. |
|
|
|
+
|
|
|
+Refer to \ref GICDistributor_Type::D_ITARGETSR "D_ITARGETSR" for details on TargetFilterList field.
|
|
|
+*/
|
|
|
+
|
|
|
+
|
|
|
+/* ########################## Private Timer Member ########################## */
|
|
|
/**
|
|
|
-@}
|
|
|
+
|
|
|
+\var uint32_t CNTP_CTL_Type::ENABLE
|
|
|
+\details Enables the timer.
|
|
|
+
|
|
|
+Permitted values are:
|
|
|
+ - 0 - Timer disabled.
|
|
|
+ - 1 - Timer enabled.
|
|
|
+
|
|
|
+\var uint32_t CNTP_CTL_Type::IMASK
|
|
|
+\details Timer output signal mask bit.
|
|
|
+
|
|
|
+Permitted values are:
|
|
|
+ - 0 - Timer output signal is not masked.
|
|
|
+ - 1 - Timer output signal is masked.
|
|
|
+
|
|
|
+
|
|
|
+\var uint32_t CNTP_CTL_Type::ISTATUS
|
|
|
+\details The status of the timer.
|
|
|
+
|
|
|
+This bit indicates whether the timer condition is asserted:
|
|
|
+ - 0 - Timer condition is not asserted.
|
|
|
+ - 1 - Timer condition is asserted.
|
|
|
*/
|
|
|
+
|
|
|
/* end of CMSIS_Core_FunctionInterface - currently disabled */
|