forked from Imagelibrary/rtems
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:
@@ -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
|
||||||
|
|||||||
@@ -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 */
|
||||||
|
|
||||||
|
|||||||
@@ -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__*);
|
||||||
|
|||||||
Reference in New Issue
Block a user