Author: jmallett
Date: Tue Mar  6 08:10:48 2012
New Revision: 232586
URL: http://svn.freebsd.org/changeset/base/232586

Log:
  Make the native sigreturn just wrap set_mcontext, much as freebsd32_sigreturn
  does.

Modified:
  head/sys/mips/mips/pm_machdep.c

Modified: head/sys/mips/mips/pm_machdep.c
==============================================================================
--- head/sys/mips/mips/pm_machdep.c     Tue Mar  6 08:02:10 2012        
(r232585)
+++ head/sys/mips/mips/pm_machdep.c     Tue Mar  6 08:10:48 2012        
(r232586)
@@ -216,51 +216,22 @@ cpu_thread_siginfo(int sig, u_long code,
 int
 sys_sigreturn(struct thread *td, struct sigreturn_args *uap)
 {
-       struct trapframe *regs;
-       ucontext_t *ucp;
        ucontext_t uc;
        int error;
 
-       ucp = &uc;
-
        error = copyin(uap->sigcntxp, &uc, sizeof(uc));
        if (error != 0)
            return (error);
 
-       regs = td->td_frame;
-
-/* #ifdef DEBUG */
-       if (ucp->uc_mcontext.mc_regs[ZERO] != UCONTEXT_MAGIC) {
-               printf("sigreturn: pid %d, ucp %p\n", td->td_proc->p_pid, ucp);
-               printf("  old sp %p ra %p pc %p\n",
-                   (void *)(intptr_t)regs->sp, (void *)(intptr_t)regs->ra, 
(void *)(intptr_t)regs->pc);
-               printf("  new sp %p ra %p pc %p z %p\n",
-                   (void *)(intptr_t)ucp->uc_mcontext.mc_regs[SP],
-                   (void *)(intptr_t)ucp->uc_mcontext.mc_regs[RA],
-                   (void *)(intptr_t)ucp->uc_mcontext.mc_regs[PC],
-                   (void *)(intptr_t)ucp->uc_mcontext.mc_regs[ZERO]);
-               return EINVAL;
-       }
-/* #endif */
-
-       bcopy((const void *)&ucp->uc_mcontext.mc_regs[1], (void *)&regs->ast,
-           sizeof(ucp->uc_mcontext.mc_regs) - sizeof(register_t));
-
-       if (ucp->uc_mcontext.mc_fpused)
-               bcopy((const void *)ucp->uc_mcontext.mc_fpregs,
-                   (void *)&td->td_frame->f0,
-                   sizeof(ucp->uc_mcontext.mc_fpregs));
-
-       regs->pc = ucp->uc_mcontext.mc_pc;
-       regs->mullo = ucp->uc_mcontext.mullo;
-       regs->mulhi = ucp->uc_mcontext.mulhi;
+       error = set_mcontext(td, &uc.uc_mcontext);
+       if (error != 0)
+               return (error);
 
-       kern_sigprocmask(td, SIG_SETMASK, &ucp->uc_sigmask, NULL, 0);
+       kern_sigprocmask(td, SIG_SETMASK, &uc.uc_sigmask, NULL, 0);
 
-       return(EJUSTRETURN);
+       return (EJUSTRETURN);
 }
 
-
 int
 ptrace_set_pc(struct thread *td, unsigned long addr)
 {
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to