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
This commit is contained in:
Jay Monkman
2005-09-15 19:40:08 +00:00
parent e0f60887e5
commit 1370850c05
3 changed files with 11 additions and 2 deletions

View File

@@ -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> 2005-08-17 Lars Munch <lars@segv.dk>
PR 727/bsps PR 727/bsps

View File

@@ -18,12 +18,15 @@ ExecuteITHandler :
/* /*
* Look at interrupt status register to determine source. * Look at interrupt status register to determine source.
* From source, determine offset into expanded vector table * 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 r0, =0xFFFFF100 /* AIC_CTL_BASE + AIC_IVR */
ldr r1, [r0] ldr r1, [r0]
str r1, [r0] /* write back in case we are using protect */ 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} stmdb sp!,{lr}
ldr lr, =IRQ_return /* prepare the return from handler */ ldr lr, =IRQ_return /* prepare the return from handler */

View File

@@ -77,7 +77,7 @@ typedef unsigned char rtems_irq_trigger;
struct __rtems_irq_connect_data__; /* forward declaratiuon */ struct __rtems_irq_connect_data__; /* forward declaratiuon */
typedef unsigned int rtems_irq_number; 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_enable) (const struct __rtems_irq_connect_data__*);
typedef void (*rtems_irq_disable) (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__*); typedef int (*rtems_irq_is_enabled)(const struct __rtems_irq_connect_data__*);