summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorStafford Horne <shorne@gmail.com>2018-07-01 14:17:36 +0900
committerStafford Horne <shorne@gmail.com>2018-07-01 16:48:24 +0900
commitae15a41a641449f536578b0d9ec0e4ade130deb5 (patch)
treeaeee6525fa9d315c05c4273bfc5d415e211baf36 /scripts
parent560b423dd9af4272a1f3685c2d6b073fdc4af7c7 (diff)
openrisc: entry: Fix delay slot exception detection
Originally in patch e6d20c55a4 ("openrisc: entry: Fix delay slot detection") I fixed delay slot detection, but only for QEMU. We missed that hardware delay slot detection using delay slot exception flag (DSX) was still broken. This was because QEMU set the DSX flag in both pre-exception supervision register (ESR) and supervision register (SR) register, but on real hardware the DSX flag is only set on the SR register during exceptions. Fix this by carrying the DSX flag into the SR register during exception. We also update the DSX flag read locations to read the value from the SR register not the pt_regs SR register which represents ESR. The ESR should never have the DSX flag set. In the process I updated/removed a few comments to match the current state. Including removing a comment saying that the DSX detection logic was inefficient and needed to be rewritten. I have tested this on QEMU with a patch ensuring it matches the hardware specification. Link: https://lists.gnu.org/archive/html/qemu-devel/2018-07/msg00000.html Fixes: e6d20c55a4 ("openrisc: entry: Fix delay slot detection") Signed-off-by: Stafford Horne <shorne@gmail.com>
Diffstat (limited to 'scripts')
0 files changed, 0 insertions, 0 deletions