*** utk/utk.lpc/utkernel_source.curr/kernel/sysdepend/device/app_at91/icrt0.S Sat Mar 21 15:32:12 2009 --- /home/uaa/icrt0.S.new Tue Mar 24 22:09:50 2009 *************** *** 237,244 **** stmfd sp!, {ip} /* sp-> spsr_xxx, ip, lr_xxx */ stmfd sp!, {r3} /* sp-> r3, spsr_xxx, ip, lr_xxx */ ! ldr lr, =VICAddress ! ldr lr, [lr] /* lr := IRQ No. */ ldr ip, =Csym(knl_intvec) /* exception vector table */ add ip, ip, lr, LSL #2 /* ip := &vector[IRQ No.] */ ldr r3, [ip] /* r3 := vector[IRQ No.] */ --- 237,267 ---- stmfd sp!, {ip} /* sp-> spsr_xxx, ip, lr_xxx */ stmfd sp!, {r3} /* sp-> r3, spsr_xxx, ip, lr_xxx */ ! ldr ip, =VICIRQStatus ! ldr ip, [ip] ! mov lr, #0 /* lr: IRQ No. */ ! ! bsf_step16: ! ldr r3,=0xffff ! tst ip, r3 ! addeq lr, lr, #16 ! moveq ip, ip, lsr #16 ! bsf_step8: ! tst ip, #0xff ! addeq lr, lr, #8 ! moveq ip, ip, lsr #8 ! bsf_step4: ! tst ip, #0x0f ! addeq lr, lr, #4 ! moveq ip, ip, lsr #4 ! bsf_step2: ! tst ip, #0x03 ! addeq lr, lr, #2 ! moveq ip, ip, lsr #2 ! bsf_step1: ! tst ip, #0x01 ! addeq lr, lr, #1 ! ldr ip, =Csym(knl_intvec) /* exception vector table */ add ip, ip, lr, LSL #2 /* ip := &vector[IRQ No.] */ ldr r3, [ip] /* r3 := vector[IRQ No.] */