Lines Matching refs:regs
45 int restore_sigcontext(struct pt_regs *regs, in restore_sigcontext() argument
59 err = __copy_from_user(regs, sc, sizeof(*regs)); in restore_sigcontext()
62 regs->ex1 = PL_ICS_EX1(USER_PL, EX1_ICS(regs->ex1)); in restore_sigcontext()
64 regs->faultnum = INT_SWINT_1_SIGRETURN; in restore_sigcontext()
69 void signal_fault(const char *type, struct pt_regs *regs, in signal_fault() argument
72 trace_unhandled_signal(type, regs, (unsigned long)frame, SIGSEGV); in signal_fault()
79 struct pt_regs *regs = current_pt_regs(); in SYSCALL_DEFINE0() local
81 (struct rt_sigframe __user *)(regs->sp); in SYSCALL_DEFINE0()
91 if (restore_sigcontext(regs, &frame->uc.uc_mcontext)) in SYSCALL_DEFINE0()
100 signal_fault("bad sigreturn frame", regs, frame, 0); in SYSCALL_DEFINE0()
108 int setup_sigcontext(struct sigcontext __user *sc, struct pt_regs *regs) in setup_sigcontext() argument
110 return __copy_to_user(sc, regs, sizeof(*regs)); in setup_sigcontext()
117 struct pt_regs *regs, in get_sigframe() argument
123 sp = regs->sp; in get_sigframe()
149 struct pt_regs *regs) in setup_rt_frame() argument
155 frame = get_sigframe(&ksig->ka, regs, sizeof(*frame)); in setup_rt_frame()
164 regs->flags |= PT_FLAGS_RESTORE_REGS; in setup_rt_frame()
173 err |= __save_altstack(&frame->uc.uc_stack, regs->sp); in setup_rt_frame()
174 err |= setup_sigcontext(&frame->uc.uc_mcontext, regs); in setup_rt_frame()
190 regs->pc = (unsigned long) ksig->ka.sa.sa_handler; in setup_rt_frame()
191 regs->ex1 = PL_ICS_EX1(USER_PL, 1); /* set crit sec in handler */ in setup_rt_frame()
192 regs->sp = (unsigned long) frame; in setup_rt_frame()
193 regs->lr = restorer; in setup_rt_frame()
194 regs->regs[0] = (unsigned long) sig; in setup_rt_frame()
195 regs->regs[1] = (unsigned long) &frame->info; in setup_rt_frame()
196 regs->regs[2] = (unsigned long) &frame->uc; in setup_rt_frame()
197 regs->flags |= PT_FLAGS_CALLER_SAVES; in setup_rt_frame()
201 trace_unhandled_signal("bad sigreturn frame", regs, in setup_rt_frame()
210 static void handle_signal(struct ksignal *ksig, struct pt_regs *regs) in handle_signal() argument
216 if (regs->faultnum == INT_SWINT_1) { in handle_signal()
218 switch (regs->regs[0]) { in handle_signal()
221 regs->regs[0] = -EINTR; in handle_signal()
226 regs->regs[0] = -EINTR; in handle_signal()
232 regs->flags |= PT_FLAGS_CALLER_SAVES; in handle_signal()
233 regs->regs[0] = regs->orig_r0; in handle_signal()
234 regs->pc -= 8; in handle_signal()
241 ret = compat_setup_rt_frame(ksig, oldset, regs); in handle_signal()
244 ret = setup_rt_frame(ksig, oldset, regs); in handle_signal()
254 void do_signal(struct pt_regs *regs) in do_signal() argument
267 handle_signal(&ksig, regs); in do_signal()
272 if (regs->faultnum == INT_SWINT_1) { in do_signal()
274 switch (regs->regs[0]) { in do_signal()
278 regs->flags |= PT_FLAGS_CALLER_SAVES; in do_signal()
279 regs->regs[0] = regs->orig_r0; in do_signal()
280 regs->pc -= 8; in do_signal()
284 regs->flags |= PT_FLAGS_CALLER_SAVES; in do_signal()
285 regs->regs[TREG_SYSCALL_NR] = __NR_restart_syscall; in do_signal()
286 regs->pc -= 8; in do_signal()
296 regs->faultnum = INT_SWINT_1_SIGRETURN; in do_signal()
364 void trace_unhandled_signal(const char *type, struct pt_regs *regs, in trace_unhandled_signal() argument
386 tsk->comm, task_pid_nr(tsk), type, address, regs->pc, sig); in trace_unhandled_signal()
388 print_vma_addr(KERN_CONT " in ", regs->pc); in trace_unhandled_signal()
399 sig, regs->faultnum, address); in trace_unhandled_signal()
400 show_regs(regs); in trace_unhandled_signal()
405 sig, regs->faultnum); in trace_unhandled_signal()