openrisc: Rework signal handling
authorJonas Bonn <jonas@southpole.se>
Sun, 19 Feb 2012 16:36:53 +0000 (17:36 +0100)
committerJonas Bonn <jonas@southpole.se>
Thu, 9 Jan 2014 09:57:21 +0000 (10:57 +0100)
commit10f67dbf6add97751050f294d4c8e0cc1e5c2c23
tree2a4365dc7fa9cc9ea4b1bb8a99ae83f353172d29
parentd6e0a2dd12f4067a5bcefb8bbd8ddbeff800afbc
openrisc: Rework signal handling

The mainline signal handling code for OpenRISC has been buggy since day
one with respect to syscall restart.  This patch significantly reworks
the signal handling code:

i)   Move the "work pending" loop to C code (borrowed from ARM arch)

ii)  Allow a tracer to muck about with the IP and skip syscall restart
     in that case (again, borrowed from ARM)

iii) Make signal handling WRT syscall restart actually work

v)   Make the signal handling code look more like that of other
     architectures so that it's easier for others to follow

Reported-by: Anders Nystrom <anders@southpole.se>
Signed-off-by: Jonas Bonn <jonas@southpole.se>
arch/openrisc/kernel/entry.S
arch/openrisc/kernel/signal.c