diff --git a/libcpu/arm/s3c24x0/trap.c b/libcpu/arm/s3c24x0/trap.c index c90222e47..09f1c88bc 100644 --- a/libcpu/arm/s3c24x0/trap.c +++ b/libcpu/arm/s3c24x0/trap.c @@ -151,14 +151,15 @@ void rt_hw_trap_irq() if (intstat == INTGLOBAL) return; - /* clear pending register */ - ClearPending(1 << intstat); - /* get interrupt service routine */ isr_func = isr_table[intstat]; /* turn to interrupt service routine */ isr_func(intstat); + + /* clear pending register */ + /* note: must be the last, if not, may repeat*/ + ClearPending(1 << intstat); } void rt_hw_trap_fiq()