Lines Matching refs:regs

45 restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc,  in restore_sigcontext()  argument
53 #define COPY(x) err |= __get_user(regs->x, &sc->sc_##x) in restore_sigcontext()
82 regs->syscall_nr = -1; /* disable syscall checks */ in restore_sigcontext()
91 unsigned long r5, unsigned long r6, struct pt_regs *regs) in sys_rt_sigreturn() argument
93 struct rt_sigframe __user *frame = (struct rt_sigframe __user *)regs->spu; in sys_rt_sigreturn()
104 if (restore_sigcontext(regs, &frame->uc.uc_mcontext, &result)) in sys_rt_sigreturn()
122 setup_sigcontext(struct sigcontext __user *sc, struct pt_regs *regs, in setup_sigcontext() argument
127 #define COPY(x) err |= __put_user(regs->x, &sc->sc_##x) in setup_sigcontext()
171 struct pt_regs *regs) in setup_rt_frame() argument
177 frame = get_sigframe(ksig, regs->spu, sizeof(*frame)); in setup_rt_frame()
195 err |= __save_altstack(&frame->uc.uc_stack, regs->spu); in setup_rt_frame()
196 err |= setup_sigcontext(&frame->uc.uc_mcontext, regs, set->sig[0]); in setup_rt_frame()
202 regs->lr = (unsigned long)ksig->ka.sa.sa_restorer; in setup_rt_frame()
205 regs->spu = (unsigned long)frame; in setup_rt_frame()
206 regs->r0 = sig; /* Arg for signal handler */ in setup_rt_frame()
207 regs->r1 = (unsigned long)&frame->info; in setup_rt_frame()
208 regs->r2 = (unsigned long)&frame->uc; in setup_rt_frame()
209 regs->bpc = (unsigned long)ksig->ka.sa.sa_handler; in setup_rt_frame()
213 current->comm, current->pid, frame, regs->pc); in setup_rt_frame()
219 static int prev_insn(struct pt_regs *regs) in prev_insn() argument
222 if (get_user(inst, (u16 __user *)(regs->bpc - 2))) in prev_insn()
225 regs->bpc -= 2; in prev_insn()
227 regs->bpc -= 4; in prev_insn()
228 regs->syscall_nr = -1; in prev_insn()
237 handle_signal(struct ksignal *ksig, struct pt_regs *regs) in handle_signal() argument
242 if (regs->syscall_nr >= 0) { in handle_signal()
244 switch (regs->r0) { in handle_signal()
247 regs->r0 = -EINTR; in handle_signal()
252 regs->r0 = -EINTR; in handle_signal()
257 regs->r0 = regs->orig_r0; in handle_signal()
258 if (prev_insn(regs) < 0) in handle_signal()
264 ret = setup_rt_frame(ksig, sigmask_to_save(), regs); in handle_signal()
274 static void do_signal(struct pt_regs *regs) in do_signal() argument
284 if (!user_mode(regs)) in do_signal()
295 handle_signal(&ksig, regs); in do_signal()
301 if (regs->syscall_nr >= 0) { in do_signal()
303 if (regs->r0 == -ERESTARTNOHAND || in do_signal()
304 regs->r0 == -ERESTARTSYS || in do_signal()
305 regs->r0 == -ERESTARTNOINTR) { in do_signal()
306 regs->r0 = regs->orig_r0; in do_signal()
307 prev_insn(regs); in do_signal()
308 } else if (regs->r0 == -ERESTART_RESTARTBLOCK){ in do_signal()
309 regs->r0 = regs->orig_r0; in do_signal()
310 regs->r7 = __NR_restart_syscall; in do_signal()
311 prev_insn(regs); in do_signal()
321 void do_notify_resume(struct pt_regs *regs, __u32 thread_info_flags) in do_notify_resume() argument
329 do_signal(regs); in do_notify_resume()
333 tracehook_notify_resume(regs); in do_notify_resume()