diff options
author | Travis Geiselbrecht <geist@foobox.com> | 2013-07-15 21:36:19 -0700 |
---|---|---|
committer | Travis Geiselbrecht <geist@foobox.com> | 2013-07-15 21:36:19 -0700 |
commit | aa23e279117fcfae761057574a4ba99762f43474 (patch) | |
tree | ac04f2964d54170e919877c8f78e28d2991266e7 | |
parent | a50d70b3044ab5daf0ffc6bd12639e2eb788a0a2 (diff) | |
download | lk-aa23e279117fcfae761057574a4ba99762f43474.tar.gz |
[arch][arm-m] properly set all NVIC priorites to medium
-rw-r--r-- | arch/arm/arm-m/arch.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/arch/arm/arm-m/arch.c b/arch/arm/arm-m/arch.c index 27dfd926..66e5795a 100644 --- a/arch/arm/arm-m/arch.c +++ b/arch/arm/arm-m/arch.c @@ -46,15 +46,14 @@ void arch_early_init(void) SCB->VTOR = (uint32_t)&vectab; /* clear any pending interrupts and set all the vectors to medium priority */ - int i; - int groups = SCnSCB->ICTR & 0xf; + uint i; + uint groups = (SCnSCB->ICTR & 0xf) + 1; for (i = 0; i < groups; i++) { NVIC->ICER[i] = 0xffffffff; NVIC->ICPR[i] = 0xffffffff; - NVIC->IP[i*4] = 128; /* medium priority */ - NVIC->IP[i*4+1] = 128; /* medium priority */ - NVIC->IP[i*4+2] = 128; /* medium priority */ - NVIC->IP[i*4+3] = 128; /* medium priority */ + for (uint j = 0; j < 32; j++) { + NVIC->IP[i*32 + j] = 128; /* medium priority */ + } } #if ARM_M_DYNAMIC_PRIORITY_SIZE |