X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fcpu%2Farm%2Fdrv%2Fsysirq_at91.c;h=6de17602ce7cc5755b3d38da6dbf10b4e2935f3a;hb=f989f600755eda606c6c9853bb229bec47bebbc0;hp=410e53f0b12f98ee8ae481cdf419e2e58e6f3bb5;hpb=e62ca0b357f09804d7d894949df44224c9d74bb7;p=bertos.git diff --git a/bertos/cpu/arm/drv/sysirq_at91.c b/bertos/cpu/arm/drv/sysirq_at91.c index 410e53f0..6de17602 100644 --- a/bertos/cpu/arm/drv/sysirq_at91.c +++ b/bertos/cpu/arm/drv/sysirq_at91.c @@ -93,11 +93,17 @@ STATIC_ASSERT(countof(sysirq_tab) == SYSIRQ_CNT); * This function checks for interrupt enable state of * various sources (system timer, etc..) and calls * the corresponding handler. + * + * \note On AT91SAM7, all system IRQs (timer included) are handled + * by the sysirq_dispatcher, so we can't differentiate between + * context-switch and non-context-switch ISR inside this + * class of IRQs. */ -static void sysirq_dispatcher(void) __attribute__ ((interrupt)); -static void sysirq_dispatcher(void) +static DECLARE_ISR_CONTEXT_SWITCH(sysirq_dispatcher) { - for (unsigned i = 0; i < countof(sysirq_tab); i++) + unsigned int i; + + for (i = 0; i < countof(sysirq_tab); i++) { if (sysirq_tab[i].enabled && sysirq_tab[i].handler)