diff options
author | 2014-08-04 05:55:53 +0400 | |
---|---|---|
committer | 2014-08-14 11:59:30 +0400 | |
commit | a83b02e9bd0c28d27b6c6e5b184585f7a1b8bf86 (patch) | |
tree | 13cec9be08c9e9d5382d7f7f886e040447cebdd5 /arch/xtensa | |
parent | xtensa: move invalid unaligned instruction handler closer to its users (diff) | |
download | linux-a83b02e9bd0c28d27b6c6e5b184585f7a1b8bf86.tar.gz linux-a83b02e9bd0c28d27b6c6e5b184585f7a1b8bf86.tar.bz2 linux-a83b02e9bd0c28d27b6c6e5b184585f7a1b8bf86.zip |
xtensa: allow single-stepping through unaligned load/store
Update icount when icountlevel is non-zero but not greater than EXCM level
when load/store instruction is successfully emulated. This allows
single-stepping over such instruction in userspace debugger.
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Diffstat (limited to 'arch/xtensa')
-rw-r--r-- | arch/xtensa/kernel/align.S | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/arch/xtensa/kernel/align.S b/arch/xtensa/kernel/align.S index 87d80d8c33e5..890004af03a9 100644 --- a/arch/xtensa/kernel/align.S +++ b/arch/xtensa/kernel/align.S @@ -421,6 +421,14 @@ ENTRY(fast_unaligned) 1: wsr a7, epc1 # skip emulated instruction + /* Update icount if we're single-stepping in userspace. */ + rsr a4, icountlevel + beqz a4, 1f + bgeui a4, LOCKLEVEL + 1, 1f + rsr a4, icount + addi a4, a4, 1 + wsr a4, icount +1: movi a4, 0 rsr a3, excsave1 s32i a4, a3, EXC_TABLE_FIXUP |