Lines Matching refs:regs

43 static int restore_sigcontext(struct pt_regs *regs,  in restore_sigcontext()  argument
56 err |= __copy_from_user(regs, sc->regs.gpr, 32 * sizeof(unsigned long)); in restore_sigcontext()
57 err |= __copy_from_user(&regs->pc, &sc->regs.pc, sizeof(unsigned long)); in restore_sigcontext()
58 err |= __copy_from_user(&regs->sr, &sc->regs.sr, sizeof(unsigned long)); in restore_sigcontext()
61 regs->sr &= ~SPR_SR_SM; in restore_sigcontext()
63 regs->orig_gpr11 = -1; /* Avoid syscall restart checks */ in restore_sigcontext()
73 asmlinkage long _sys_rt_sigreturn(struct pt_regs *regs) in _sys_rt_sigreturn() argument
75 struct rt_sigframe *frame = (struct rt_sigframe __user *)regs->sp; in _sys_rt_sigreturn()
93 if (restore_sigcontext(regs, &frame->uc.uc_mcontext)) in _sys_rt_sigreturn()
99 return regs->gpr[11]; in _sys_rt_sigreturn()
110 static int setup_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc) in setup_sigcontext() argument
118 err |= __copy_to_user(sc->regs.gpr, regs, 32 * sizeof(unsigned long)); in setup_sigcontext()
119 err |= __copy_to_user(&sc->regs.pc, &regs->pc, sizeof(unsigned long)); in setup_sigcontext()
120 err |= __copy_to_user(&sc->regs.sr, &regs->sr, sizeof(unsigned long)); in setup_sigcontext()
136 struct pt_regs *regs, size_t frame_size) in get_sigframe() argument
138 unsigned long sp = regs->sp; in get_sigframe()
156 struct pt_regs *regs) in setup_rt_frame() argument
162 frame = get_sigframe(ksig, regs, sizeof(*frame)); in setup_rt_frame()
174 err |= __save_altstack(&frame->uc.uc_stack, regs->sp); in setup_rt_frame()
175 err |= setup_sigcontext(regs, &frame->uc.uc_mcontext); in setup_rt_frame()
197 regs->pc = (unsigned long)ksig->ka.sa.sa_handler; /* what we enter NOW */ in setup_rt_frame()
198 regs->gpr[9] = (unsigned long)return_ip; /* what we enter LATER */ in setup_rt_frame()
199 regs->gpr[3] = (unsigned long)ksig->sig; /* arg 1: signo */ in setup_rt_frame()
200 regs->gpr[4] = (unsigned long)&frame->info; /* arg 2: (siginfo_t*) */ in setup_rt_frame()
201 regs->gpr[5] = (unsigned long)&frame->uc; /* arg 3: ucontext */ in setup_rt_frame()
204 regs->sp = (unsigned long)frame; in setup_rt_frame()
210 handle_signal(struct ksignal *ksig, struct pt_regs *regs) in handle_signal() argument
214 ret = setup_rt_frame(ksig, sigmask_to_save(), regs); in handle_signal()
231 int do_signal(struct pt_regs *regs, int syscall) in do_signal() argument
240 continue_addr = regs->pc; in do_signal()
242 retval = regs->gpr[11]; in do_signal()
256 regs->gpr[11] = regs->orig_gpr11; in do_signal()
257 regs->pc = restart_addr; in do_signal()
269 if (unlikely(restart) && regs->pc == restart_addr) { in do_signal()
275 regs->gpr[11] = -EINTR; in do_signal()
276 regs->pc = continue_addr; in do_signal()
279 handle_signal(&ksig, regs); in do_signal()
287 if (unlikely(restart) && regs->pc == restart_addr) { in do_signal()
288 regs->pc = continue_addr; in do_signal()
297 do_work_pending(struct pt_regs *regs, unsigned int thread_flags, int syscall) in do_work_pending() argument
303 if (unlikely(!user_mode(regs))) in do_work_pending()
307 int restart = do_signal(regs, syscall); in do_work_pending()
319 tracehook_notify_resume(regs); in do_work_pending()