Refactor to use new protocol module and sipo.
[bertos.git] / bertos / cpu / arm / drv / sysirq_at91.c
index 281c7963f8afdbee1fb0fc472ca961a3171cd921..23596e58980c252d3a3c3ba4c57fa8edfb86925e 100644 (file)
@@ -30,7 +30,6 @@
  *
  * -->
  *
- * \version $Id$
  *
  * \author Francesco Sacchi <batt@develer.com>
  *
@@ -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 */