summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libcpu/arm/mc9328mxl/irq/bsp_irq_asm.S
diff options
context:
space:
mode:
authorJay Monkman <jtm@smoothsmoothie.com>2006-06-03 03:14:07 +0000
committerJay Monkman <jtm@smoothsmoothie.com>2006-06-03 03:14:07 +0000
commit7afe5a2fe01b2edf7d1db5bc684e6b9ba7cb1a82 (patch)
treed5e98dd64e2485864d66952d7fdc0a8d148ffb3a /c/src/lib/libcpu/arm/mc9328mxl/irq/bsp_irq_asm.S
parent2006-06-02 Jay Monkman (diff)
downloadrtems-7afe5a2fe01b2edf7d1db5bc684e6b9ba7cb1a82.tar.bz2
2006-06-02 Jay Monkman
* at91rm9200/irq/bsp_irq_init.c, mc9328mxl/clock/clockdrv.c, mc9328mxl/irq/bsp_irq_asm.S, mc9328mxl/irq/bsp_irq_init.c, mc9328mxl/irq/irq.c, mc9328mxl/irq/irq.h, s3c2400/irq/bsp_irq_init.c: Changed interrupt handling to use shared rtems_irq_connect_data struct.
Diffstat (limited to '')
-rw-r--r--c/src/lib/libcpu/arm/mc9328mxl/irq/bsp_irq_asm.S8
1 files changed, 5 insertions, 3 deletions
diff --git a/c/src/lib/libcpu/arm/mc9328mxl/irq/bsp_irq_asm.S b/c/src/lib/libcpu/arm/mc9328mxl/irq/bsp_irq_asm.S
index e2636c0db6..7ee0fde848 100644
--- a/c/src/lib/libcpu/arm/mc9328mxl/irq/bsp_irq_asm.S
+++ b/c/src/lib/libcpu/arm/mc9328mxl/irq/bsp_irq_asm.S
@@ -31,13 +31,15 @@ ExecuteITHandler :
/* find the ISR's address based on the vector */
ldr r0, =bsp_vector_table
- ldr r0, [r0, r1, LSL #2] /* Read the address */
-
+ mov r1, r1, LSL #3 /* Shift vector to get offset into table */
+ add r1, r0, r1 /* r1 has address of vector entry */
+ ldr r0, [r1, #4] /* Get the data pointer */
+ ldr r1, [r1] /* Get the vector */
stmdb sp!,{lr}
ldr lr, =IRQ_return /* prepare the return from handler */
- mov pc, r0 /* EXECUTE INT HANDLER */
+ mov pc, r1 /* EXECUTE INT HANDLER */
IRQ_return:
ldmia sp!,{lr}