summaryrefslogtreecommitdiff
path: root/firmware/target/arm/s5l8700/system-s5l8700.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm/s5l8700/system-s5l8700.c')
-rw-r--r--firmware/target/arm/s5l8700/system-s5l8700.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/firmware/target/arm/s5l8700/system-s5l8700.c b/firmware/target/arm/s5l8700/system-s5l8700.c
index c535a0d955..48c50645e9 100644
--- a/firmware/target/arm/s5l8700/system-s5l8700.c
+++ b/firmware/target/arm/s5l8700/system-s5l8700.c
@@ -95,12 +95,13 @@ void irq_handler(void)
95 asm volatile( "stmfd sp!, {r0-r7, ip, lr} \n" /* Store context */ 95 asm volatile( "stmfd sp!, {r0-r7, ip, lr} \n" /* Store context */
96 "sub sp, sp, #8 \n"); /* Reserve stack */ 96 "sub sp, sp, #8 \n"); /* Reserve stack */
97 97
98 int irq_no = INTOFFSET; /* Read clears the corresponding IRQ status */ 98 int irq_no = INTOFFSET;
99 99
100 if ((irq_no & (1<<31)) == 0) /* Ensure invalid flag is not set */ 100 irqvector[irq_no]();
101 { 101
102 irqvector[irq_no](); 102 /* clear interrupt */
103 } 103 SRCPND = (1 << irq_no);
104 INTPND = INTPND;
104 105
105 asm volatile( "add sp, sp, #8 \n" /* Cleanup stack */ 106 asm volatile( "add sp, sp, #8 \n" /* Cleanup stack */
106 "ldmfd sp!, {r0-r7, ip, lr} \n" /* Restore context */ 107 "ldmfd sp!, {r0-r7, ip, lr} \n" /* Restore context */