Lines Matching refs:regs

71 restore_sigcontext(struct sigcontext __user *sc, struct pt_regs *regs)  in restore_sigcontext()  argument
75 err |= __copy_from_user(regs->gr, sc->sc_gr, sizeof(regs->gr)); in restore_sigcontext()
76 err |= __copy_from_user(regs->fr, sc->sc_fr, sizeof(regs->fr)); in restore_sigcontext()
77 err |= __copy_from_user(regs->iaoq, sc->sc_iaoq, sizeof(regs->iaoq)); in restore_sigcontext()
78 err |= __copy_from_user(regs->iasq, sc->sc_iasq, sizeof(regs->iasq)); in restore_sigcontext()
79 err |= __get_user(regs->sar, &sc->sc_sar); in restore_sigcontext()
81 regs->iaoq[0],regs->iaoq[1]); in restore_sigcontext()
82 DBG(2,"restore_sigcontext: r28 is %ld\n", regs->gr[28]); in restore_sigcontext()
87 sys_rt_sigreturn(struct pt_regs *regs, int in_syscall) in sys_rt_sigreturn() argument
91 unsigned long usp = (regs->gr[30] & ~(0x01UL)); in sys_rt_sigreturn()
108 regs->orig_r28 = 1; /* no restarts for sigreturn */ in sys_rt_sigreturn()
134 &compat_frame->regs, regs)) in sys_rt_sigreturn()
145 if (restore_sigcontext(&frame->uc.uc_mcontext, regs)) in sys_rt_sigreturn()
159 regs->gr[31] = regs->iaoq[0]; in sys_rt_sigreturn()
161 DBG(1,"sys_rt_sigreturn: returning to %#lx, DUMPING REGS:\n", regs->iaoq[0]); in sys_rt_sigreturn()
162 show_regs(regs); in sys_rt_sigreturn()
195 setup_sigcontext(struct sigcontext __user *sc, struct pt_regs *regs, int in_syscall) in setup_sigcontext() argument
206 err |= __put_user(regs->gr[31], &sc->sc_iaoq[0]); in setup_sigcontext()
207 err |= __put_user(regs->gr[31]+4, &sc->sc_iaoq[1]); in setup_sigcontext()
208 err |= __put_user(regs->sr[3], &sc->sc_iasq[0]); in setup_sigcontext()
209 err |= __put_user(regs->sr[3], &sc->sc_iasq[1]); in setup_sigcontext()
211 regs->gr[31], regs->gr[31]+4); in setup_sigcontext()
213 err |= __copy_to_user(sc->sc_iaoq, regs->iaoq, sizeof(regs->iaoq)); in setup_sigcontext()
214 err |= __copy_to_user(sc->sc_iasq, regs->iasq, sizeof(regs->iasq)); in setup_sigcontext()
216 regs->iaoq[0], regs->iaoq[1]); in setup_sigcontext()
220 err |= __copy_to_user(sc->sc_gr, regs->gr, sizeof(regs->gr)); in setup_sigcontext()
221 err |= __copy_to_user(sc->sc_fr, regs->fr, sizeof(regs->fr)); in setup_sigcontext()
222 err |= __put_user(regs->sar, &sc->sc_sar); in setup_sigcontext()
223 DBG(1,"setup_sigcontext: r28 is %ld\n", regs->gr[28]); in setup_sigcontext()
229 setup_rt_frame(struct ksignal *ksig, sigset_t *set, struct pt_regs *regs, in setup_rt_frame() argument
241 usp = (regs->gr[30] & ~(0x01UL)); in setup_rt_frame()
256 err |= __compat_save_altstack( &compat_frame->uc.uc_stack, regs->gr[30]); in setup_rt_frame()
260 &compat_frame->regs, regs, in_syscall); in setup_rt_frame()
268 err |= __save_altstack(&frame->uc.uc_stack, regs->gr[30]); in setup_rt_frame()
271 err |= setup_sigcontext(&frame->uc.uc_mcontext, regs, in_syscall); in setup_rt_frame()
331 regs->gr[19] = fdesc.gp; in setup_rt_frame()
344 regs->gr[19] = fdesc.gp; in setup_rt_frame()
346 haddr, regs->gr[19], in_syscall); in setup_rt_frame()
358 regs->gr[31] = haddr; in setup_rt_frame()
382 regs->gr[0] = psw; in setup_rt_frame()
383 regs->iaoq[0] = haddr | 3; in setup_rt_frame()
384 regs->iaoq[1] = regs->iaoq[0] + 4; in setup_rt_frame()
387 regs->gr[2] = rp; /* userland return pointer */ in setup_rt_frame()
388 regs->gr[26] = ksig->sig; /* signal number */ in setup_rt_frame()
392 regs->gr[25] = A(&compat_frame->info); /* siginfo pointer */ in setup_rt_frame()
393 regs->gr[24] = A(&compat_frame->uc); /* ucontext pointer */ in setup_rt_frame()
397 regs->gr[25] = A(&frame->info); /* siginfo pointer */ in setup_rt_frame()
398 regs->gr[24] = A(&frame->uc); /* ucontext pointer */ in setup_rt_frame()
402 regs->gr[30], sigframe_size, in setup_rt_frame()
403 regs->gr[30] + sigframe_size); in setup_rt_frame()
405 regs->gr[30] = (A(frame) + sigframe_size); in setup_rt_frame()
409 current->comm, current->pid, frame, regs->gr[30], in setup_rt_frame()
410 regs->iaoq[0], regs->iaoq[1], rp); in setup_rt_frame()
420 handle_signal(struct ksignal *ksig, struct pt_regs *regs, int in_syscall) in handle_signal() argument
426 ksig->sig, ksig->ka, ksig->info, oldset, regs); in handle_signal()
429 ret = setup_rt_frame(ksig, oldset, regs, in_syscall); in handle_signal()
435 regs->gr[28]); in handle_signal()
439 syscall_restart(struct pt_regs *regs, struct k_sigaction *ka) in syscall_restart() argument
441 if (regs->orig_r28) in syscall_restart()
443 regs->orig_r28 = 1; /* no more restarts */ in syscall_restart()
445 switch (regs->gr[28]) { in syscall_restart()
449 regs->gr[28] = -EINTR; in syscall_restart()
455 regs->gr[28] = -EINTR; in syscall_restart()
463 regs->gr[31] -= 8; /* delayed branching */ in syscall_restart()
469 insert_restart_trampoline(struct pt_regs *regs) in insert_restart_trampoline() argument
471 if (regs->orig_r28) in insert_restart_trampoline()
473 regs->orig_r28 = 1; /* no more restarts */ in insert_restart_trampoline()
474 switch(regs->gr[28]) { in insert_restart_trampoline()
477 unsigned int *usp = (unsigned int *)regs->gr[30]; in insert_restart_trampoline()
492 err |= put_user(regs->gr[31] >> 32, &usp[0]); in insert_restart_trampoline()
493 err |= put_user(regs->gr[31] & 0xffffffff, &usp[1]); in insert_restart_trampoline()
496 err |= put_user(regs->gr[31], &usp[0]); in insert_restart_trampoline()
508 regs->gr[31] = regs->gr[30] + 8; in insert_restart_trampoline()
519 regs->gr[31] -= 8; in insert_restart_trampoline()
539 do_signal(struct pt_regs *regs, long in_syscall) in do_signal() argument
544 regs, regs->sr[7], in_syscall); in do_signal()
547 DBG(3,"do_signal: signr = %d, regs->gr[28] = %ld\n", signr, regs->gr[28]); in do_signal()
550 syscall_restart(regs, &ksig.ka); in do_signal()
552 handle_signal(&ksig, regs, in_syscall); in do_signal()
558 insert_restart_trampoline(regs); in do_signal()
561 regs->gr[28]); in do_signal()
566 void do_notify_resume(struct pt_regs *regs, long in_syscall) in do_notify_resume() argument
569 do_signal(regs, in_syscall); in do_notify_resume()
573 tracehook_notify_resume(regs); in do_notify_resume()