Greg Ungerer <gerg@xxxxxxxxxxx> writes:
The motivation for this change is a problem with non-MMU targets that have broken signal return paths on newer versions of gcc. It appears as though aliasing of the regs and switch stack pointers, caused by their construction from pointers derived from the dummy long function parameter, is resulting in the gcc optimizer removing what it thinks is useless updates to the regs fields.
I wonder why gcc is doing that. The kernel is explicitly built without strict aliasing, so this looks like something to investigate.
-asmlinkage int do_sigreturn(unsigned long __unused) +asmlinkage int do_sigreturn(struct pt_regs *regs, struct switch_stack *sw)
Does it work to use this signature: asmlinkage int do_sigreturn(struct switch_stack sw, struct pt_regs regs) without changing the caller? Andreas. -- Andreas Schwab, schwab@xxxxxxxxxxxxxx GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." -- To unsubscribe from this list: send the line "unsubscribe linux-m68k" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html