Lines Matching refs:regs
66 stash_usr_regs(struct rt_sigframe __user *sf, struct pt_regs *regs, in stash_usr_regs() argument
70 err = __copy_to_user(&(sf->uc.uc_mcontext.regs.scratch), regs, in stash_usr_regs()
71 sizeof(sf->uc.uc_mcontext.regs.scratch)); in stash_usr_regs()
77 static int restore_usr_regs(struct pt_regs *regs, struct rt_sigframe __user *sf) in restore_usr_regs() argument
86 err |= __copy_from_user(regs, &(sf->uc.uc_mcontext.regs.scratch), in restore_usr_regs()
87 sizeof(sf->uc.uc_mcontext.regs.scratch)); in restore_usr_regs()
104 struct pt_regs *regs = current_pt_regs(); in SYSCALL_DEFINE0() local
113 if (regs->sp & 3) in SYSCALL_DEFINE0()
116 sf = (struct rt_sigframe __force __user *)(regs->sp); in SYSCALL_DEFINE0()
128 if (restore_usr_regs(regs, sf)) in SYSCALL_DEFINE0()
132 syscall_wont_restart(regs); in SYSCALL_DEFINE0()
141 regs->status32 |= STATUS_U_MASK; in SYSCALL_DEFINE0()
143 return regs->r0; in SYSCALL_DEFINE0()
154 struct pt_regs *regs, in get_sigframe() argument
157 unsigned long sp = sigsp(regs->sp, ksig); in get_sigframe()
175 setup_rt_frame(struct ksignal *ksig, sigset_t *set, struct pt_regs *regs) in setup_rt_frame() argument
181 sf = get_sigframe(ksig, regs, sizeof(struct rt_sigframe)); in setup_rt_frame()
192 err |= stash_usr_regs(sf, regs, set); in setup_rt_frame()
204 err |= __save_altstack(&sf->uc.uc_stack, regs->sp); in setup_rt_frame()
207 regs->r1 = (unsigned long)&sf->info; in setup_rt_frame()
208 regs->r2 = (unsigned long)&sf->uc; in setup_rt_frame()
222 regs->r0 = ksig->sig; in setup_rt_frame()
225 regs->ret = (unsigned long)ksig->ka.sa.sa_handler; in setup_rt_frame()
234 regs->blink = (unsigned long)ksig->ka.sa.sa_restorer; in setup_rt_frame()
237 regs->sp = (unsigned long)sf; in setup_rt_frame()
243 regs->status32 &= ~STATUS_DE_MASK; in setup_rt_frame()
244 regs->status32 |= STATUS_L_MASK; in setup_rt_frame()
249 static void arc_restart_syscall(struct k_sigaction *ka, struct pt_regs *regs) in arc_restart_syscall() argument
251 switch (regs->r0) { in arc_restart_syscall()
260 regs->r0 = -EINTR; /* ERESTART_xxx is internal */ in arc_restart_syscall()
270 regs->r0 = -EINTR; in arc_restart_syscall()
286 regs->r0 = regs->orig_r0; in arc_restart_syscall()
287 regs->ret -= 4; in arc_restart_syscall()
296 handle_signal(struct ksignal *ksig, struct pt_regs *regs) in handle_signal() argument
302 failed = setup_rt_frame(ksig, oldset, regs); in handle_signal()
307 void do_signal(struct pt_regs *regs) in do_signal() argument
312 restart_scall = in_syscall(regs) && syscall_restartable(regs); in do_signal()
316 arc_restart_syscall(&ksig.ka, regs); in do_signal()
317 syscall_wont_restart(regs); /* No more restarts */ in do_signal()
319 handle_signal(&ksig, regs); in do_signal()
325 if (regs->r0 == -ERESTARTNOHAND || in do_signal()
326 regs->r0 == -ERESTARTSYS || regs->r0 == -ERESTARTNOINTR) { in do_signal()
327 regs->r0 = regs->orig_r0; in do_signal()
328 regs->ret -= 4; in do_signal()
329 } else if (regs->r0 == -ERESTART_RESTARTBLOCK) { in do_signal()
330 regs->r8 = __NR_restart_syscall; in do_signal()
331 regs->ret -= 4; in do_signal()
333 syscall_wont_restart(regs); /* No more restarts */ in do_signal()
340 void do_notify_resume(struct pt_regs *regs) in do_notify_resume() argument
347 tracehook_notify_resume(regs); in do_notify_resume()