46#ifdef LOSCFG_ARCH_CORTEX_M3
47#define CORTEX_M_VERSION 3U
48#elif defined(LOSCFG_ARCH_CORTEX_M4)
49#define CORTEX_M_VERSION 4U
50#elif defined(LOSCFG_ARCH_CORTEX_M7)
51#define CORTEX_M_VERSION 7U
52#elif defined(LOSCFG_ARCH_CORTEX_M55)
53#define CORTEX_M_VERSION 55U
55#error "Unsupported Arch"
58#if defined(LOSCFG_ARCH_CORTEX_M3) || defined(LOSCFG_ARCH_CORTEX_M4) || \
59 defined(LOSCFG_ARCH_CORTEX_M7) || defined(LOSCFG_ARCH_CORTEX_M55)
60#ifndef __NVIC_PRIO_BITS
61#define __NVIC_PRIO_BITS 3U
65#define IRQ2OFFSET(irqNum) (((irqNum) >> 5U) << 2U)
66#define NVIC_PRIO_MASK 0xFFU
67#define NVIC_PRIO_BITS 8U
68#define NVIC_CALC_PRIOVALUE(prio) (((prio) << (NVIC_PRIO_BITS - (UINT8)__NVIC_PRIO_BITS)) & NVIC_PRIO_MASK)
71#define NVIC_ISERx(irqNum) (0xE000E100U + IRQ2OFFSET(irqNum))
74#define NVIC_IPRx(irqNum) (0xE000E400U + (irqNum))
77#define NVIC_ICERx(irqNum) (0xE000E180U + IRQ2OFFSET(irqNum))
80#define NVIC_ISPRx(irqNum) (0xE000E200U + IRQ2OFFSET(irqNum))
83#define NVIC_ICPRx(irqNum) (0xE000E280U + IRQ2OFFSET(irqNum))
86#define SCB_ICSR 0xE000ED04U
89#define SCB_VTOR 0xE000ED08U
96#define SCB_AIRCR 0xE000ED0CU
97#define SCB_AIRCR_VECTKEY_IDX 16U
98#define SCB_AIRCR_PRIGROUP_IDX 8U
99#define SCB_AIRCR_VECTKEY_MASK ((UINT32)0xFFFF << SCB_AIRCR_VECTKEY_IDX)
100#define SCB_AIRCR_PRIGROUP_MASK ((UINT32)0x7 << SCB_AIRCR_PRIGROUP_IDX)
101#define SCB_AIRCR_VECTKEY_KEY (UINT32)0x5FA
104#define SCB_SHPRx(irqNum) (0xE000ED18U + (irqNum) - 4U)
111#ifndef OS_HWI_PRIO_HIGHEST
112#define OS_HWI_PRIO_HIGHEST 0
119#ifndef OS_HWI_PRIO_LOWEST
120#define OS_HWI_PRIO_LOWEST 7
127#define OS_SYS_VECTOR_CNT 16
133#define OS_NVIC_AIRCR_PRIGROUP 7
139#define OS_SYSTICK_CONTROL_REG 0xE000E010
145#define OS_SYSTICK_CURRENT_REG 0xE000E018
151#define OS_NVIC_PRI_BASE 0xE000E400
157#define OS_NVIC_SETENA_BASE 0xE000E100
163#define OS_NVIC_SETPEND_BASE 0xE000E200
169#define OS_NVIC_INT_ACT_BASE 0xE000E300
175#define OS_NVIC_CLRENA_BASE 0xE000E180
181#define OS_NVIC_INT_CTRL 0xE000ED04
187#define OS_NVIC_VTOR 0xE000ED08
193#define OS_NVIC_AIRCR 0xE000ED0C
199#define OS_NVIC_EXCPRI_BASE 0xE000ED18
205#define OS_EXC_RESET 1
217#define OS_EXC_HARD_FAULT 3
223#define OS_EXC_MPU_FAULT 4
229#define OS_EXC_BUS_FAULT 5
235#define OS_EXC_USAGE_FAULT 6
241#define OS_EXC_SVC_CALL 11
247#define OS_EXC_DBG_MONITOR 12
253#define OS_EXC_PEND_SV 14
263#ifdef LOSCFG_ARCH_INTERRUPT_TAKEOVER
void(* HWI_PROC_FUNC)(void)
Define the type of a hardware interrupt handling function.
Definition los_hwi.h:356
#define VOID
Definition los_typedef.h:88