diff options
author | D4SK <konstantin.vogel@gmx.net> | 2021-05-30 01:15:49 +0100 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2021-10-06 18:17:06 -0400 |
commit | a05650f33cb66bb9f2a5ba49166f5903986278dd (patch) | |
tree | d876b8d64b82ed0aa8e7f9c17999a57e1d5d7cf3 /src | |
parent | 53b98ebaed74971fee8c7c151ee803eecc4e2532 (diff) | |
download | kutter-a05650f33cb66bb9f2a5ba49166f5903986278dd.tar.gz kutter-a05650f33cb66bb9f2a5ba49166f5903986278dd.tar.xz kutter-a05650f33cb66bb9f2a5ba49166f5903986278dd.zip |
armcm_irq: Support cortex-m7 chips
Signed-off-by: Konstantin Vogel <konstantin.vogel@gmx.net>
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'src')
-rw-r--r-- | src/generic/armcm_irq.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/generic/armcm_irq.c b/src/generic/armcm_irq.c index 5c186995..c4909222 100644 --- a/src/generic/armcm_irq.c +++ b/src/generic/armcm_irq.c @@ -4,6 +4,7 @@ // // This file may be distributed under the terms of the GNU GPLv3 license. +#include "board/internal.h" // __CORTEX_M #include "irq.h" // irqstatus_t #include "sched.h" // DECL_SHUTDOWN @@ -37,7 +38,11 @@ irq_restore(irqstatus_t flag) void irq_wait(void) { - asm volatile("cpsie i\n wfi\n cpsid i\n" ::: "memory"); + 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 + asm volatile("cpsie i\n wfi\n cpsid i\n" ::: "memory"); } void |