diff --git a/src/avr/irq.h b/src/avr/irq.h index f586273a..33172c0f 100644 --- a/src/avr/irq.h +++ b/src/avr/irq.h @@ -28,4 +28,7 @@ static inline void irq_restore(irqstatus_t flag) { SREG = flag; } +static inline void irq_poll(void) { +} + #endif // irq.h diff --git a/src/command.c b/src/command.c index 915bbd42..44de070d 100644 --- a/src/command.c +++ b/src/command.c @@ -7,6 +7,7 @@ #include // va_start #include // memcpy #include "board/io.h" // readb +#include "board/irq.h" // irq_poll #include "board/misc.h" // crc16_ccitt #include "board/pgm.h" // READP #include "command.h" // output_P @@ -306,6 +307,7 @@ command_task(void) p = parsef(p, msgend, cp, args); if (!p) break; + irq_poll(); void (*func)(uint32_t*) = READP(cp->func); func(args); } diff --git a/src/generic/armcm_irq.c b/src/generic/armcm_irq.c index 64acdd89..9c01ab0d 100644 --- a/src/generic/armcm_irq.c +++ b/src/generic/armcm_irq.c @@ -34,6 +34,11 @@ irq_restore(irqstatus_t flag) asm volatile("msr primask, %0" :: "r" (flag) : "memory"); } +void +irq_poll(void) +{ +} + // Clear the active irq if a shutdown happened in an irq handler static void clear_active_irq(void) diff --git a/src/generic/irq.h b/src/generic/irq.h index 0a56c657..1e39d4e6 100644 --- a/src/generic/irq.h +++ b/src/generic/irq.h @@ -9,5 +9,6 @@ void irq_disable(void); void irq_enable(void); irqstatus_t irq_save(void); void irq_restore(irqstatus_t flag); +void irq_poll(void); #endif // irq.h diff --git a/src/sched.c b/src/sched.c index 8617108a..ed23df26 100644 --- a/src/sched.c +++ b/src/sched.c @@ -268,6 +268,7 @@ run_task(void) { struct callback_handler *p; foreachdecl(p, taskfuncs) { + irq_poll(); void (*func)(void) = READP(p->func); func(); } diff --git a/src/simulator/main.c b/src/simulator/main.c index 42fb7a25..72d0abaf 100644 --- a/src/simulator/main.c +++ b/src/simulator/main.c @@ -47,6 +47,11 @@ irq_restore(irqstatus_t flag) Interrupt_off = flag; } +void +irq_poll(void) +{ +} + /**************************************************************** * Timers