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