DECLARE_PER_CPU(unsigned int, CURRENT_SAVE); /* Saved current pointer */
# endif /* __ASSEMBLY__ */
+/* noMMU hasn't any space for args */
+# define STATE_SAVE_ARG_SPACE (0)
+
#endif /* _ASM_MICROBLAZE_ENTRY_H */
asmlinkage int sys_sigreturn(struct pt_regs *regs)
{
- struct sigframe *frame = (struct sigframe *)regs->r1;
+ struct sigframe *frame =
+ (struct sigframe *)(regs->r1 + STATE_SAVE_ARG_SPACE);
+
sigset_t set;
int rval;
asmlinkage int sys_rt_sigreturn(struct pt_regs *regs)
{
- struct rt_sigframe *frame = (struct rt_sigframe *)regs->r1;
+ struct rt_sigframe *frame =
+ (struct rt_sigframe *)(regs->r1 + STATE_SAVE_ARG_SPACE);
+
sigset_t set;
stack_t st;
int rval;
goto give_sigsegv;
/* Set up registers for signal handler */
- regs->r1 = (unsigned long) frame;
+ regs->r1 = (unsigned long) frame - STATE_SAVE_ARG_SPACE;
+
/* Signal handler args: */
regs->r5 = signal; /* Arg 0: signum */
regs->r6 = (unsigned long) &frame->sc; /* arg 1: sigcontext */
goto give_sigsegv;
/* Set up registers for signal handler */
- regs->r1 = (unsigned long) frame;
+ regs->r1 = (unsigned long) frame - STATE_SAVE_ARG_SPACE;
+
/* Signal handler args: */
regs->r5 = signal; /* arg 0: signum */
regs->r6 = (unsigned long) &frame->info; /* arg 1: siginfo */