|
@@ -95,7 +95,7 @@ restore_sigcontext(struct sigcontext *usc, int *pd0)
|
|
regs->ccr |= ccr;
|
|
regs->ccr |= ccr;
|
|
regs->orig_er0 = -1; /* disable syscall checks */
|
|
regs->orig_er0 = -1; /* disable syscall checks */
|
|
err |= __get_user(usp, &usc->sc_usp);
|
|
err |= __get_user(usp, &usc->sc_usp);
|
|
- wrusp(usp);
|
|
|
|
|
|
+ regs->sp = usp;
|
|
|
|
|
|
err |= __get_user(er0, &usc->sc_er0);
|
|
err |= __get_user(er0, &usc->sc_er0);
|
|
*pd0 = er0;
|
|
*pd0 = er0;
|
|
@@ -180,7 +180,7 @@ static int setup_rt_frame(struct ksignal *ksig, sigset_t *set,
|
|
return -EFAULT;
|
|
return -EFAULT;
|
|
|
|
|
|
/* Set up to return from userspace. */
|
|
/* Set up to return from userspace. */
|
|
- ret = frame->retcode;
|
|
|
|
|
|
+ ret = (unsigned char *)&frame->retcode;
|
|
if (ksig->ka.sa.sa_flags & SA_RESTORER)
|
|
if (ksig->ka.sa.sa_flags & SA_RESTORER)
|
|
ret = (unsigned char *)(ksig->ka.sa.sa_restorer);
|
|
ret = (unsigned char *)(ksig->ka.sa.sa_restorer);
|
|
else {
|
|
else {
|
|
@@ -196,8 +196,8 @@ static int setup_rt_frame(struct ksignal *ksig, sigset_t *set,
|
|
return -EFAULT;
|
|
return -EFAULT;
|
|
|
|
|
|
/* Set up registers for signal handler */
|
|
/* Set up registers for signal handler */
|
|
- wrusp((unsigned long) frame);
|
|
|
|
- regs->pc = (unsigned long) ksig->ka.sa.sa_handler;
|
|
|
|
|
|
+ regs->sp = (unsigned long)frame;
|
|
|
|
+ regs->pc = (unsigned long)ksig->ka.sa.sa_handler;
|
|
regs->er0 = ksig->sig;
|
|
regs->er0 = ksig->sig;
|
|
regs->er1 = (unsigned long)&(frame->info);
|
|
regs->er1 = (unsigned long)&(frame->info);
|
|
regs->er2 = (unsigned long)&frame->uc;
|
|
regs->er2 = (unsigned long)&frame->uc;
|