aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/generic/armcm_boot.c7
-rw-r--r--src/generic/armcm_irq.c2
-rw-r--r--src/generic/armcm_reset.c2
3 files changed, 8 insertions, 3 deletions
diff --git a/src/generic/armcm_boot.c b/src/generic/armcm_boot.c
index 9d2ce0bb..17eb8c8b 100644
--- a/src/generic/armcm_boot.c
+++ b/src/generic/armcm_boot.c
@@ -59,8 +59,13 @@ reset_handler_stage_two(void)
}
// Reset all user interrupt priorities
+#if __CORTEX_M == 33
+ for (i = 0; i < ARRAY_SIZE(NVIC->IPR); i++)
+ NVIC->IPR[i] = 0;
+#else
for (i = 0; i < ARRAY_SIZE(NVIC->IP); i++)
NVIC->IP[i] = 0;
+#endif
// Disable SysTick interrupt
SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk;
@@ -70,7 +75,7 @@ reset_handler_stage_two(void)
SCB->ICSR = SCB_ICSR_PENDSVCLR_Msk | SCB_ICSR_PENDSTCLR_Msk;
// Reset all system interrupt priorities
-#if __CORTEX_M >= 7
+#if __CORTEX_M == 7 || __CORTEX_M == 33
for (i = 0; i < ARRAY_SIZE(SCB->SHPR); i++)
SCB->SHPR[i] = 0;
#else
diff --git a/src/generic/armcm_irq.c b/src/generic/armcm_irq.c
index c4909222..329670a1 100644
--- a/src/generic/armcm_irq.c
+++ b/src/generic/armcm_irq.c
@@ -38,7 +38,7 @@ irq_restore(irqstatus_t flag)
void
irq_wait(void)
{
- if (__CORTEX_M >= 7)
+ if (__CORTEX_M == 7)
// Cortex-m7 may disable cpu counter on wfi, so use nop
asm volatile("cpsie i\n nop\n cpsid i\n" ::: "memory");
else
diff --git a/src/generic/armcm_reset.c b/src/generic/armcm_reset.c
index fb9bf0b1..2b411071 100644
--- a/src/generic/armcm_reset.c
+++ b/src/generic/armcm_reset.c
@@ -29,7 +29,7 @@ canboot_reset(uint64_t req_signature)
return;
irq_disable();
*req_sig = req_signature;
-#if __CORTEX_M >= 7
+#if __CORTEX_M == 7
SCB_CleanDCache_by_Addr((void*)req_sig, sizeof(*req_sig));
#endif
NVIC_SystemReset();