parisc: improve ptrace support for gdb single-step
authorJohn David Anglin <dave.anglin@bell.net>
Fri, 28 Dec 2012 23:18:01 +0000 (23:18 +0000)
committerHelge Deller <deller@gmx.de>
Mon, 7 Jan 2013 22:06:27 +0000 (23:06 +0100)
commit34360f080cb5848990576e1465d2d01a3c261762
tree42103381d3b28801443b609a1f0bc9bf0001eaf7
parentcac1f12b9f7409510a5abcf3eaecc2c56b75242a
parisc: improve ptrace support for gdb single-step

Various GCC tests use gdb to simulate a multithreaded application. Many of
these tests have been failing on parisc linux.

GCC does this by using gdb to single-step the application, then gdb is used to
call other test specific code. Where this fails is when the application is
stepped into the delay slot of a taken branch. This sets the PSW B bit. When
the test specific code is executed, this usually clears the PSW B bit.
Currently, gdb is not allowed to set the B bit. So, the code falls through what
should be a taken branch.

The attached patch adds the PSW B bit to the set of bits that gdb is allowed to
set. In order to set the B bit, the trace system call must return using an
interrupt restore. The patch also modifies this code to use the saved IAOQ
values when they are saved by a ptrace syscall or interruption.

Signed-off-by: John David Anglin <dave.anglin@bell.net>
Signed-off-by: Helge Deller <deller@gmx.de>
arch/parisc/kernel/entry.S
arch/parisc/kernel/ptrace.c