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.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/firmware/target/arm/s5l8700/system-s5l8700.c b/firmware/target/arm/s5l8700/system-s5l8700.c
index 48c50645e9..a282c45235 100644
--- a/firmware/target/arm/s5l8700/system-s5l8700.c
+++ b/firmware/target/arm/s5l8700/system-s5l8700.c
@@ -96,12 +96,15 @@ void irq_handler(void)
96 "sub sp, sp, #8 \n"); /* Reserve stack */ 96 "sub sp, sp, #8 \n"); /* Reserve stack */
97 97
98 int irq_no = INTOFFSET; 98 int irq_no = INTOFFSET;
99 int sources = SRCPND;
100
101 if (irq_no==10) { INTMSK &= ~(1<<10); }
99 102
100 irqvector[irq_no](); 103 irqvector[irq_no]();
101 104
102 /* clear interrupt */ 105 /* clear interrupt */
103 SRCPND = (1 << irq_no); 106 SRCPND = sources;
104 INTPND = INTPND; 107 INTPND = sources;
105 108
106 asm volatile( "add sp, sp, #8 \n" /* Cleanup stack */ 109 asm volatile( "add sp, sp, #8 \n" /* Cleanup stack */
107 "ldmfd sp!, {r0-r7, ip, lr} \n" /* Restore context */ 110 "ldmfd sp!, {r0-r7, ip, lr} \n" /* Restore context */