Greg Ungerer <[email protected]> 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, [email protected] 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 [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
