aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTravis Geiselbrecht <geist@foobox.com>2013-07-15 21:36:19 -0700
committerTravis Geiselbrecht <geist@foobox.com>2013-07-15 21:36:19 -0700
commitaa23e279117fcfae761057574a4ba99762f43474 (patch)
treeac04f2964d54170e919877c8f78e28d2991266e7
parenta50d70b3044ab5daf0ffc6bd12639e2eb788a0a2 (diff)
downloadlk-aa23e279117fcfae761057574a4ba99762f43474.tar.gz
[arch][arm-m] properly set all NVIC priorites to medium
-rw-r--r--arch/arm/arm-m/arch.c11
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