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