X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fcpu%2Farm%2Fdrv%2Fsysirq_at91.c;h=23596e58980c252d3a3c3ba4c57fa8edfb86925e;hb=f1fab319eb3fe91c157b3a9564841aef62a03554;hp=281c7963f8afdbee1fb0fc472ca961a3171cd921;hpb=345f93de1963f49bdb194d2b06c8c5d7ba0a3e5f;p=bertos.git diff --git a/bertos/cpu/arm/drv/sysirq_at91.c b/bertos/cpu/arm/drv/sysirq_at91.c index 281c7963..23596e58 100644 --- a/bertos/cpu/arm/drv/sysirq_at91.c +++ b/bertos/cpu/arm/drv/sysirq_at91.c @@ -30,7 +30,6 @@ * * --> * - * \version $Id$ * * \author Francesco Sacchi * @@ -93,11 +92,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) @@ -119,7 +124,7 @@ MOD_DEFINE(sysirq); */ void sysirq_init(void) { - cpuflags_t flags; + cpu_flags_t flags; IRQ_SAVE_DISABLE(flags); /* Disable all system interrupts */