diff options
author | Jay Monkman <jtm@smoothsmoothie.com> | 2005-09-15 19:40:08 +0000 |
---|---|---|
committer | Jay Monkman <jtm@smoothsmoothie.com> | 2005-09-15 19:40:08 +0000 |
commit | 1370850c051930734b696d1fc95d606d6ce479ec (patch) | |
tree | 3560df4f77fbdd43f3130666503a18bbc583ff76 | |
parent | 2005-09-15 Jay Monkman (diff) | |
download | rtems-1370850c051930734b696d1fc95d606d6ce479ec.tar.bz2 |
2005-09-15 Jay Monkman <jtm@lopingdog.com>
PR 776/bsps
* at91rm9200/irq/bsp_irq_asm.S, at91rm9200/irq/irq.h: Added code to
pass interrupt vector number to ISR on AT91RM9200
-rw-r--r-- | c/src/lib/libcpu/arm/ChangeLog | 6 | ||||
-rw-r--r-- | c/src/lib/libcpu/arm/at91rm9200/irq/bsp_irq_asm.S | 5 | ||||
-rw-r--r-- | c/src/lib/libcpu/arm/at91rm9200/irq/irq.h | 2 |
3 files changed, 11 insertions, 2 deletions
diff --git a/c/src/lib/libcpu/arm/ChangeLog b/c/src/lib/libcpu/arm/ChangeLog index d2d19d5a7d..43aef5744e 100644 --- a/c/src/lib/libcpu/arm/ChangeLog +++ b/c/src/lib/libcpu/arm/ChangeLog @@ -1,3 +1,9 @@ +2005-09-15 Jay Monkman <jtm@lopingdog.com> + + PR 776/bsps + * at91rm9200/irq/bsp_irq_asm.S, at91rm9200/irq/irq.h: Added code to + pass interrupt vector number to ISR on AT91RM9200. + 2005-08-17 Lars Munch <lars@segv.dk> PR 727/bsps diff --git a/c/src/lib/libcpu/arm/at91rm9200/irq/bsp_irq_asm.S b/c/src/lib/libcpu/arm/at91rm9200/irq/bsp_irq_asm.S index 36a34b1ede..2960ecc78d 100644 --- a/c/src/lib/libcpu/arm/at91rm9200/irq/bsp_irq_asm.S +++ b/c/src/lib/libcpu/arm/at91rm9200/irq/bsp_irq_asm.S @@ -18,12 +18,15 @@ ExecuteITHandler : /* * Look at interrupt status register to determine source. * From source, determine offset into expanded vector table - * and load handler address into r0. + * and load vector into r0 and handler address into r1. */ ldr r0, =0xFFFFF100 /* AIC_CTL_BASE + AIC_IVR */ ldr r1, [r0] str r1, [r0] /* write back in case we are using protect */ + ldr r0, =0xFFFFF108 /* AIC_CTL_BASE + AIC_ISR */ + ldr r0, [r0] /* Read interrupt vector */ + stmdb sp!,{lr} ldr lr, =IRQ_return /* prepare the return from handler */ diff --git a/c/src/lib/libcpu/arm/at91rm9200/irq/irq.h b/c/src/lib/libcpu/arm/at91rm9200/irq/irq.h index b4e2f84afd..4322085f1e 100644 --- a/c/src/lib/libcpu/arm/at91rm9200/irq/irq.h +++ b/c/src/lib/libcpu/arm/at91rm9200/irq/irq.h @@ -77,7 +77,7 @@ typedef unsigned char rtems_irq_trigger; struct __rtems_irq_connect_data__; /* forward declaratiuon */ typedef unsigned int rtems_irq_number; -typedef void (*rtems_irq_hdl) (void); +typedef void (*rtems_irq_hdl) (uint32_t vector); typedef void (*rtems_irq_enable) (const struct __rtems_irq_connect_data__*); typedef void (*rtems_irq_disable) (const struct __rtems_irq_connect_data__*); typedef int (*rtems_irq_is_enabled)(const struct __rtems_irq_connect_data__*); |