Split cpu/cpu.h in 3 files: irq, types and attr.
[bertos.git] / cpu / arm / drv / sysirq_at91.c
index d943e89f09d44a724bea68fc8f3fd31d416bb0c7..33e6b0cd21fb56de666624566f3ba3acb0532d2a 100644 (file)
@@ -53,8 +53,9 @@
  */
 
 #include "sysirq_at91.h"
-#include <io/at91sam7s.h>
-#include <cpu/cpu.h>
+#include <io/arm.h>
+#include <cpu/irq.h>
+#include <cpu/types.h>
 #include <cfg/module.h>
 #include <cfg/macros.h>
 
@@ -86,26 +87,6 @@ static SysIrq sysirq_tab[] =
 
 STATIC_ASSERT(countof(sysirq_tab) == SYSIRQ_CNT);
 
-/*!
- * \brief Interrupt entry.
- */
-#define IRQ_ENTRY() \
-    asm volatile("sub   lr, lr,#4"          "\n\t"  /* Adjust LR */ \
-                 "stmfd sp!,{r0-r12,lr}"    "\n\t"  /* Save registers on IRQ stack. */ \
-                 "mrs   r1, spsr"           "\n\t"  /* Save SPSR */ \
-                 "stmfd sp!,{r1}"           "\n\t")     /* */
-
-/*!
- * \brief Interrupt exit.
- */
-#define IRQ_EXIT() \
-    asm volatile("ldmfd sp!, {r1}"          "\n\t"  /* Restore SPSR */ \
-                 "msr   spsr_c, r1"         "\n\t"  /* */ \
-                 "ldr   r0, =0xFFFFF000"    "\n\t"  /* End of interrupt. */ \
-                 "str   r0, [r0, #0x130]"   "\n\t"  /* */ \
-                 "ldmfd sp!, {r0-r12, pc}^" "\n\t")     /* Restore registers and return. */
-
-
 /**
  * System IRQ dispatcher.
  * This is the entry point for all system IRQs in AT91.
@@ -164,7 +145,6 @@ void sysirq_init(void)
  */
 void sysirq_setHandler(sysirq_t irq, sysirq_handler_t handler)
 {
-       ASSERT(irq >= 0);
        ASSERT(irq < SYSIRQ_CNT);
        sysirq_tab[irq].handler = handler;
 }
@@ -174,7 +154,6 @@ void sysirq_setHandler(sysirq_t irq, sysirq_handler_t handler)
  */
 void sysirq_setEnable(sysirq_t irq, bool enable)
 {
-       ASSERT(irq >= 0);
        ASSERT(irq < SYSIRQ_CNT);
 
        sysirq_tab[irq].setEnable(enable);
@@ -186,7 +165,6 @@ void sysirq_setEnable(sysirq_t irq, bool enable)
  */
 bool sysirq_enabled(sysirq_t irq)
 {
-       ASSERT(irq >= 0);
        ASSERT(irq < SYSIRQ_CNT);
 
        return sysirq_tab[irq].enabled;