Hi there,

I am looking at the file

http://download.gna.org/adeos/patches/v2.4/arm/adeos-linux-2.4.19-arm-rmk7-pxa2-r12.patch

and find the code:

#elif defined(CONFIG_ARCH_SA1100)

                .macro  disable_fiq
                .endm

                .macro  get_irqnr_and_base, irqnr, irqstat, base, tmp
                mov     r4, #0xfa000000                 @ ICIP = 0xfa050000
                add     r4, r4, #0x00050000
                ldr     \irqstat, [r4]                  @ get irqs
                ldr     \irqnr, [r4, #4]                @ ICMR = 0xfa050004
                ands    \irqstat, \irqstat, \irqnr
                mov     \irqnr, #0
                beq     1001f
#ifdef CONFIG_ADEOS_CORE
                tst     \irqstat, #0x04000000   @ check OSMR0 first
                movne   \irqnr, #26
                bne     1001f
#endif /* CONFIG_ADEOS_CORE */
                tst     \irqstat, #0xff
                moveq   \irqstat, \irqstat, lsr #8
                addeq   \irqnr, \irqnr, #8
...

What's the point here?

Does it mean that if an interrupt occured and it was a timer interrupt

    tst     \irqstat, #0x04000000   @ check OSMR0 first

then irqnr (=R0) is loaded with the value "26" ...

So ADEOS replace the interrupt "vector 26" with its own code that gets called instead of the normal timer interrupt? Is that correct? Where is it done?

Thanks!

Steven


Reply via email to