* arch/arm/src/arm_m/nvic.h
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership. The
* ASF licenses this file to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
****************************************************************************/
#ifndef __ARCH_ARM_SRC_ARM_M_NVIC_H
#define __ARCH_ARM_SRC_ARM_M_NVIC_H
* Included Files
****************************************************************************/
#include <nuttx/config.h>
#include <nuttx/compiler.h>
#ifdef CONFIG_ARCH_ARMV6M
# include "nvic_legacy.h"
#endif
* Pre-processor Definitions
****************************************************************************/
* Reset stack pointer value
*/
#define NVIC_IRQ_NMI (2)
#define NVIC_IRQ_HARDFAULT (3)
#define NVIC_IRQ_MEMFAULT (4)
#define NVIC_IRQ_BUSFAULT (5)
#define NVIC_IRQ_USAGEFAULT (6)
#define NVIC_IRQ_SECUREFAULT (7)
#define NVIC_IRQ_SVCALL (11)
#define NVIC_IRQ_DBGMONITOR (12)
#define NVIC_IRQ_PENDSV (14)
#define NVIC_IRQ_SYSTICK (15)
* These definitions are chip-specific
*/
#define NVIC_IRQ_FIRST (16)
#define ARM_NVIC_BASE 0xe000e000
#define ARM_NS_OFFSET 0x00020000
#define ARM_NVIC_BASE_NS (ARM_NVIC_BASE + ARM_NS_OFFSET)
#define NVIC_ICTR_OFFSET 0x0004
#define NVIC_ACTLR_OFFSET 0x0008
#define NVIC_CPPWR_OFFSET 0x000c
#define NVIC_SYSTICK_CTRL_OFFSET 0x0010
#define NVIC_SYSTICK_RELOAD_OFFSET 0x0014
#define NVIC_SYSTICK_CURRENT_OFFSET 0x0018
#define NVIC_SYSTICK_CALIB_OFFSET 0x001c
#define NVIC_IRQ_ENABLE_OFFSET(n) (0x0100 + 4*((n) >> 5))
#define NVIC_IRQ0_31_ENABLE_OFFSET 0x0100
#define NVIC_IRQ32_63_ENABLE_OFFSET 0x0104
#define NVIC_IRQ64_95_ENABLE_OFFSET 0x0108
#define NVIC_IRQ96_127_ENABLE_OFFSET 0x010c
#define NVIC_IRQ128_159_ENABLE_OFFSET 0x0110
#define NVIC_IRQ160_191_ENABLE_OFFSET 0x0114
#define NVIC_IRQ192_223_ENABLE_OFFSET 0x0118
#define NVIC_IRQ224_239_ENABLE_OFFSET 0x011c
#define NVIC_IRQ_CLEAR_OFFSET(n) (0x0180 + 4*((n) >> 5))
#define NVIC_IRQ0_31_CLEAR_OFFSET 0x0180
#define NVIC_IRQ32_63_CLEAR_OFFSET 0x0184
#define NVIC_IRQ64_95_CLEAR_OFFSET 0x0188
#define NVIC_IRQ96_127_CLEAR_OFFSET 0x018c
#define NVIC_IRQ128_159_CLEAR_OFFSET 0x0190
#define NVIC_IRQ160_191_CLEAR_OFFSET 0x0194
#define NVIC_IRQ192_223_CLEAR_OFFSET 0x0198
#define NVIC_IRQ224_239_CLEAR_OFFSET 0x019c
#define NVIC_IRQ_PEND_OFFSET(n) (0x0200 + 4*((n) >> 5))
#define NVIC_IRQ0_31_PEND_OFFSET 0x0200
#define NVIC_IRQ32_63_PEND_OFFSET 0x0204
#define NVIC_IRQ64_95_PEND_OFFSET 0x0208
#define NVIC_IRQ96_127_PEND_OFFSET 0x020c
#define NVIC_IRQ128_159_PEND_OFFSET 0x0210
#define NVIC_IRQ160_191_PEND_OFFSET 0x0214
#define NVIC_IRQ192_223_PEND_OFFSET 0x0218
#define NVIC_IRQ224_239_PEND_OFFSET 0x021c
#define NVIC_IRQ_CLRPEND_OFFSET(n) (0x0280 + 4*((n) >> 5))
#define NVIC_IRQ0_31_CLRPEND_OFFSET 0x0280
#define NVIC_IRQ32_63_CLRPEND_OFFSET 0x0284
#define NVIC_IRQ64_95_CLRPEND_OFFSET 0x0288
#define NVIC_IRQ96_127_CLRPEND_OFFSET 0x028c
#define NVIC_IRQ128_159_CLRPEND_OFFSET 0x0290
#define NVIC_IRQ160_191_CLRPEND_OFFSET 0x0294
#define NVIC_IRQ192_223_CLRPEND_OFFSET 0x0298
#define NVIC_IRQ224_239_CLRPEND_OFFSET 0x029c
#define NVIC_IRQ_ACTIVE_OFFSET(n) (0x0300 + 4*((n) >> 5))
#define NVIC_IRQ0_31_ACTIVE_OFFSET 0x0300
#define NVIC_IRQ32_63_ACTIVE_OFFSET 0x0304
#define NVIC_IRQ64_95_ACTIVE_OFFSET 0x0308
#define NVIC_IRQ96_127_ACTIVE_OFFSET 0x030c
#define NVIC_IRQ128_159_ACTIVE_OFFSET 0x0310
#define NVIC_IRQ160_191_ACTIVE_OFFSET 0x0314
#define NVIC_IRQ192_223_ACTIVE_OFFSET 0x0318
#define NVIC_IRQ224_239_ACTIVE_OFFSET 0x031c
#define NVIC_IRQ_TARGET_OFFSET(n) (0x0380 + 4*((n) >> 5))
#define NVIC_IRQ0_31_TARGET_OFFSET 0x0380
#define NVIC_IRQ32_63_TARGET_OFFSET 0x0384
#define NVIC_IRQ64_95_TARGET_OFFSET 0x0388
#define NVIC_IRQ96_127_TARGET_OFFSET 0x038c
#define NVIC_IRQ128_159_TARGET_OFFSET 0x0390
#define NVIC_IRQ160_191_TARGET_OFFSET 0x0394
#define NVIC_IRQ192_223_TARGET_OFFSET 0x0398
#define NVIC_IRQ224_239_TARGET_OFFSET 0x039c
#define NVIC_IRQ_PRIORITY_OFFSET(n) (0x0400 + 4*((n) >> 2))
#define NVIC_IRQ0_3_PRIORITY_OFFSET 0x0400
#define NVIC_IRQ4_7_PRIORITY_OFFSET 0x0404
#define NVIC_IRQ8_11_PRIORITY_OFFSET 0x0408
#define NVIC_IRQ12_15_PRIORITY_OFFSET 0x040c
#define NVIC_IRQ16_19_PRIORITY_OFFSET 0x0410
#define NVIC_IRQ20_23_PRIORITY_OFFSET 0x0414
#define NVIC_IRQ24_27_PRIORITY_OFFSET 0x0418
#define NVIC_IRQ28_31_PRIORITY_OFFSET 0x041c
#define NVIC_IRQ32_35_PRIORITY_OFFSET 0x0420
#define NVIC_IRQ36_39_PRIORITY_OFFSET 0x0424
#define NVIC_IRQ40_43_PRIORITY_OFFSET 0x0428
#define NVIC_IRQ44_47_PRIORITY_OFFSET 0x042c
#define NVIC_IRQ48_51_PRIORITY_OFFSET 0x0430
#define NVIC_IRQ52_55_PRIORITY_OFFSET 0x0434
#define NVIC_IRQ56_59_PRIORITY_OFFSET 0x0438
#define NVIC_IRQ60_63_PRIORITY_OFFSET 0x043c
#define NVIC_IRQ64_67_PRIORITY_OFFSET 0x0440
#define NVIC_IRQ68_71_PRIORITY_OFFSET 0x0444
#define NVIC_IRQ72_75_PRIORITY_OFFSET 0x0448
#define NVIC_IRQ76_79_PRIORITY_OFFSET 0x044c
#define NVIC_IRQ80_83_PRIORITY_OFFSET 0x0450
#define NVIC_IRQ84_87_PRIORITY_OFFSET 0x0454
#define NVIC_IRQ88_91_PRIORITY_OFFSET 0x0458
#define NVIC_IRQ92_95_PRIORITY_OFFSET 0x045c
#define NVIC_IRQ96_99_PRIORITY_OFFSET 0x0460
#define NVIC_IRQ100_103_PRIORITY_OFFSET 0x0464
#define NVIC_IRQ104_107_PRIORITY_OFFSET 0x0468
#define NVIC_IRQ108_111_PRIORITY_OFFSET 0x046c
#define NVIC_IRQ112_115_PRIORITY_OFFSET 0x0470
#define NVIC_IRQ116_119_PRIORITY_OFFSET 0x0474
#define NVIC_IRQ120_123_PRIORITY_OFFSET 0x0478
#define NVIC_IRQ124_127_PRIORITY_OFFSET 0x047c
#define NVIC_IRQ128_131_PRIORITY_OFFSET 0x0480
#define NVIC_IRQ132_135_PRIORITY_OFFSET 0x0484
#define NVIC_IRQ136_139_PRIORITY_OFFSET 0x0488
#define NVIC_IRQ140_143_PRIORITY_OFFSET 0x048c
#define NVIC_IRQ144_147_PRIORITY_OFFSET 0x0490
#define NVIC_IRQ148_151_PRIORITY_OFFSET 0x0494
#define NVIC_IRQ152_155_PRIORITY_OFFSET 0x0498
#define NVIC_IRQ156_159_PRIORITY_OFFSET 0x049c
#define NVIC_IRQ160_163_PRIORITY_OFFSET 0x04a0
#define NVIC_IRQ164_167_PRIORITY_OFFSET 0x04a4
#define NVIC_IRQ168_171_PRIORITY_OFFSET 0x04a8
#define NVIC_IRQ172_175_PRIORITY_OFFSET 0x04ac
#define NVIC_IRQ176_179_PRIORITY_OFFSET 0x04b0
#define NVIC_IRQ180_183_PRIORITY_OFFSET 0x04b4
#define NVIC_IRQ184_187_PRIORITY_OFFSET 0x04b8
#define NVIC_IRQ188_191_PRIORITY_OFFSET 0x04bc
#define NVIC_IRQ192_195_PRIORITY_OFFSET 0x04c0
#define NVIC_IRQ196_199_PRIORITY_OFFSET 0x04c4
#define NVIC_IRQ200_203_PRIORITY_OFFSET 0x04c8
#define NVIC_IRQ204_207_PRIORITY_OFFSET 0x04cc
#define NVIC_IRQ208_211_PRIORITY_OFFSET 0x04d0
#define NVIC_IRQ212_215_PRIORITY_OFFSET 0x04d4
#define NVIC_IRQ216_219_PRIORITY_OFFSET 0x04d8
#define NVIC_IRQ220_223_PRIORITY_OFFSET 0x04dc
#define NVIC_IRQ224_227_PRIORITY_OFFSET 0x04e0
#define NVIC_IRQ228_231_PRIORITY_OFFSET 0x04e4
#define NVIC_IRQ232_235_PRIORITY_OFFSET 0x04e8
#define NVIC_IRQ236_239_PRIORITY_OFFSET 0x04ec
#define NVIC_REVIDR_OFFSET 0x0cfc
#define NVIC_CPUID_BASE_OFFSET 0x0d00
#define NVIC_INTCTRL_OFFSET 0x0d04
#define NVIC_VECTAB_OFFSET 0x0d08
#define NVIC_AIRCR_OFFSET 0x0d0c
#define NVIC_SYSCON_OFFSET 0x0d10
#define NVIC_CFGCON_OFFSET 0x0d14
#define NVIC_SYSH_PRIORITY_OFFSET(n) (0x0d14 + 4*((n) >> 2))
#define NVIC_SYSH4_7_PRIORITY_OFFSET 0x0d18
#define NVIC_SYSH8_11_PRIORITY_OFFSET 0x0d1c
#define NVIC_SYSH12_15_PRIORITY_OFFSET 0x0d20
#define NVIC_SYSHCON_OFFSET 0x0d24
#define NVIC_CFAULTS_OFFSET 0x0d28
#define NVIC_HFAULTS_OFFSET 0x0d2c
#define NVIC_DFAULTS_OFFSET 0x0d30
#define NVIC_MEMMANAGE_ADDR_OFFSET 0x0d34
#define NVIC_BFAULT_ADDR_OFFSET 0x0d38
#define NVIC_AFAULTS_OFFSET 0x0d3c
#define NVIC_PFR0_OFFSET 0x0d40
#define NVIC_PFR1_OFFSET 0x0d44
#define NVIC_DFR0_OFFSET 0x0d48
#define NVIC_AFR0_OFFSET 0x0d4c
#define NVIC_MMFR0_OFFSET 0x0d50
#define NVIC_MMFR1_OFFSET 0x0d54
#define NVIC_MMFR2_OFFSET 0x0d58
#define NVIC_MMFR3_OFFSET 0x0d5c
#define NVIC_ISAR0_OFFSET 0x0d60
#define NVIC_ISAR1_OFFSET 0x0d64
#define NVIC_ISAR2_OFFSET 0x0d68
#define NVIC_ISAR3_OFFSET 0x0d6c
#define NVIC_ISAR4_OFFSET 0x0d70
#define NVIC_ISAR5_OFFSET 0x0d74
#define NVIC_CLIDR_OFFSET 0x0d78
#define NVIC_CTR_OFFSET 0x0d7c
#define NVIC_CCSIDR_OFFSET 0x0d80
#define NVIC_CSSELR_OFFSET 0x0d84
#define NVIC_CPACR_OFFSET 0x0d88
#define NVIC_NSACR_OFFSET 0x0d8c
#define NVIC_DHCSR_OFFSET 0x0df0
#define NVIC_DCRSR_OFFSET 0x0df4
#define NVIC_DCRDR_OFFSET 0x0df8
#define NVIC_DEMCR_OFFSET 0x0dfc
#define NVIC_DSCEMCR_OFFSET 0x0e00
#define NVIC_DAUTHCTRL_OFFSET 0x0e04
#define NVIC_DSCSR_OFFSET 0x0e08
#define NVIC_STIR_OFFSET 0x0f00
#define NVIC_RFSR_OFFSET 0x0f04
#define NVIC_FPCCR_OFFSET 0x0f34
#define NVIC_FPCAR_OFFSET 0x0f38
#define NVIC_FPDSCR_OFFSET 0x0f3c
#define NVIC_MVFR0_OFFSET 0x0f40
#define NVIC_MVFR1_OFFSET 0x0f44
#define NVIC_MVFR2_OFFSET 0x0f48
#define NVIC_ICIALLU_OFFSET 0x0f50
#define NVIC_ICIMVAU_OFFSET 0x0f58
#define NVIC_DCIMVAC_OFFSET 0x0f5c
#define NVIC_DCISW_OFFSET 0x0f60
#define NVIC_DCCMVAU_OFFSET 0x0f64
#define NVIC_DCCMVAC_OFFSET 0x0f68
#define NVIC_DCCSW_OFFSET 0x0f6c
#define NVIC_DCCIMVAC_OFFSET 0x0f70
#define NVIC_DCCISW_OFFSET 0x0f74
#define NVIC_BPIALL_OFFSET 0x0f78
#define NVIC_ITCMCR_OFFSET 0x0f90
#define NVIC_DTCMCR_OFFSET 0x0f94
#define NVIC_AHBPCR_OFFSET 0x0f98
#define NVIC_CACR_OFFSET 0x0f9c
#define NVIC_AHBSCR_OFFSET 0x0fa0
#define NVIC_ABFSR_OFFSET 0x0fa8
#define NVIC_PID4_OFFSET 0x0fd0
#define NVIC_PID5_OFFSET 0x0fd4
#define NVIC_PID6_OFFSET 0x0fd8
#define NVIC_PID7_OFFSET 0x0fdc
#define NVIC_PID0_OFFSET 0x0fe0
#define NVIC_PID1_OFFSET 0x0fe4
#define NVIC_PID2_OFFSET 0x0fe8
#define NVIC_PID3_OFFSET 0x0fec
#define NVIC_CID0_OFFSET 0x0ff0
#define NVIC_CID1_OFFSET 0x0ff4
#define NVIC_CID2_OFFSET 0x0ff8
#define NVIC_CID3_OFFSET 0x0ffc
#define NVIC_ICTR (ARM_NVIC_BASE + NVIC_ICTR_OFFSET)
#define NVIC_ACTLR (ARM_NVIC_BASE + NVIC_ACTLR_OFFSET)
#define NVIC_CPPWR (ARM_NVIC_BASE + NVIC_CPPWR_OFFSET)
#define NVIC_SYSTICK_CTRL (ARM_NVIC_BASE + NVIC_SYSTICK_CTRL_OFFSET)
#define NVIC_SYSTICK_RELOAD (ARM_NVIC_BASE + NVIC_SYSTICK_RELOAD_OFFSET)
#define NVIC_SYSTICK_CURRENT (ARM_NVIC_BASE + NVIC_SYSTICK_CURRENT_OFFSET)
#define NVIC_SYSTICK_CALIB (ARM_NVIC_BASE + NVIC_SYSTICK_CALIB_OFFSET)
#define NVIC_IRQ_ENABLE(n) (ARM_NVIC_BASE + NVIC_IRQ_ENABLE_OFFSET(n))
#define NVIC_IRQ0_31_ENABLE (ARM_NVIC_BASE + NVIC_IRQ0_31_ENABLE_OFFSET)
#define NVIC_IRQ32_63_ENABLE (ARM_NVIC_BASE + NVIC_IRQ32_63_ENABLE_OFFSET)
#define NVIC_IRQ64_95_ENABLE (ARM_NVIC_BASE + NVIC_IRQ64_95_ENABLE_OFFSET)
#define NVIC_IRQ96_127_ENABLE (ARM_NVIC_BASE + NVIC_IRQ96_127_ENABLE_OFFSET)
#define NVIC_IRQ128_159_ENABLE (ARM_NVIC_BASE + NVIC_IRQ128_159_ENABLE_OFFSET)
#define NVIC_IRQ160_191_ENABLE (ARM_NVIC_BASE + NVIC_IRQ160_191_ENABLE_OFFSET)
#define NVIC_IRQ192_223_ENABLE (ARM_NVIC_BASE + NVIC_IRQ192_223_ENABLE_OFFSET)
#define NVIC_IRQ224_239_ENABLE (ARM_NVIC_BASE + NVIC_IRQ224_239_ENABLE_OFFSET)
#define NVIC_IRQ_CLEAR(n) (ARM_NVIC_BASE + NVIC_IRQ_CLEAR_OFFSET(n))
#define NVIC_IRQ0_31_CLEAR (ARM_NVIC_BASE + NVIC_IRQ0_31_CLEAR_OFFSET)
#define NVIC_IRQ32_63_CLEAR (ARM_NVIC_BASE + NVIC_IRQ32_63_CLEAR_OFFSET)
#define NVIC_IRQ64_95_CLEAR (ARM_NVIC_BASE + NVIC_IRQ64_95_CLEAR_OFFSET)
#define NVIC_IRQ96_127_CLEAR (ARM_NVIC_BASE + NVIC_IRQ96_127_CLEAR_OFFSET)
#define NVIC_IRQ128_159_CLEAR (ARM_NVIC_BASE + NVIC_IRQ128_159_CLEAR_OFFSET)
#define NVIC_IRQ160_191_CLEAR (ARM_NVIC_BASE + NVIC_IRQ160_191_CLEAR_OFFSET)
#define NVIC_IRQ192_223_CLEAR (ARM_NVIC_BASE + NVIC_IRQ192_223_CLEAR_OFFSET)
#define NVIC_IRQ224_239_CLEAR (ARM_NVIC_BASE + NVIC_IRQ224_239_CLEAR_OFFSET)
#define NVIC_IRQ_PEND(n) (ARM_NVIC_BASE + NVIC_IRQ_PEND_OFFSET(n))
#define NVIC_IRQ0_31_PEND (ARM_NVIC_BASE + NVIC_IRQ0_31_PEND_OFFSET)
#define NVIC_IRQ32_63_PEND (ARM_NVIC_BASE + NVIC_IRQ32_63_PEND_OFFSET)
#define NVIC_IRQ64_95_PEND (ARM_NVIC_BASE + NVIC_IRQ64_95_PEND_OFFSET)
#define NVIC_IRQ96_127_PEND (ARM_NVIC_BASE + NVIC_IRQ96_127_PEND_OFFSET)
#define NVIC_IRQ128_159_PEND (ARM_NVIC_BASE + NVIC_IRQ128_159_PEND_OFFSET)
#define NVIC_IRQ160_191_PEND (ARM_NVIC_BASE + NVIC_IRQ160_191_PEND_OFFSET)
#define NVIC_IRQ192_223_PEND (ARM_NVIC_BASE + NVIC_IRQ192_223_PEND_OFFSET)
#define NVIC_IRQ224_239_PEND (ARM_NVIC_BASE + NVIC_IRQ224_239_PEND_OFFSET)
#define NVIC_IRQ_CLRPEND(n) (ARM_NVIC_BASE + NVIC_IRQ_CLRPEND_OFFSET(n))
#define NVIC_IRQ0_31_CLRPEND (ARM_NVIC_BASE + NVIC_IRQ0_31_CLRPEND_OFFSET)
#define NVIC_IRQ32_63_CLRPEND (ARM_NVIC_BASE + NVIC_IRQ32_63_CLRPEND_OFFSET)
#define NVIC_IRQ64_95_CLRPEND (ARM_NVIC_BASE + NVIC_IRQ64_95_CLRPEND_OFFSET)
#define NVIC_IRQ96_127_CLRPEND (ARM_NVIC_BASE + NVIC_IRQ96_127_CLRPEND_OFFSET)
#define NVIC_IRQ128_159_CLRPEND (ARM_NVIC_BASE + NVIC_IRQ128_159_CLRPEND_OFFSET)
#define NVIC_IRQ160_191_CLRPEND (ARM_NVIC_BASE + NVIC_IRQ160_191_CLRPEND_OFFSET)
#define NVIC_IRQ192_223_CLRPEND (ARM_NVIC_BASE + NVIC_IRQ192_223_CLRPEND_OFFSET)
#define NVIC_IRQ224_239_CLRPEND (ARM_NVIC_BASE + NVIC_IRQ224_239_CLRPEND_OFFSET)
#define NVIC_IRQ_ACTIVE(n) (ARM_NVIC_BASE + NVIC_IRQ_ACTIVE_OFFSET(n))
#define NVIC_IRQ0_31_ACTIVE (ARM_NVIC_BASE + NVIC_IRQ0_31_ACTIVE_OFFSET)
#define NVIC_IRQ32_63_ACTIVE (ARM_NVIC_BASE + NVIC_IRQ32_63_ACTIVE_OFFSET)
#define NVIC_IRQ64_95_ACTIVE (ARM_NVIC_BASE + NVIC_IRQ64_95_ACTIVE_OFFSET)
#define NVIC_IRQ96_127_ACTIVE (ARM_NVIC_BASE + NVIC_IRQ96_127_ACTIVE_OFFSET)
#define NVIC_IRQ128_159_ACTIVE (ARM_NVIC_BASE + NVIC_IRQ128_159_ACTIVE_OFFSET)
#define NVIC_IRQ160_191_ACTIVE (ARM_NVIC_BASE + NVIC_IRQ160_191_ACTIVE_OFFSET)
#define NVIC_IRQ192_223_ACTIVE (ARM_NVIC_BASE + NVIC_IRQ192_223_ACTIVE_OFFSET)
#define NVIC_IRQ224_239_ACTIVE (ARM_NVIC_BASE + NVIC_IRQ224_239_ACTIVE_OFFSET)
#define NVIC_IRQ_TARGET(n) (ARM_NVIC_BASE + NVIC_IRQ_TARGET_OFFSET(n))
#define NVIC_IRQ0_31_TARGET (ARM_NVIC_BASE + NVIC_IRQ0_31_TARGET_OFFSET)
#define NVIC_IRQ32_63_TARGET (ARM_NVIC_BASE + NVIC_IRQ32_63_TARGET_OFFSET)
#define NVIC_IRQ64_95_TARGET (ARM_NVIC_BASE + NVIC_IRQ64_95_TARGET_OFFSET)
#define NVIC_IRQ96_127_TARGET (ARM_NVIC_BASE + NVIC_IRQ96_127_TARGET_OFFSET)
#define NVIC_IRQ128_159_TARGET (ARM_NVIC_BASE + NVIC_IRQ128_159_TARGET_OFFSET)
#define NVIC_IRQ160_191_TARGET (ARM_NVIC_BASE + NVIC_IRQ160_191_TARGET_OFFSET)
#define NVIC_IRQ192_223_TARGET (ARM_NVIC_BASE + NVIC_IRQ192_223_TARGET_OFFSET)
#define NVIC_IRQ224_239_TARGET (ARM_NVIC_BASE + NVIC_IRQ224_239_TARGET_OFFSET)
#define NVIC_IRQ_PRIORITY(n) (ARM_NVIC_BASE + NVIC_IRQ_PRIORITY_OFFSET(n))
#define NVIC_IRQ0_3_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ0_3_PRIORITY_OFFSET)
#define NVIC_IRQ4_7_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ4_7_PRIORITY_OFFSET)
#define NVIC_IRQ8_11_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ8_11_PRIORITY_OFFSET)
#define NVIC_IRQ12_15_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ12_15_PRIORITY_OFFSET)
#define NVIC_IRQ16_19_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ16_19_PRIORITY_OFFSET)
#define NVIC_IRQ20_23_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ20_23_PRIORITY_OFFSET)
#define NVIC_IRQ24_27_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ24_27_PRIORITY_OFFSET)
#define NVIC_IRQ28_31_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ28_31_PRIORITY_OFFSET)
#define NVIC_IRQ32_35_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ32_35_PRIORITY_OFFSET)
#define NVIC_IRQ36_39_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ36_39_PRIORITY_OFFSET)
#define NVIC_IRQ40_43_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ40_43_PRIORITY_OFFSET)
#define NVIC_IRQ44_47_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ44_47_PRIORITY_OFFSET)
#define NVIC_IRQ48_51_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ48_51_PRIORITY_OFFSET)
#define NVIC_IRQ52_55_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ52_55_PRIORITY_OFFSET)
#define NVIC_IRQ56_59_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ56_59_PRIORITY_OFFSET)
#define NVIC_IRQ60_63_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ60_63_PRIORITY_OFFSET)
#define NVIC_IRQ64_67_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ64_67_PRIORITY_OFFSET)
#define NVIC_IRQ68_71_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ68_71_PRIORITY_OFFSET)
#define NVIC_IRQ72_75_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ72_75_PRIORITY_OFFSET)
#define NVIC_IRQ76_79_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ76_79_PRIORITY_OFFSET)
#define NVIC_IRQ80_83_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ80_83_PRIORITY_OFFSET)
#define NVIC_IRQ84_87_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ84_87_PRIORITY_OFFSET)
#define NVIC_IRQ88_91_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ88_91_PRIORITY_OFFSET)
#define NVIC_IRQ92_95_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ92_95_PRIORITY_OFFSET)
#define NVIC_IRQ96_99_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ96_99_PRIORITY_OFFSET)
#define NVIC_IRQ100_103_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ100_103_PRIORITY_OFFSET)
#define NVIC_IRQ104_107_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ104_107_PRIORITY_OFFSET)
#define NVIC_IRQ108_111_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ108_111_PRIORITY_OFFSET)
#define NVIC_IRQ112_115_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ112_115_PRIORITY_OFFSET)
#define NVIC_IRQ116_119_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ116_119_PRIORITY_OFFSET)
#define NVIC_IRQ120_123_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ120_123_PRIORITY_OFFSET)
#define NVIC_IRQ124_127_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ124_127_PRIORITY_OFFSET)
#define NVIC_IRQ128_131_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ128_131_PRIORITY_OFFSET)
#define NVIC_IRQ132_135_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ132_135_PRIORITY_OFFSET)
#define NVIC_IRQ136_139_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ136_139_PRIORITY_OFFSET)
#define NVIC_IRQ140_143_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ140_143_PRIORITY_OFFSET)
#define NVIC_IRQ144_147_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ144_147_PRIORITY_OFFSET)
#define NVIC_IRQ148_151_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ148_151_PRIORITY_OFFSET)
#define NVIC_IRQ152_155_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ152_155_PRIORITY_OFFSET)
#define NVIC_IRQ156_159_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ156_159_PRIORITY_OFFSET)
#define NVIC_IRQ160_163_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ160_163_PRIORITY_OFFSET)
#define NVIC_IRQ164_167_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ164_167_PRIORITY_OFFSET)
#define NVIC_IRQ168_171_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ168_171_PRIORITY_OFFSET)
#define NVIC_IRQ172_175_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ172_175_PRIORITY_OFFSET)
#define NVIC_IRQ176_179_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ176_179_PRIORITY_OFFSET)
#define NVIC_IRQ180_183_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ180_183_PRIORITY_OFFSET)
#define NVIC_IRQ184_187_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ184_187_PRIORITY_OFFSET)
#define NVIC_IRQ188_191_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ188_191_PRIORITY_OFFSET)
#define NVIC_IRQ192_195_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ192_195_PRIORITY_OFFSET)
#define NVIC_IRQ196_199_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ196_199_PRIORITY_OFFSET)
#define NVIC_IRQ200_203_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ200_203_PRIORITY_OFFSET)
#define NVIC_IRQ204_207_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ204_207_PRIORITY_OFFSET)
#define NVIC_IRQ208_211_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ208_211_PRIORITY_OFFSET)
#define NVIC_IRQ212_215_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ212_215_PRIORITY_OFFSET)
#define NVIC_IRQ216_219_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ216_219_PRIORITY_OFFSET)
#define NVIC_IRQ220_223_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ220_223_PRIORITY_OFFSET)
#define NVIC_IRQ224_227_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ224_227_PRIORITY_OFFSET)
#define NVIC_IRQ228_231_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ228_231_PRIORITY_OFFSET)
#define NVIC_IRQ232_235_PRIORITY (ARM_NVIC_BASE + NVIC_IRQ232_235_PRIORITY_OFFSET)
#define NVIC_REVIDR (ARM_NVIC_BASE + NVIC_REVIDR_OFFSET)
#define NVIC_CPUID_BASE (ARM_NVIC_BASE + NVIC_CPUID_BASE_OFFSET)
#define NVIC_INTCTRL (ARM_NVIC_BASE + NVIC_INTCTRL_OFFSET)
#define NVIC_VECTAB (ARM_NVIC_BASE + NVIC_VECTAB_OFFSET)
#define NVIC_AIRCR (ARM_NVIC_BASE + NVIC_AIRCR_OFFSET)
#define NVIC_SYSCON (ARM_NVIC_BASE + NVIC_SYSCON_OFFSET)
#define NVIC_CFGCON (ARM_NVIC_BASE + NVIC_CFGCON_OFFSET)
#define NVIC_SYSH_PRIORITY(n) (ARM_NVIC_BASE + NVIC_SYSH_PRIORITY_OFFSET(n))
#define NVIC_SYSH4_7_PRIORITY (ARM_NVIC_BASE + NVIC_SYSH4_7_PRIORITY_OFFSET)
#define NVIC_SYSH8_11_PRIORITY (ARM_NVIC_BASE + NVIC_SYSH8_11_PRIORITY_OFFSET)
#define NVIC_SYSH12_15_PRIORITY (ARM_NVIC_BASE + NVIC_SYSH12_15_PRIORITY_OFFSET)
#define NVIC_SYSHCON (ARM_NVIC_BASE + NVIC_SYSHCON_OFFSET)
#define NVIC_CFAULTS (ARM_NVIC_BASE + NVIC_CFAULTS_OFFSET)
#define NVIC_HFAULTS (ARM_NVIC_BASE + NVIC_HFAULTS_OFFSET)
#define NVIC_DFAULTS (ARM_NVIC_BASE + NVIC_DFAULTS_OFFSET)
#define NVIC_MEMMANAGE_ADDR (ARM_NVIC_BASE + NVIC_MEMMANAGE_ADDR_OFFSET)
#define NVIC_BFAULT_ADDR (ARM_NVIC_BASE + NVIC_BFAULT_ADDR_OFFSET)
#define NVIC_AFAULTS (ARM_NVIC_BASE + NVIC_AFAULTS_OFFSET)
#define NVIC_PFR0 (ARM_NVIC_BASE + NVIC_PFR0_OFFSET)
#define NVIC_PFR1 (ARM_NVIC_BASE + NVIC_PFR1_OFFSET)
#define NVIC_DFR0 (ARM_NVIC_BASE + NVIC_DFR0_OFFSET)
#define NVIC_AFR0 (ARM_NVIC_BASE + NVIC_AFR0_OFFSET)
#define NVIC_MMFR0 (ARM_NVIC_BASE + NVIC_MMFR0_OFFSET)
#define NVIC_MMFR1 (ARM_NVIC_BASE + NVIC_MMFR1_OFFSET)
#define NVIC_MMFR2 (ARM_NVIC_BASE + NVIC_MMFR2_OFFSET)
#define NVIC_MMFR3 (ARM_NVIC_BASE + NVIC_MMFR3_OFFSET)
#define NVIC_ISAR0 (ARM_NVIC_BASE + NVIC_ISAR0_OFFSET)
#define NVIC_ISAR1 (ARM_NVIC_BASE + NVIC_ISAR1_OFFSET)
#define NVIC_ISAR2 (ARM_NVIC_BASE + NVIC_ISAR2_OFFSET)
#define NVIC_ISAR3 (ARM_NVIC_BASE + NVIC_ISAR3_OFFSET)
#define NVIC_ISAR4 (ARM_NVIC_BASE + NVIC_ISAR4_OFFSET)
#define NVIC_ISAR5 (ARM_NVIC_BASE + NVIC_ISAR5_OFFSET)
#define NVIC_CLIDR (ARM_NVIC_BASE + NVIC_CLIDR_OFFSET)
#define NVIC_CTR (ARM_NVIC_BASE + NVIC_CTR_OFFSET)
#define NVIC_CCSIDR (ARM_NVIC_BASE + NVIC_CCSIDR_OFFSET)
#define NVIC_CSSELR (ARM_NVIC_BASE + NVIC_CSSELR_OFFSET)
#define NVIC_CPACR (ARM_NVIC_BASE + NVIC_CPACR_OFFSET)
#define NVIC_NSACR (ARM_NVIC_BASE + NVIC_NSACR_OFFSET)
#define NVIC_DHCSR (ARM_NVIC_BASE + NVIC_DHCSR_OFFSET)
#define NVIC_DCRSR (ARM_NVIC_BASE + NVIC_DCRSR_OFFSET)
#define NVIC_DCRDR (ARM_NVIC_BASE + NVIC_DCRDR_OFFSET)
#define NVIC_DEMCR (ARM_NVIC_BASE + NVIC_DEMCR_OFFSET)
#define NVIC_DSCEMCR (ARM_NVIC_BASE + NVIC_DSCEMCR_OFFSET)
#define NVIC_DAUTHCTRL (ARM_NVIC_BASE + NVIC_DAUTHCTRL_OFFSET)
#define NVIC_DSCSR (ARM_NVIC_BASE + NVIC_DSCSR_OFFSET)
#define NVIC_STIR (ARM_NVIC_BASE + NVIC_STIR_OFFSET)
#define NVIC_RFSR (ARM_NVIC_BASE + NVIC_RFSR_OFFSET)
#define NVIC_FPCCR (ARM_NVIC_BASE + NVIC_FPCCR_OFFSET)
#define NVIC_FPCAR (ARM_NVIC_BASE + NVIC_FPCAR_OFFSET)
#define NVIC_FPDSCR (ARM_NVIC_BASE + NVIC_FPDSCR_OFFSET)
#define NVIC_MVFR0 (ARM_NVIC_BASE + NVIC_MVFR0_OFFSET)
#define NVIC_MVFR1 (ARM_NVIC_BASE + NVIC_MVFR1_OFFSET)
#define NVIC_MVFR2 (ARM_NVIC_BASE + NVIC_MVFR2_OFFSET)
#define NVIC_ICIALLU (ARM_NVIC_BASE + NVIC_ICIALLU_OFFSET)
#define NVIC_ICIMVAU (ARM_NVIC_BASE + NVIC_ICIMVAU_OFFSET)
#define NVIC_DCIMVAC (ARM_NVIC_BASE + NVIC_DCIMVAC_OFFSET)
#define NVIC_DCISW (ARM_NVIC_BASE + NVIC_DCISW_OFFSET)
#define NVIC_DCCMVAU (ARM_NVIC_BASE + NVIC_DCCMVAU_OFFSET)
#define NVIC_DCCMVAC (ARM_NVIC_BASE + NVIC_DCCMVAC_OFFSET)
#define NVIC_DCCSW (ARM_NVIC_BASE + NVIC_DCCSW_OFFSET)
#define NVIC_DCCIMVAC (ARM_NVIC_BASE + NVIC_DCCIMVAC_OFFSET)
#define NVIC_DCCISW (ARM_NVIC_BASE + NVIC_DCCISW_OFFSET)
#define NVIC_BPIALL (ARM_NVIC_BASE + NVIC_BPIALL_OFFSET)
#define NVIC_ITCMCR (ARM_NVIC_BASE + NVIC_ITCMCR_OFFSET)
#define NVIC_DTCMCR (ARM_NVIC_BASE + NVIC_DTCMCR_OFFSET)
#define NVIC_AHBPCR (ARM_NVIC_BASE + NVIC_AHBPCR_OFFSET)
#define NVIC_CACR (ARM_NVIC_BASE + NVIC_CACR_OFFSET)
#define NVIC_AHBSCR (ARM_NVIC_BASE + NVIC_AHBSCR_OFFSET)
#define NVIC_ABFSR (ARM_NVIC_BASE + NVIC_ABFSR_OFFSET)
#define NVIC_PID4 (ARM_NVIC_BASE + NVIC_PID4_OFFSET)
#define NVIC_PID5 (ARM_NVIC_BASE + NVIC_PID5_OFFSET)
#define NVIC_PID6 (ARM_NVIC_BASE + NVIC_PID6_OFFSET)
#define NVIC_PID7 (ARM_NVIC_BASE + NVIC_PID7_OFFSET)
#define NVIC_PID0 (ARM_NVIC_BASE + NVIC_PID0_OFFSET)
#define NVIC_PID1 (ARM_NVIC_BASE + NVIC_PID1_OFFSET)
#define NVIC_PID2 (ARM_NVIC_BASE + NVIC_PID2_OFFSET)
#define NVIC_PID3 (ARM_NVIC_BASE + NVIC_PID3_OFFSET)
#define NVIC_CID0 (ARM_NVIC_BASE + NVIC_CID0_OFFSET)
#define NVIC_CID1 (ARM_NVIC_BASE + NVIC_CID1_OFFSET)
#define NVIC_CID2 (ARM_NVIC_BASE + NVIC_CID2_OFFSET)
#define NVIC_CID3 (ARM_NVIC_BASE + NVIC_CID3_OFFSET)
#define NVIC_ICTR_INTLINESNUM_SHIFT 0
#define NVIC_ICTR_INTLINESNUM_MASK (15 << NVIC_ICTR_INTLINESNUM_SHIFT)
#define NVIC_CPPWR_SU(n) (1 << 2 * (n))
#define NVIC_CPPWR_SUS(n) (2 << 2 * (n))
#define NVIC_SYSTICK_CTRL_ENABLE (1 << 0)
#define NVIC_SYSTICK_CTRL_TICKINT (1 << 1)
#define NVIC_SYSTICK_CTRL_CLKSOURCE (1 << 2)
#define NVIC_SYSTICK_CTRL_COUNTFLAG (1 << 16)
* ranging from 0x1 ~ 0x00ffffff
* noting that, setting reload to 0 is valid but doesn't have any effects
*/
#define NVIC_MIN_SYSTICK_CNT (0x00000001)
#define NVIC_MAX_SYSTICK_CNT (0x00ffffff)
#define NVIC_SYSTICK_RELOAD_SHIFT 0
#define NVIC_SYSTICK_RELOAD_MASK (NVIC_MAX_SYSTICK_CNT << NVIC_SYSTICK_RELOAD_SHIFT)
#define NVIC_SYSTICK_CURRENT_SHIFT 0
#define NVIC_SYSTICK_CURRENT_MASK (NVIC_MAX_SYSTICK_CNT << NVIC_SYSTICK_RELOAD_SHIFT)
#define NVIC_SYSTICK_CALIB_TENMS_SHIFT 0
#define NVIC_SYSTICK_CALIB_TENMS_MASK (NVIC_MAX_SYSTICK_CNT << NVIC_SYSTICK_CALIB_TENMS_SHIFT)
#define NVIC_SYSTICK_CALIB_SKEW (1 << 30)
#define NVIC_SYSTICK_CALIB_NOREF (1 << 31)
#define NVIC_INTCTRL_NMIPENDSET (1 << 31)
#define NVIC_INTCTRL_NMIPENDCLR (1 << 30)
#define NVIC_INTCTRL_PENDSVSET (1 << 28)
#define NVIC_INTCTRL_PENDSVCLR (1 << 27)
#define NVIC_INTCTRL_PENDSTSET (1 << 26)
#define NVIC_INTCTRL_PENDSTCLR (1 << 25)
#define NVIC_INTCTRL_STTNS (1 << 24)
#define NVIC_INTCTRL_ISPREEMPOT (1 << 23)
#define NVIC_INTCTRL_ISRPENDING (1 << 22)
#define NVIC_INTCTRL_VECTPENDING_SHIFT 12
#define NVIC_INTCTRL_VECTPENDING_MASK (0x3ff << NVIC_INTCTRL_VECTPENDING_SHIFT)
#define NVIC_INTCTRL_RETTOBASE (1 << 11)
#define NVIC_INTCTRL_VECTACTIVE_SHIFT 0
#define NVIC_INTCTRL_VECTACTIVE_MASK (0x1ff << NVIC_INTCTRL_VECTACTIVE_SHIFT)
#define NVIC_SYSCON_SLEEPONEXIT (1 << 1)
#define NVIC_SYSCON_SLEEPDEEP (1 << 2)
#define NVIC_SYSCON_SLEEPDEEPS (1 << 3)
#define NVIC_SYSCON_SEVONPEND (1 << 4)
#define NVIC_CFGCON_NONBASETHRDENA (1 << 0)
#define NVIC_CFGCON_USERSETMPEND (1 << 1)
#define NVIC_CFGCON_UNALIGNTRP (1 << 3)
#define NVIC_CFGCON_DIV0TRP (1 << 4)
#define NVIC_CFGCON_BFHFNMIGN (1 << 8)
#define NVIC_CFGCON_STKALIGN (1 << 9)
#define NVIC_CFGCON_STKOFHFNMIGN (1 << 10)
#define NVIC_CFGCON_DC (1 << 16)
#define NVIC_CFGCON_IC (1 << 17)
#define NVIC_CFGCON_BP (1 << 18)
#define NVIC_CFGCON_LOB (1 << 19)
#define NVIC_CFGCON_TRD (1 << 20)
#define NVIC_SYSH_PRIORITY_PR4_SHIFT 0
#define NVIC_SYSH_PRIORITY_PR4_MASK (0xff << NVIC_SYSH_PRIORITY_PR4_SHIFT)
#define NVIC_SYSH_PRIORITY_PR5_SHIFT 8
#define NVIC_SYSH_PRIORITY_PR5_MASK (0xff << NVIC_SYSH_PRIORITY_PR5_SHIFT)
#define NVIC_SYSH_PRIORITY_PR6_SHIFT 16
#define NVIC_SYSH_PRIORITY_PR6_MASK (0xff << NVIC_SYSH_PRIORITY_PR6_SHIFT)
#define NVIC_SYSH_PRIORITY_PR7_SHIFT 24
#define NVIC_SYSH_PRIORITY_PR7_MASK (0xff << NVIC_SYSH_PRIORITY_PR7_SHIFT)
#define NVIC_SYSH_PRIORITY_PR8_SHIFT 0
#define NVIC_SYSH_PRIORITY_PR8_MASK (0xff << NVIC_SYSH_PRIORITY_PR8_SHIFT)
#define NVIC_SYSH_PRIORITY_PR9_SHIFT 8
#define NVIC_SYSH_PRIORITY_PR9_MASK (0xff << NVIC_SYSH_PRIORITY_PR9_SHIFT)
#define NVIC_SYSH_PRIORITY_PR10_SHIFT 16
#define NVIC_SYSH_PRIORITY_PR10_MASK (0xff << NVIC_SYSH_PRIORITY_PR10_SHIFT)
#define NVIC_SYSH_PRIORITY_PR11_SHIFT 24
#define NVIC_SYSH_PRIORITY_PR11_MASK (0xff << NVIC_SYSH_PRIORITY_PR11_SHIFT)
#define NVIC_SYSH_PRIORITY_PR12_SHIFT 0
#define NVIC_SYSH_PRIORITY_PR12_MASK (0xff << NVIC_SYSH_PRIORITY_PR12_SHIFT)
#define NVIC_SYSH_PRIORITY_PR13_SHIFT 8
#define NVIC_SYSH_PRIORITY_PR13_MASK (0xff << NVIC_SYSH_PRIORITY_PR13_SHIFT)
#define NVIC_SYSH_PRIORITY_PR14_SHIFT 16
#define NVIC_SYSH_PRIORITY_PR14_MASK (0xff << NVIC_SYSH_PRIORITY_PR14_SHIFT)
#define NVIC_SYSH_PRIORITY_PR15_SHIFT 24
#define NVIC_SYSH_PRIORITY_PR15_MASK (0xff << NVIC_SYSH_PRIORITY_PR15_SHIFT)
#define NVIC_AIRCR_VECTRESET (1 << 0)
#define NVIC_AIRCR_VECTCLRACTIVE (1 << 1)
#define NVIC_AIRCR_SYSRESETREQ (1 << 2)
#define NVIC_AIRCR_SYSRESETREQS (1 << 3)
#define NVIC_AIRCR_DIT (1 << 4)
#define NVIC_AIRCR_IESB (1 << 5)
#define NVIC_AIRCR_PRIGROUP_SHIFT (8)
#define NVIC_AIRCR_PRIGROUP_MASK (7 << NVIC_AIRCR_PRIGROUP_SHIFT)
#define NVIC_AIRCR_BFHFNMINS (1 << 13)
#define NVIC_AIRCR_PRIS (1 << 14)
#define NVIC_AIRCR_ENDIANNESS (1 << 15)
#define NVIC_AIRCR_VECTKEY_SHIFT (16)
#define NVIC_AIRCR_VECTKEY_MASK (0xffff << NVIC_AIRCR_VECTKEY_SHIFT)
#define NVIC_AIRCR_VECTKEY (0x05fa << NVIC_AIRCR_VECTKEY_SHIFT)
#define NVIC_AIRCR_VECTKEYSTAT_SHIFT (16)
#define NVIC_AIRCR_VECTKEYSTAT_MASK (0xffff << NVIC_AIRCR_VECTKEYSTAT_SHIFT)
#define NVIC_AIRCR_VECTKEYSTAT (0xfa05 << NVIC_AIRCR_VECTKEYSTAT_SHIFT)
#define NVIC_SYSHCON_MEMFAULTACT (1 << 0)
#define NVIC_SYSHCON_BUSFAULTACT (1 << 1)
#define NVIC_SYSHCON_HARDFAULTACT (1 << 2)
#define NVIC_SYSHCON_USGFAULTACT (1 << 3)
#define NVIC_SYSHCON_SECUREFAULTACT (1 << 4)
#define NVIC_SYSHCON_NMIACT (1 << 5)
#define NVIC_SYSHCON_SVCALLACT (1 << 7)
#define NVIC_SYSHCON_MONITORACT (1 << 8)
#define NVIC_SYSHCON_PENDSVACT (1 << 10)
#define NVIC_SYSHCON_SYSTICKACT (1 << 11)
#define NVIC_SYSHCON_USGFAULTPENDED (1 << 12)
#define NVIC_SYSHCON_MEMFAULTPENDED (1 << 13)
#define NVIC_SYSHCON_BUSFAULTPENDED (1 << 14)
#define NVIC_SYSHCON_SVCALLPENDED (1 << 15)
#define NVIC_SYSHCON_MEMFAULTENA (1 << 16)
#define NVIC_SYSHCON_BUSFAULTENA (1 << 17)
#define NVIC_SYSHCON_USGFAULTENA (1 << 18)
#define NVIC_SYSHCON_SECUREFAULTENA (1 << 19)
#define NVIC_SYSHCON_SECUREFAULTPENDED (1 << 20)
#define NVIC_SYSHCON_HARDFAULTPENDED (1 << 21)
#define NVIC_CFAULTS_MEMFAULTSR_MASK (0xff)
#define NVIC_CFAULTS_BUSFAULTSR_MASK (0xff << 8)
#define NVIC_CFAULTS_USGFAULTSR_MASK (0xffff << 16)
* (part of SCB Configurable Fault Status Register)
*/
#define NVIC_CFAULTS_IACCVIOL (1 << 0)
#define NVIC_CFAULTS_DACCVIOL (1 << 1)
#define NVIC_CFAULTS_MUNSTKERR (1 << 3)
#define NVIC_CFAULTS_MSTKERR (1 << 4)
#define NVIC_CFAULTS_MLSPERR (1 << 5)
#define NVIC_CFAULTS_MMARVALID (1 << 7)
* (part of SCB Configurable Fault Status Register)
*/
#define NVIC_CFAULTS_IBUSERR (1 << 8)
#define NVIC_CFAULTS_PRECISERR (1 << 9)
#define NVIC_CFAULTS_IMPRECISERR (1 << 10)
#define NVIC_CFAULTS_UNSTKERR (1 << 11)
#define NVIC_CFAULTS_STKERR (1 << 12)
#define NVIC_CFAULTS_LSPERR (1 << 13)
#define NVIC_CFAULTS_BFARVALID (1 << 15)
* (part of SCB Configurable Fault Status Register)
*/
#define NVIC_CFAULTS_UNDEFINSTR (1 << 16)
#define NVIC_CFAULTS_INVSTATE (1 << 17)
#define NVIC_CFAULTS_INVPC (1 << 18)
#define NVIC_CFAULTS_NOCP (1 << 19)
#define NVIC_CFAULTS_STKOF (1 << 20)
#define NVIC_CFAULTS_UNALIGNED (1 << 24)
#define NVIC_CFAULTS_DIVBYZERO (1 << 25)
#define NVIC_HFAULTS_VECTTBL (1 << 1)
#define NVIC_HFAULTS_FORCED (1 << 30)
#define NVIC_HFAULTS_DEBUGEVT (1 << 31)
#define NVIC_DFAULTS_HALTED (1 << 0)
#define NVIC_DFAULTS_BKPT (1 << 1)
#define NVIC_DFAULTS_DWTTRAP (1 << 2)
#define NVIC_DFAULTS_VCATCH (1 << 3)
#define NVIC_DFAULTS_EXTERNAL (1 << 4)
#define NVIC_CLIDR_L1CT_SHIFT (0)
#define NVIC_CLIDR_L1CT_MASK (7 << NVIC_CLIDR_L1CT_SHIFT)
#define NVIC_CLIDR_L1CT_ICACHE (1 << NVIC_CLIDR_L1CT_SHIFT)
#define NVIC_CLIDR_L1CT_DCACHE (2 << NVIC_CLIDR_L1CT_SHIFT)
#define NVIC_CLIDR_L1CT_UNIFIED (4 << NVIC_CLIDR_L1CT_SHIFT)
#define NVIC_CLIDR_LOUIS_SHIFT (21)
#define NVIC_CLIDR_LOUIS_MASK (7 << NVIC_CLIDR_LOC_SHIFT)
#define NVIC_CLIDR_LOC_SHIFT (24)
#define NVIC_CLIDR_LOC_MASK (7 << NVIC_CLIDR_LOC_SHIFT)
#define NVIC_CLIDR_LOC_IMPLEMENTED (1 << NVIC_CLIDR_LOC_SHIFT)
#define NVIC_CLIDR_LOC_UNIMPLEMENTED (0 << NVIC_CLIDR_LOC_SHIFT)
#define NVIC_CLIDR_LOUU_SHIFT (27)
#define NVIC_CLIDR_LOUU_MASK (7 << NVIC_CLIDR_LOUU_SHIFT)
#define NVIC_CLIDR_LOUU_IMPLEMENTED (1 << NVIC_CLIDR_LOUU_SHIFT)
#define NVIC_CLIDR_LOUU_UNIMPLEMENTED (0 << NVIC_CLIDR_LOUU_SHIFT)
#define NVIC_CLIDR_ICB_SHIFT (30)
#define NVIC_CLIDR_ICB_MASK (3 << NVIC_CLIDR_ICB_SHIFT)
#define NVIC_CLIDR_ICB_UNKOWN (0 << NVIC_CLIDR_ICB_SHIFT)
#define NVIC_CLIDR_ICB_L1 (1 << NVIC_CLIDR_ICB_SHIFT)
#define NVIC_CLIDR_ICB_L2 (2 << NVIC_CLIDR_ICB_SHIFT)
#define NVIC_CLIDR_ICB_L3 (3 << NVIC_CLIDR_ICB_SHIFT)
#define NVIC_CTR_IMINLINE_SHIFT (0)
#define NVIC_CTR_IMINLINE_MASK (15 << NVIC_CTR_IMINLINE_SHIFT)
#define NVIC_CTR_DMINLINE_SHIFT (16)
#define NVIC_CTR_DMINLINE_MASK (15 << NVIC_CTR_DMINLINE_SHIFT)
#define NVIC_CTR_ERG_SHIFT (20)
#define NVIC_CTR_ERG_MASK (15 << NVIC_CTR_ERG_SHIFT)
#define NVIC_CTR_CWG_SHIFT (24)
#define NVIC_CTR_CWG_MASK (15 << NVIC_CTR_CWG_SHIFT)
#define NVIC_CTR_FORMAT_SHIFT (29)
#define NVIC_CTR_FORMAT_MASK (7 << NVIC_CTR_FORMAT_SHIFT)
#define NVIC_CCSIDR_LINESIZE_SHIFT (0)
#define NVIC_CCSIDR_LINESIZE_MASK (7 << NVIC_CCSIDR_LINESIZE_SHIFT)
#define NVIC_CCSIDR_ASSOCIATIVITY_SHIFT (3)
#define NVIC_CCSIDR_ASSOCIATIVITY_MASK (0x3ff << NVIC_CCSIDR_ASSOCIATIVITY_SHIFT)
#define NVIC_CCSIDR_NUMSETS_SHIFT (13)
#define NVIC_CCSIDR_NUMSETS_MASK (0x7fff << NVIC_CCSIDR_NUMSETS_SHIFT)
#define NVIC_CCSIDR_WA_SHIFT (1 << 28)
#define NVIC_CCSIDR_RA_SHIFT (1 << 29)
#define NVIC_CCSIDR_WB_SHIFT (1 << 30)
#define NVIC_CCSIDR_WT_SHIFT (1 << 31)
#define NVIC_CSSELR_IND (1 << 0)
#define NVIC_CSSELR_IND_ICACHE (1 << 0)
#define NVIC_CSSELR_IND_DCACHE (0 << 0)
#define NVIC_CSSELR_LEVEL_SHIFT (1)
#define NVIC_CSSELR_LEVEL_MASK (7 << NVIC_CSSELR_LEVEL_SHIFT)
#define NVIC_CSSELR_LEVEL_1 (0 << NVIC_CSSELR_LEVEL_SHIFT)
#define NVIC_CPACR_CP_SHIFT(n) (2 * (n))
#define NVIC_CPACR_CP_MASK(n) (3 << NVIC_CPACR_CP_SHIFT(n))
#define NVIC_CPACR_CP_DENY(n) (0 << NVIC_CPACR_CP_SHIFT(n))
#define NVIC_CPACR_CP_PRIV(n) (1 << NVIC_CPACR_CP_SHIFT(n))
#define NVIC_CPACR_CP_FULL(n) (3 << NVIC_CPACR_CP_SHIFT(n))
#define NVIC_NSACR_CP_SHIFT(n) (n)
#define NVIC_NSACR_CP_MASK(n) (1 << NVIC_CPACR_CP_SHIFT(n))
#define NVIC_NSACR_CP_SECURE(n) (0 << NVIC_CPACR_CP_SHIFT(n))
#define NVIC_NSACR_CP_FULL(n) (1 << NVIC_CPACR_CP_SHIFT(n))
#define NVIC_DHCSR_C_DEBUGEN (1 << 0)
#define NVIC_DHCSR_C_HALT (1 << 1)
#define NVIC_DHCSR_C_STEP (1 << 2)
#define NVIC_DHCSR_C_MASKINTS (1 << 3)
#define NVIC_DHCSR_C_SNAPSTALL (1 << 5)
#define NVIC_DHCSR_C_PMOV (1 << 6)
#define NVIC_DHCSR_S_REGRDY (1 << 16)
#define NVIC_DHCSR_S_HALT (1 << 17)
#define NVIC_DHCSR_S_SLEEP (1 << 18)
#define NVIC_DHCSR_S_LOCKUP (1 << 19)
#define NVIC_DHCSR_S_SDE (1 << 20)
#define NVIC_DHCSR_S_NSUIDE (1 << 21)
#define NVIC_DHCSR_S_SUIDE (1 << 22)
#define NVIC_DHCSR_S_FPD (1 << 23)
#define NVIC_DHCSR_S_RETIRE_ST (1 << 24)
#define NVIC_DHCSR_S_RESET_ST (1 << 25)
#define NVIC_DHCSR_S_RESTART_ST (1 << 26)
#define NVIC_DHCSR_DBGKEY_SHIFT (16)
#define NVIC_DHCSR_DBGKEY_MASK (0xffff << NVIC_DHCSR_DBGKEY_SHIFT)
#define NVIC_DHCSR_DBGKEY_VALUE (0xa05f)
#define NVIC_DEMCR_VCCORERESET (1 << 0)
#define NVIC_DEMCR_VCMMERR (1 << 4)
#define NVIC_DEMCR_VCNOCPERR (1 << 5)
#define NVIC_DEMCR_VCCHKERR (1 << 6)
#define NVIC_DEMCR_VCSTATERR (1 << 7)
#define NVIC_DEMCR_VCBUSERR (1 << 8)
#define NVIC_DEMCR_VCINTERR (1 << 9)
#define NVIC_DEMCR_VCHARDERR (1 << 10)
#define NVIC_DEMCR_VCSFERR (1 << 11)
#define NVIC_DEMCR_MONEN (1 << 16)
#define NVIC_DEMCR_MONPEND (1 << 17)
#define NVIC_DEMCR_MONSTEP (1 << 18)
#define NVIC_DEMCR_MONREQ (1 << 19)
#define NVIC_DEMCR_SDME (1 << 20)
#define NVIC_DEMCR_UMON_EN (1 << 21)
#define NVIC_DEMCR_MONPRKEY (1 << 23)
#define NVIC_DEMCR_TRCENA (1 << 24)
#define NVIC_DSCEMCR_SET_MON_PEND (1 << 1)
#define NVIC_DSCEMCR_SET_MON_REQ (1 << 3)
#define NVIC_DSCEMCR_CLR_MON_PEND (1 << 17)
#define NVIC_DSCEMCR_CLR_MON_REQ (1 << 19)
#define NVIC_DAUTHCTRL_SPIDENSEL (1 << 0)
#define NVIC_DAUTHCTRL_INTSPIDEN (1 << 1)
#define NVIC_FPCCR_LSPACT (1 << 0)
#define NVIC_FPCCR_USER (1 << 1)
#define NVIC_FPCCR_SECURE (1 << 2)
#define NVIC_FPCCR_THREAD (1 << 3)
#define NVIC_FPCCR_HFRDY (1 << 4)
#define NVIC_FPCCR_MMRDY (1 << 5)
#define NVIC_FPCCR_BFRDY (1 << 6)
#define NVIC_FPCCR_SFRDY (1 << 7)
#define NVIC_FPCCR_MONRDY (1 << 8)
#define NVIC_FPCCR_SPLIMVIOL (1 << 9)
#define NVIC_FPCCR_UFRDY (1 << 10)
#define NVIC_FPCCR_TS (1 << 26)
#define NVIC_FPCCR_CLRONRETS (1 << 27)
#define NVIC_FPCCR_CLRONRET (1 << 28)
#define NVIC_FPCCR_LSPENS (1 << 29)
#define NVIC_FPCCR_LSPEN (1 << 30)
#define NVIC_FPCCR_ASPEN (1 << 31)
#define NVIC_TCMCR_EN (1 << 0)
#define NVIC_TCMCR_RMW (1 << 1)
#define NVIC_TCMCR_RETEN (1 << 2)
#define NVIC_TCMCR_SZ_SHIFT (3)
#define NVIC_TCMCR_SZ_MASK (15 << NVIC_TCMCR_SZ_SHIFT)
#define NVIC_TCMCR_SZ_NONE (0 << NVIC_TCMCR_SZ_SHIFT)
#define NVIC_TCMCR_SZ_4KB (3 << NVIC_TCMCR_SZ_SHIFT)
#define NVIC_TCMCR_SZ_8KB (4 << NVIC_TCMCR_SZ_SHIFT)
#define NVIC_TCMCR_SZ_16KB (5 << NVIC_TCMCR_SZ_SHIFT)
#define NVIC_TCMCR_SZ_32KB (6 << NVIC_TCMCR_SZ_SHIFT)
#define NVIC_TCMCR_SZ_64KB (7 << NVIC_TCMCR_SZ_SHIFT)
#define NVIC_TCMCR_SZ_128KB (8 << NVIC_TCMCR_SZ_SHIFT)
#define NVIC_TCMCR_SZ_256KB (9 << NVIC_TCMCR_SZ_SHIFT)
#define NVIC_TCMCR_SZ_512KB (10 << NVIC_TCMCR_SZ_SHIFT)
#define NVIC_TCMCR_SZ_1MB (11 << NVIC_TCMCR_SZ_SHIFT)
#define NVIC_TCMCR_SZ_2MB (12 << NVIC_TCMCR_SZ_SHIFT)
#define NVIC_TCMCR_SZ_4MB (13 << NVIC_TCMCR_SZ_SHIFT)
#define NVIC_TCMCR_SZ_8MB (14 << NVIC_TCMCR_SZ_SHIFT)
#define NVIC_TCMCR_SZ_16MB (15 << NVIC_TCMCR_SZ_SHIFT)
#define NVIC_AHBPCR_EN (1 << 0)
#define NVIC_AHBPCR_SZ_SHIFT (1)
#define NVIC_AHBPCR_SZ_MASK (7 << NVIC_AHBPCR_SZ_SHIFT)
#define NVIC_AHBPCR_SZ_DISABLED (0 << NVIC_AHBPCR_SZ_SHIFT)
#define NVIC_AHBPCR_SZ_64MB (1 << NVIC_AHBPCR_SZ_SHIFT)
#define NVIC_AHBPCR_SZ_128MB (2 << NVIC_AHBPCR_SZ_SHIFT)
#define NVIC_AHBPCR_SZ_256MB (3 << NVIC_AHBPCR_SZ_SHIFT)
#define NVIC_AHBPCR_SZ_512MB (4 << NVIC_AHBPCR_SZ_SHIFT)
#define NVIC_CACR_SIWT (1 << 0)
#define NVIC_CACR_ECCDIS (1 << 1)
#define NVIC_CACR_FORCEWT (1 << 2)
* Public Types
****************************************************************************/
* Public Data
****************************************************************************/
#ifndef __ASSEMBLY__
#undef EXTERN
#if defined(__cplusplus)
#define EXTERN extern "C"
extern "C"
{
#else
#define EXTERN extern
#endif
* Public Function Prototypes
****************************************************************************/
* Function: arm_dumpnvic
*
* Description:
* Dump all NVIC and SYSCON registers along with a user message.
*
****************************************************************************/
#ifdef CONFIG_DEBUG_FEATURES
void arm_dumpnvic(const char *msg);
#else
# define arm_dumpnvic(m)
#endif
#undef EXTERN
#if defined(__cplusplus)
}
#endif
#endif
#endif