14203e19cb
solution a-la arm one - pick a callee-saved register (r30), set it non-zero when entering a syscall, have sigreturn wrapper zero it out and pass the value in it to do_notify_resume() as "in_syscall" (actually, "restarts allowed") argument. Note that we don't give a damn about ret_from_fork() - return value is not restart-worthy anyway. Possible remaining bug: on !MMU we still have _debug_exception() restartable. If it hits with -ERESTART_... accidentally in r3, fun happens. MMU does _not_ have _debug_exception() restartable. If that's decided to be a bug (as I strongly suspect it to be), we'll just need to replace setting r30 to 1 with setting r30 to 0 in !MMU _debug_exception(). Up to microblaze maintainers... [folded a fix from Michal] Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> |
||
---|---|---|
.. | ||
cpu | ||
asm-offsets.c | ||
dma.c | ||
early_printk.c | ||
entry-nommu.S | ||
entry.S | ||
exceptions.c | ||
ftrace.c | ||
head.S | ||
heartbeat.c | ||
hw_exception_handler.S | ||
intc.c | ||
irq.c | ||
kgdb.c | ||
Makefile | ||
mcount.S | ||
microblaze_ksyms.c | ||
misc.S | ||
module.c | ||
process.c | ||
prom.c | ||
prom_parse.c | ||
ptrace.c | ||
reset.c | ||
selfmod.c | ||
setup.c | ||
signal.c | ||
stacktrace.c | ||
sys_microblaze.c | ||
syscall_table.S | ||
timer.c | ||
traps.c | ||
unwind.c | ||
vmlinux.lds.S |