Lines Matching refs:regs
167 int setup_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc) in setup_sigcontext() argument
173 err |= __put_user(regs->cp0_epc, &sc->sc_pc); in setup_sigcontext()
177 err |= __put_user(regs->regs[i], &sc->sc_regs[i]); in setup_sigcontext()
180 err |= __put_user(regs->acx, &sc->sc_acx); in setup_sigcontext()
182 err |= __put_user(regs->hi, &sc->sc_mdhi); in setup_sigcontext()
183 err |= __put_user(regs->lo, &sc->sc_mdlo); in setup_sigcontext()
238 int restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc) in restore_sigcontext() argument
248 err |= __get_user(regs->cp0_epc, &sc->sc_pc); in restore_sigcontext()
251 err |= __get_user(regs->acx, &sc->sc_acx); in restore_sigcontext()
253 err |= __get_user(regs->hi, &sc->sc_mdhi); in restore_sigcontext()
254 err |= __get_user(regs->lo, &sc->sc_mdlo); in restore_sigcontext()
266 err |= __get_user(regs->regs[i], &sc->sc_regs[i]); in restore_sigcontext()
283 void __user *get_sigframe(struct ksignal *ksig, struct pt_regs *regs, in get_sigframe() argument
289 sp = regs->regs[29]; in get_sigframe()
356 asmlinkage void sys_sigreturn(nabi_no_regargs struct pt_regs regs) in sys_sigreturn() argument
362 frame = (struct sigframe __user *) regs.regs[29]; in sys_sigreturn()
370 sig = restore_sigcontext(®s, &frame->sf_sc); in sys_sigreturn()
383 :"r" (®s)); in sys_sigreturn()
391 asmlinkage void sys_rt_sigreturn(nabi_no_regargs struct pt_regs regs) in sys_rt_sigreturn() argument
397 frame = (struct rt_sigframe __user *) regs.regs[29]; in sys_rt_sigreturn()
405 sig = restore_sigcontext(®s, &frame->rs_uc.uc_mcontext); in sys_rt_sigreturn()
421 :"r" (®s)); in sys_rt_sigreturn()
430 struct pt_regs *regs, sigset_t *set) in setup_frame() argument
435 frame = get_sigframe(ksig, regs, sizeof(*frame)); in setup_frame()
439 err |= setup_sigcontext(regs, &frame->sf_sc); in setup_frame()
454 regs->regs[ 4] = ksig->sig; in setup_frame()
455 regs->regs[ 5] = 0; in setup_frame()
456 regs->regs[ 6] = (unsigned long) &frame->sf_sc; in setup_frame()
457 regs->regs[29] = (unsigned long) frame; in setup_frame()
458 regs->regs[31] = (unsigned long) sig_return; in setup_frame()
459 regs->cp0_epc = regs->regs[25] = (unsigned long) ksig->ka.sa.sa_handler; in setup_frame()
463 frame, regs->cp0_epc, regs->regs[31]); in setup_frame()
469 struct pt_regs *regs, sigset_t *set) in setup_rt_frame() argument
474 frame = get_sigframe(ksig, regs, sizeof(*frame)); in setup_rt_frame()
484 err |= __save_altstack(&frame->rs_uc.uc_stack, regs->regs[29]); in setup_rt_frame()
485 err |= setup_sigcontext(regs, &frame->rs_uc.uc_mcontext); in setup_rt_frame()
501 regs->regs[ 4] = ksig->sig; in setup_rt_frame()
502 regs->regs[ 5] = (unsigned long) &frame->rs_info; in setup_rt_frame()
503 regs->regs[ 6] = (unsigned long) &frame->rs_uc; in setup_rt_frame()
504 regs->regs[29] = (unsigned long) frame; in setup_rt_frame()
505 regs->regs[31] = (unsigned long) sig_return; in setup_rt_frame()
506 regs->cp0_epc = regs->regs[25] = (unsigned long) ksig->ka.sa.sa_handler; in setup_rt_frame()
510 frame, regs->cp0_epc, regs->regs[31]); in setup_rt_frame()
526 static void handle_signal(struct ksignal *ksig, struct pt_regs *regs) in handle_signal() argument
541 if (regs->regs[0]) { in handle_signal()
542 switch(regs->regs[2]) { in handle_signal()
545 regs->regs[2] = EINTR; in handle_signal()
549 regs->regs[2] = EINTR; in handle_signal()
554 regs->regs[7] = regs->regs[26]; in handle_signal()
555 regs->regs[2] = regs->regs[0]; in handle_signal()
556 regs->cp0_epc -= 4; in handle_signal()
559 regs->regs[0] = 0; /* Don't deal with this again. */ in handle_signal()
564 ksig, regs, oldset); in handle_signal()
567 regs, oldset); in handle_signal()
572 static void do_signal(struct pt_regs *regs) in do_signal() argument
578 handle_signal(&ksig, regs); in do_signal()
582 if (regs->regs[0]) { in do_signal()
583 switch (regs->regs[2]) { in do_signal()
587 regs->regs[2] = regs->regs[0]; in do_signal()
588 regs->regs[7] = regs->regs[26]; in do_signal()
589 regs->cp0_epc -= 4; in do_signal()
593 regs->regs[2] = current->thread.abi->restart; in do_signal()
594 regs->regs[7] = regs->regs[26]; in do_signal()
595 regs->cp0_epc -= 4; in do_signal()
598 regs->regs[0] = 0; /* Don't deal with this again. */ in do_signal()
612 asmlinkage void do_notify_resume(struct pt_regs *regs, void *unused, in do_notify_resume() argument
621 do_signal(regs); in do_notify_resume()
625 tracehook_notify_resume(regs); in do_notify_resume()