Lines Matching refs:regs

37 static int restore_sigcontext(struct pt_regs *regs,  in restore_sigcontext()  argument
43 #define COPY(x) (err |= __get_user(regs->x, &sc->sc_##x)) in restore_sigcontext()
65 asmlinkage int do_rt_sigreturn(struct pt_regs *regs) in do_rt_sigreturn() argument
78 if (regs->sp & 7) in do_rt_sigreturn()
81 frame = (struct rt_sigframe __user *) ((unsigned long) regs->sp + 8); in do_rt_sigreturn()
90 if (restore_sigcontext(regs, &frame->uc.uc_mcontext)) in do_rt_sigreturn()
93 return regs->a4; in do_rt_sigreturn()
100 static int setup_sigcontext(struct sigcontext __user *sc, struct pt_regs *regs, in setup_sigcontext() argument
108 #define COPY(x) (err |= __put_user(regs->x, &sc->sc_##x)) in setup_sigcontext()
131 struct pt_regs *regs, in get_sigframe() argument
134 unsigned long sp = sigsp(regs->sp, ksig); in get_sigframe()
144 struct pt_regs *regs) in setup_rt_frame() argument
150 frame = get_sigframe(ksig, regs, sizeof(*frame)); in setup_rt_frame()
162 err |= setup_sigcontext(&frame->uc.uc_mcontext, regs, set->sig[0]); in setup_rt_frame()
193 regs->sp = (unsigned long) frame - 8; in setup_rt_frame()
194 regs->b3 = (unsigned long) retcode; in setup_rt_frame()
195 regs->pc = (unsigned long) ksig->ka.sa.sa_handler; in setup_rt_frame()
198 regs->a4 = ksig->sig; in setup_rt_frame()
205 regs->b4 = (unsigned long)&frame->info; in setup_rt_frame()
206 regs->a6 = (unsigned long)&frame->uc; in setup_rt_frame()
212 handle_restart(struct pt_regs *regs, struct k_sigaction *ka, int has_handler) in handle_restart() argument
214 switch (regs->a4) { in handle_restart()
218 regs->a4 = -EINTR; in handle_restart()
223 regs->a4 = -EINTR; in handle_restart()
229 regs->a4 = regs->orig_a4; in handle_restart()
230 regs->pc -= 4; in handle_restart()
238 static void handle_signal(struct ksignal *ksig, struct pt_regs *regs, in handle_signal() argument
246 switch (regs->a4) { in handle_signal()
249 regs->a4 = -EINTR; in handle_signal()
254 regs->a4 = -EINTR; in handle_signal()
260 regs->a4 = regs->orig_a4; in handle_signal()
261 regs->pc -= 4; in handle_signal()
266 ret = setup_rt_frame(ksig, sigmask_to_save(), regs); in handle_signal()
273 static void do_signal(struct pt_regs *regs, int syscall) in do_signal() argument
279 if (!user_mode(regs)) in do_signal()
283 handle_signal(&ksig, regs, syscall); in do_signal()
290 switch (regs->a4) { in do_signal()
294 regs->a4 = regs->orig_a4; in do_signal()
295 regs->pc -= 4; in do_signal()
299 regs->a4 = regs->orig_a4; in do_signal()
300 regs->b0 = __NR_restart_syscall; in do_signal()
301 regs->pc -= 4; in do_signal()
315 asmlinkage void do_notify_resume(struct pt_regs *regs, u32 thread_info_flags, in do_notify_resume() argument
320 do_signal(regs, syscall); in do_notify_resume()
324 tracehook_notify_resume(regs); in do_notify_resume()