linux/arch/microblaze/kernel
Al Viro 14203e19cb microblaze: fix the horror with restarts of sigreturn()
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>
2013-02-03 18:16:02 -05:00
..
cpu Disintegrate and delete asm/system.h 2012-03-28 15:58:21 -07:00
asm-offsets.c microblaze: Remove "cache" optimized copy_page function 2010-05-06 11:21:58 +02:00
dma.c Microblaze: adapt for dma_map_ops changes 2012-03-28 16:36:38 +02:00
early_printk.c microblaze: Do not use tlb_skip in early_printk 2012-04-02 13:00:22 +02:00
entry-nommu.S microblaze: fix the horror with restarts of sigreturn() 2013-02-03 18:16:02 -05:00
entry.S microblaze: fix the horror with restarts of sigreturn() 2013-02-03 18:16:02 -05:00
exceptions.c microblaze: Raise SIGFPE/FPE_INTDIV for div by zero 2011-10-14 12:24:31 +02:00
ftrace.c microblaze: Fix ftrace 2011-04-01 09:34:51 +02:00
head.S microblaze: Fix bug with passing command line 2012-10-04 14:59:19 +02:00
heartbeat.c microblaze: Add support for little-endian Microblaze 2010-10-21 15:51:59 +10:00
hw_exception_handler.S microblaze: Remove additional andi which has been already done 2012-10-04 14:52:54 +02:00
intc.c microblaze: Add static qualifiers 2012-12-13 18:15:34 +01:00
irq.c irq_domain/microblaze: Convert microblaze to use irq_domains 2012-02-16 06:11:24 -07:00
kgdb.c microblaze: KGDB little endian support 2010-10-21 15:51:58 +10:00
Makefile microblaze: Use generic init_task 2012-05-05 13:00:24 +02:00
mcount.S microblaze: ftrace: Pass the first calling instruction for dynamic ftrace 2012-05-25 06:34:35 +02:00
microblaze_ksyms.c mtd/uclinux: Use generic __bss_stop instead of _ebss 2012-06-27 09:59:43 +02:00
misc.S microblaze: Handle TLB skip size dynamically 2012-03-23 09:28:19 +01:00
module.c microblaze: Fix debug message in module 2012-01-05 08:34:27 +01:00
process.c microblaze: Remove BIP from childregs 2012-12-13 14:38:52 +01:00
prom_parse.c of/pci: move of_irq_map_pci() into generic code 2011-02-04 11:46:50 -07:00
prom.c microblaze: Add static qualifiers 2012-12-13 18:15:34 +01:00
ptrace.c seccomp: ignore secure_computing return values 2012-04-18 12:24:50 +10:00
reset.c microblaze: Prefer to use pr_XXX instead of printk(KERN_XX) 2012-10-04 15:00:32 +02:00
selfmod.c microblaze_v8: Selfmodified code 2009-03-27 14:25:15 +01:00
setup.c microblaze: Prefer to use pr_XXX instead of printk(KERN_XX) 2012-10-04 15:00:32 +02:00
signal.c microblaze: evict the check for kernel_mode(regs) from do_notify_resume() 2013-02-03 18:16:01 -05:00
stacktrace.c microblaze: Add stack unwinder 2010-08-04 10:22:35 +02:00
sys_microblaze.c microblaze: switch to generic fork/vfork/clone 2012-11-28 22:43:40 -05:00
syscall_table.S microblaze: Add finit_module syscall 2013-01-03 14:21:57 +01:00
timer.c microblaze: Prefer to use pr_XXX instead of printk(KERN_XX) 2012-10-04 15:00:32 +02:00
traps.c Disintegrate asm/system.h for Microblaze 2012-03-28 18:30:02 +01:00
unwind.c microblaze: Add missing headers caused by disintegration asm/system.h 2012-03-30 12:11:46 +02:00
vmlinux.lds.S mtd/uclinux: Use generic __bss_stop instead of _ebss 2012-06-27 09:59:43 +02:00