aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorD4SK <konstantin.vogel@gmx.net>2021-05-30 01:15:49 +0100
committerKevin O'Connor <kevin@koconnor.net>2021-10-06 18:17:06 -0400
commita05650f33cb66bb9f2a5ba49166f5903986278dd (patch)
treed876b8d64b82ed0aa8e7f9c17999a57e1d5d7cf3 /src
parent53b98ebaed74971fee8c7c151ee803eecc4e2532 (diff)
downloadkutter-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.c7
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