Lines Matching refs:regs

32 restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc)  in restore_sigcontext()  argument
36 #define COPY(x) err |= __get_user(regs->x, &sc->x) in restore_sigcontext()
60 err |= !valid_user_regs(regs); in restore_sigcontext()
66 asmlinkage int sys_rt_sigreturn(struct pt_regs *regs) in sys_rt_sigreturn() argument
74 frame = (struct rt_sigframe __user *)regs->sp; in sys_rt_sigreturn()
85 if (restore_sigcontext(regs, &frame->uc.uc_mcontext)) in sys_rt_sigreturn()
92 regs->pc, regs->lr, regs->sp); in sys_rt_sigreturn()
94 return regs->r12; in sys_rt_sigreturn()
102 setup_sigcontext(struct sigcontext __user *sc, struct pt_regs *regs) in setup_sigcontext() argument
106 #define COPY(x) err |= __put_user(regs->x, &sc->x) in setup_sigcontext()
130 get_sigframe(struct ksignal *ksig, struct pt_regs *regs, int framesize) in get_sigframe() argument
132 unsigned long sp = sigsp(regs->sp, ksig); in get_sigframe()
138 setup_rt_frame(struct ksignal *ksig, sigset_t *set, struct pt_regs *regs) in setup_rt_frame() argument
143 frame = get_sigframe(ksig, regs, sizeof(*frame)); in setup_rt_frame()
168 err |= __save_altstack(&frame->uc.uc_stack, regs->sp); in setup_rt_frame()
169 err |= setup_sigcontext(&frame->uc.uc_mcontext, regs); in setup_rt_frame()
175 regs->r12 = ksig->sig; in setup_rt_frame()
176 regs->r11 = (unsigned long) &frame->info; in setup_rt_frame()
177 regs->r10 = (unsigned long) &frame->uc; in setup_rt_frame()
178 regs->sp = (unsigned long) frame; in setup_rt_frame()
180 regs->lr = (unsigned long)ksig->ka.sa.sa_restorer; in setup_rt_frame()
184 regs->lr = (unsigned long) &frame->retcode; in setup_rt_frame()
188 current->comm, current->pid, ksig->sig, regs->sp, in setup_rt_frame()
189 regs->pc, ksig->ka.sa.sa_handler, regs->lr); in setup_rt_frame()
191 regs->pc = (unsigned long)ksig->ka.sa.sa_handler; in setup_rt_frame()
197 static inline void setup_syscall_restart(struct pt_regs *regs) in setup_syscall_restart() argument
199 if (regs->r12 == -ERESTART_RESTARTBLOCK) in setup_syscall_restart()
200 regs->r8 = __NR_restart_syscall; in setup_syscall_restart()
202 regs->r12 = regs->r12_orig; in setup_syscall_restart()
203 regs->pc -= 2; in setup_syscall_restart()
207 handle_signal(struct ksignal *ksig, struct pt_regs *regs, int syscall) in handle_signal() argument
214 ret = setup_rt_frame(ksig, sigmask_to_save(), regs); in handle_signal()
219 ret |= !valid_user_regs(regs); in handle_signal()
232 static void do_signal(struct pt_regs *regs, int syscall) in do_signal() argument
241 if (!user_mode(regs)) in do_signal()
246 switch (regs->r12) { in do_signal()
250 regs->r12 = -EINTR; in do_signal()
256 regs->r12 = -EINTR; in do_signal()
261 setup_syscall_restart(regs); in do_signal()
271 handle_signal(&ksig, regs, syscall); in do_signal()
274 asmlinkage void do_notify_resume(struct pt_regs *regs, struct thread_info *ti) in do_notify_resume() argument
282 do_signal(regs, syscall); in do_notify_resume()
286 tracehook_notify_resume(regs); in do_notify_resume()