]> rtime.felk.cvut.cz Git - lincan.git/blobdiff - embedded/arch/arm/mach-lpc21xx/libs/hal/hal.c
Update of system-less architecture and board support code to actual uLAN.sf.net version.
[lincan.git] / embedded / arch / arm / mach-lpc21xx / libs / hal / hal.c
index a983e954915d3bb7084bd52d0c3f5eac5cb1577f..4fd41caa28af2811e7e876e93338f4562c79e08b 100644 (file)
@@ -1,4 +1,5 @@
 #include <system_def.h>
+#include <cpu_def.h>
 #include <hal_ints.h>
 #include <hal_intr.h>
 #include <types.h>
@@ -174,7 +175,9 @@ uint32_t hal_default_isr(int vector, uint32_t data)
 uint32_t hal_interrupt_handlers[HAL_ISR_COUNT]={[0 ... HAL_ISR_COUNT-1]=(uint32_t)hal_default_isr};
 uint32_t hal_interrupt_data[HAL_ISR_COUNT];
 
+#if !defined(__thumb__)
 void irq_handler_resolver(void) __attribute__ ((interrupt));
+#endif
 void irq_handler_resolver(void)
 {
   int v;
@@ -187,3 +190,17 @@ void irq_handler_resolver(void)
   ((hal_isr)f)(v,d);  
   hal_interrupt_acknowledge(v);
 }
+
+int request_irq(unsigned int irqnum, irq_handler_t handler, unsigned long flags,
+                const char *name, void *context)
+{
+  HAL_INTERRUPT_ATTACH(irqnum, handler, context);
+  HAL_INTERRUPT_UNMASK(irqnum);
+  return irqnum;
+}
+
+void free_irq(unsigned int irqnum,void *ctx)
+{
+  HAL_INTERRUPT_MASK(irqnum);
+  HAL_INTERRUPT_DETACH(irqnum, NULL);
+}