diff options
Diffstat (limited to 'firmware/target/arm/s5l8700/system-s5l8700.c')
-rw-r--r-- | firmware/target/arm/s5l8700/system-s5l8700.c | 11 |
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 */ |