xtensa: allow single-stepping through unaligned load/store
authorMax Filippov <jcmvbkbc@gmail.com>
Mon, 4 Aug 2014 01:55:53 +0000 (05:55 +0400)
committerMax Filippov <jcmvbkbc@gmail.com>
Thu, 14 Aug 2014 07:59:30 +0000 (11:59 +0400)
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>
arch/xtensa/kernel/align.S

index 87d80d8c33e59ac5309f791003d897d63ddcce61..890004af03a927fb8768a4d3e7878ccd3c6a1ddf 100644 (file)
@@ -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