Source-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
CVS commit: src/sys/arch/arm
Module Name: src
Committed By: scw
Date: Fri Oct 31 16:30:15 UTC 2003
Modified Files:
src/sys/arch/arm/arm: bcopyinout.S
src/sys/arch/arm/arm32: exception.S fault.c
src/sys/arch/arm/include: armreg.h
Log Message:
Overhaul arm32's abort handlers:
- Assume a permission fault is always the result of an attempted
write, so no need to disassemble the opcode.
(as discussed with Richard Earnshaw/Jason Thorpe a week or two ago)
- Split out non-MMU data aborts into separate functions, and deal
correctly with XScale imprecise aborts. Specifically, the old code
made no attempt to handle the double abort faults which can occur
as a result of two consecutive external (imprecise) aborts. This
was easy to provoke by read(2)ing from a /dev/mem offset which caused
an external abort. With the old code, this would bring the system
down instantly, with little clue as to why. (hint: tf_spsr held
PSR_ABT32_MODE...)
- Re-write badaddr_read() to use pcb_onfault instead of adding extra
overhead to data_abort_handler(). A side effect of this is that it
now benefits from the XScale double abort recovery.
- Invoke the cpu-specific prefetch/data abort fixup routines only if
the host cpu actually needs it. On other cpus, the code is optimised
away.
- Sprinkle __predict_{false,true} in all the right places.
- G/C some excess debugging baggage.
To generate a diff of this commit:
cvs rdiff -r1.11 -r1.12 src/sys/arch/arm/arm/bcopyinout.S
cvs rdiff -r1.12 -r1.13 src/sys/arch/arm/arm32/exception.S
cvs rdiff -r1.38 -r1.39 src/sys/arch/arm/arm32/fault.c
cvs rdiff -r1.27 -r1.28 src/sys/arch/arm/include/armreg.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Home |
Main Index |
Thread Index |
Old Index