Lines Matching refs:regs

410 int setup_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc)  in setup_sigcontext()  argument
415 err |= __put_user(regs->cp0_epc, &sc->sc_pc); in setup_sigcontext()
419 err |= __put_user(regs->regs[i], &sc->sc_regs[i]); in setup_sigcontext()
422 err |= __put_user(regs->acx, &sc->sc_acx); in setup_sigcontext()
424 err |= __put_user(regs->hi, &sc->sc_mdhi); in setup_sigcontext()
425 err |= __put_user(regs->lo, &sc->sc_mdlo); in setup_sigcontext()
487 int restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc) in restore_sigcontext() argument
496 err |= __get_user(regs->cp0_epc, &sc->sc_pc); in restore_sigcontext()
499 err |= __get_user(regs->acx, &sc->sc_acx); in restore_sigcontext()
501 err |= __get_user(regs->hi, &sc->sc_mdhi); in restore_sigcontext()
502 err |= __get_user(regs->lo, &sc->sc_mdlo); in restore_sigcontext()
514 err |= __get_user(regs->regs[i], &sc->sc_regs[i]); in restore_sigcontext()
519 void __user *get_sigframe(struct ksignal *ksig, struct pt_regs *regs, in get_sigframe() argument
528 sp = regs->regs[29]; in get_sigframe()
595 asmlinkage void sys_sigreturn(nabi_no_regargs struct pt_regs regs) in sys_sigreturn() argument
601 frame = (struct sigframe __user *) regs.regs[29]; in sys_sigreturn()
609 sig = restore_sigcontext(&regs, &frame->sf_sc); in sys_sigreturn()
622 :"r" (&regs)); in sys_sigreturn()
630 asmlinkage void sys_rt_sigreturn(nabi_no_regargs struct pt_regs regs) in sys_rt_sigreturn() argument
636 frame = (struct rt_sigframe __user *) regs.regs[29]; in sys_rt_sigreturn()
644 sig = restore_sigcontext(&regs, &frame->rs_uc.uc_mcontext); in sys_rt_sigreturn()
660 :"r" (&regs)); in sys_rt_sigreturn()
669 struct pt_regs *regs, sigset_t *set) in setup_frame() argument
674 frame = get_sigframe(ksig, regs, sizeof(*frame)); in setup_frame()
678 err |= setup_sigcontext(regs, &frame->sf_sc); in setup_frame()
693 regs->regs[ 4] = ksig->sig; in setup_frame()
694 regs->regs[ 5] = 0; in setup_frame()
695 regs->regs[ 6] = (unsigned long) &frame->sf_sc; in setup_frame()
696 regs->regs[29] = (unsigned long) frame; in setup_frame()
697 regs->regs[31] = (unsigned long) sig_return; in setup_frame()
698 regs->cp0_epc = regs->regs[25] = (unsigned long) ksig->ka.sa.sa_handler; in setup_frame()
702 frame, regs->cp0_epc, regs->regs[31]); in setup_frame()
708 struct pt_regs *regs, sigset_t *set) in setup_rt_frame() argument
713 frame = get_sigframe(ksig, regs, sizeof(*frame)); in setup_rt_frame()
723 err |= __save_altstack(&frame->rs_uc.uc_stack, regs->regs[29]); in setup_rt_frame()
724 err |= setup_sigcontext(regs, &frame->rs_uc.uc_mcontext); in setup_rt_frame()
740 regs->regs[ 4] = ksig->sig; in setup_rt_frame()
741 regs->regs[ 5] = (unsigned long) &frame->rs_info; in setup_rt_frame()
742 regs->regs[ 6] = (unsigned long) &frame->rs_uc; in setup_rt_frame()
743 regs->regs[29] = (unsigned long) frame; in setup_rt_frame()
744 regs->regs[31] = (unsigned long) sig_return; in setup_rt_frame()
745 regs->cp0_epc = regs->regs[25] = (unsigned long) ksig->ka.sa.sa_handler; in setup_rt_frame()
749 frame, regs->cp0_epc, regs->regs[31]); in setup_rt_frame()
768 static void handle_signal(struct ksignal *ksig, struct pt_regs *regs) in handle_signal() argument
775 if (regs->regs[0]) { in handle_signal()
776 switch(regs->regs[2]) { in handle_signal()
779 regs->regs[2] = EINTR; in handle_signal()
783 regs->regs[2] = EINTR; in handle_signal()
788 regs->regs[7] = regs->regs[26]; in handle_signal()
789 regs->regs[2] = regs->regs[0]; in handle_signal()
790 regs->cp0_epc -= 4; in handle_signal()
793 regs->regs[0] = 0; /* Don't deal with this again. */ in handle_signal()
798 ksig, regs, oldset); in handle_signal()
801 ksig, regs, oldset); in handle_signal()
806 static void do_signal(struct pt_regs *regs) in do_signal() argument
812 handle_signal(&ksig, regs); in do_signal()
816 if (regs->regs[0]) { in do_signal()
817 switch (regs->regs[2]) { in do_signal()
821 regs->regs[2] = regs->regs[0]; in do_signal()
822 regs->regs[7] = regs->regs[26]; in do_signal()
823 regs->cp0_epc -= 4; in do_signal()
827 regs->regs[2] = current->thread.abi->restart; in do_signal()
828 regs->regs[7] = regs->regs[26]; in do_signal()
829 regs->cp0_epc -= 4; in do_signal()
832 regs->regs[0] = 0; /* Don't deal with this again. */ in do_signal()
846 asmlinkage void do_notify_resume(struct pt_regs *regs, void *unused, in do_notify_resume() argument
854 uprobe_notify_resume(regs); in do_notify_resume()
858 do_signal(regs); in do_notify_resume()
862 tracehook_notify_resume(regs); in do_notify_resume()