I am running linux kernel version 2.2.16 on a CL-7212 based target.

An application task had a data abort that I traced into _arm7_data_abort
in arch/arm/mm/proc-arm6,7.S, where it ended up at Ldata_unknown.
I believe the 2nd entry in the branch table should be "b Ldata_simple"
to handle a "swp rd,rs,[rn]" instruction that caused the abort.
After I modified the table, the system ran normally.

I checked the 2.4-test08 kernel and it handles the data abort
similarly.  Has this been reported or patched already?

_arm7_data_abort:
                ldr     r4, [r0]                        @ read instruction causing 
problem
                mov     r2, r4, lsr #19                 @ r2 b1 = L
                and     r1, r4, #15 << 24
                and     r2, r2, #2                      @ check read/write bit
                add     pc, pc, r1, lsr #22             @ Now branch to the relevent 
processing routine
                movs    pc, lr
                b       Ldata_unknown
                b       Ldata_unknown    <<<<  Should be Ldata_simple to handle "swp 
rd,rs, [rn]" 
instruction
                b       Ldata_unknown
                etc.



_______________________________________________
http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm

Reply via email to