TI-Davinci 6446 oops on interrupts

Russell King - ARM Linux linux at arm.linux.org.uk
Mon Jun 6 12:32:10 EDT 2011


On Mon, Jun 06, 2011 at 04:49:59PM +0200, Thomas Gleixner wrote:
> 0000014c <irq_gc_mask_clr_bit>:
>  14c:   e5903014        ldr     r3, [r0, #20]
>  150:   e590c000        ldr     ip, [r0]
>  154:   e5932004        ldr     r2, [r3, #4]
>  158:   e593100c        ldr     r1, [r3, #12]
>  15c:   e062200c        rsb     r2, r2, ip
>  160:   e3a0c001        mov     ip, #1
>  164:   e1c1221c        bic     r2, r1, ip, lsl r2
>  168:   e583200c        str     r2, [r3, #12]
>  16c:   e590000c        ldr     r0, [r0, #12]
>  170:   e5931000        ldr     r1, [r3]
>  174:   e5903064        ldr     r3, [r0, #100]  ; 0x64
>  178:   e7812003        str     r2, [r1, r3]
>  17c:   e12fff1e        bx      lr
> 
> So it's the "str r2, [r1, r3]" and obviously r1 is pointing into
> nirwana. r3 makes me wonder as well. We write 0x18 into ct->regs.mask
> because we add 0x04 to the base pointer. So where comes the 0x1c from?

Beware - I don't think you can build the file and work out what went
wrong in this manner.  Compilers like to change their register
allocation for even the slightest difference of compiler options
and preceding _unrelated_ code.

Unless we have the Code: line we don't know what the code being executed
was.  It's important that folk always report the entire oops dump, not
extracts from it that they _think_ may be relevant.



More information about the linux-arm-kernel mailing list