altos/stm: Make sampling profiler work again
[fw/altos] / src / stm / ao_arch_funcs.h
index 6fe86e62c4dc5718a6c159d1cb15e8324423488c..9bb2d7cd5d830c158bd0dbbeb01ec3a39b63d64c 100644 (file)
@@ -338,6 +338,11 @@ static inline void ao_arch_restore_stack(void) {
        asm("bx lr");
 }
 
+#ifndef HAS_SAMPLE_PROFILE
+#define HAS_SAMPLE_PROFILE 0
+#endif
+
+#if !HAS_SAMPLE_PROFILE
 #define HAS_ARCH_START_SCHEDULER       1
 
 static inline void ao_arch_start_scheduler(void) {
@@ -350,15 +355,17 @@ static inline void ao_arch_start_scheduler(void) {
        control |= (1 << 1);
        asm("msr control,%0" : : "r" (control));
 }
+#endif
 
 #define ao_arch_isr_stack()
 
 #endif
 
-#define ao_arch_wait_interrupt() do {                  \
-               asm(".global ao_idle_loc\n\twfi\nao_idle_loc:");        \
-               ao_arch_release_interrupts();                           \
-               ao_arch_block_interrupts();                             \
+#define ao_arch_wait_interrupt() do {                          \
+               asm("\twfi\n");                                 \
+               ao_arch_release_interrupts();                   \
+               asm(".global ao_idle_loc\nao_idle_loc:");       \
+               ao_arch_block_interrupts();                     \
        } while (0)
 
 #define ao_arch_critical(b) do {                               \