Lines Matching refs:regs
50 struct pt_regs regs; member
75 asmlinkage void do_sigreturn(struct pt_regs *regs) in do_sigreturn() argument
89 sf = (struct signal_frame __user *) regs->u_regs[UREG_FP]; in do_sigreturn()
108 up_psr = regs->psr; in do_sigreturn()
109 err |= __copy_from_user(regs, &sf->info.si_regs, sizeof(struct pt_regs)); in do_sigreturn()
112 regs->psr = (up_psr & ~(PSR_ICC | PSR_EF)) in do_sigreturn()
113 | (regs->psr & (PSR_ICC | PSR_EF)); in do_sigreturn()
116 pt_regs_clear_syscall(regs); in do_sigreturn()
120 err |= restore_fpu_state(regs, fpu_save); in do_sigreturn()
142 asmlinkage void do_rt_sigreturn(struct pt_regs *regs) in do_rt_sigreturn() argument
152 sf = (struct rt_signal_frame __user *) regs->u_regs[UREG_FP]; in do_rt_sigreturn()
156 if (get_user(ufp, &sf->regs.u_regs[UREG_FP])) in do_rt_sigreturn()
162 err = __get_user(pc, &sf->regs.pc); in do_rt_sigreturn()
163 err |= __get_user(npc, &sf->regs.npc); in do_rt_sigreturn()
166 err |= __get_user(regs->y, &sf->regs.y); in do_rt_sigreturn()
167 err |= __get_user(psr, &sf->regs.psr); in do_rt_sigreturn()
169 err |= __copy_from_user(®s->u_regs[UREG_G1], in do_rt_sigreturn()
170 &sf->regs.u_regs[UREG_G1], 15 * sizeof(u32)); in do_rt_sigreturn()
172 regs->psr = (regs->psr & ~PSR_ICC) | (psr & PSR_ICC); in do_rt_sigreturn()
175 pt_regs_clear_syscall(regs); in do_rt_sigreturn()
179 err |= restore_fpu_state(regs, fpu_save); in do_rt_sigreturn()
186 regs->pc = pc; in do_rt_sigreturn()
187 regs->npc = npc; in do_rt_sigreturn()
201 static inline void __user *get_sigframe(struct ksignal *ksig, struct pt_regs *regs, unsigned long f… in get_sigframe() argument
203 unsigned long sp = regs->u_regs[UREG_FP]; in get_sigframe()
226 static int setup_frame(struct ksignal *ksig, struct pt_regs *regs, in setup_frame() argument
245 get_sigframe(ksig, regs, sigframe_size); in setup_frame()
255 err = __copy_to_user(&sf->info.si_regs, regs, sizeof(struct pt_regs)); in setup_frame()
262 err |= save_fpu_state(regs, fp); in setup_frame()
280 err |= __copy_to_user(sf, (char *) regs->u_regs[UREG_FP], in setup_frame()
292 regs->u_regs[UREG_FP] = (unsigned long) sf; in setup_frame()
293 regs->u_regs[UREG_I0] = ksig->sig; in setup_frame()
294 regs->u_regs[UREG_I1] = (unsigned long) &sf->info; in setup_frame()
295 regs->u_regs[UREG_I2] = (unsigned long) &sf->info; in setup_frame()
298 regs->pc = (unsigned long) ksig->ka.sa.sa_handler; in setup_frame()
299 regs->npc = (regs->pc + 4); in setup_frame()
303 regs->u_regs[UREG_I7] = (unsigned long)ksig->ka.ka_restorer; in setup_frame()
305 regs->u_regs[UREG_I7] = (unsigned long)(&(sf->insns[0]) - 2); in setup_frame()
321 static int setup_rt_frame(struct ksignal *ksig, struct pt_regs *regs, in setup_rt_frame() argument
338 get_sigframe(ksig, regs, sigframe_size); in setup_rt_frame()
345 err = __put_user(regs->pc, &sf->regs.pc); in setup_rt_frame()
346 err |= __put_user(regs->npc, &sf->regs.npc); in setup_rt_frame()
347 err |= __put_user(regs->y, &sf->regs.y); in setup_rt_frame()
348 psr = regs->psr; in setup_rt_frame()
351 err |= __put_user(psr, &sf->regs.psr); in setup_rt_frame()
352 err |= __copy_to_user(&sf->regs.u_regs, regs->u_regs, sizeof(regs->u_regs)); in setup_rt_frame()
358 err |= save_fpu_state(regs, fp); in setup_rt_frame()
374 err |= __save_altstack(&sf->stack, regs->u_regs[UREG_FP]); in setup_rt_frame()
377 err |= __copy_to_user(sf, (char *) regs->u_regs[UREG_FP], in setup_rt_frame()
391 regs->u_regs[UREG_FP] = (unsigned long) sf; in setup_rt_frame()
392 regs->u_regs[UREG_I0] = ksig->sig; in setup_rt_frame()
393 regs->u_regs[UREG_I1] = (unsigned long) &sf->info; in setup_rt_frame()
394 regs->u_regs[UREG_I2] = (unsigned long) &sf->regs; in setup_rt_frame()
396 regs->pc = (unsigned long) ksig->ka.sa.sa_handler; in setup_rt_frame()
397 regs->npc = (regs->pc + 4); in setup_rt_frame()
400 regs->u_regs[UREG_I7] = (unsigned long)ksig->ka.ka_restorer; in setup_rt_frame()
402 regs->u_regs[UREG_I7] = (unsigned long)(&(sf->insns[0]) - 2); in setup_rt_frame()
419 handle_signal(struct ksignal *ksig, struct pt_regs *regs) in handle_signal() argument
425 err = setup_rt_frame(ksig, regs, oldset); in handle_signal()
427 err = setup_frame(ksig, regs, oldset); in handle_signal()
431 static inline void syscall_restart(unsigned long orig_i0, struct pt_regs *regs, in syscall_restart() argument
434 switch(regs->u_regs[UREG_I0]) { in syscall_restart()
438 regs->u_regs[UREG_I0] = EINTR; in syscall_restart()
439 regs->psr |= PSR_C; in syscall_restart()
446 regs->u_regs[UREG_I0] = orig_i0; in syscall_restart()
447 regs->pc -= 4; in syscall_restart()
448 regs->npc -= 4; in syscall_restart()
456 static void do_signal(struct pt_regs *regs, unsigned long orig_i0) in do_signal() argument
480 if (pt_regs_is_syscall(regs) && (regs->psr & PSR_C)) in do_signal()
481 regs->u_regs[UREG_G6] = orig_i0; in do_signal()
490 if (pt_regs_is_syscall(regs) && (regs->psr & PSR_C)) { in do_signal()
492 orig_i0 = regs->u_regs[UREG_G6]; in do_signal()
497 syscall_restart(orig_i0, regs, &ksig.ka.sa); in do_signal()
498 handle_signal(&ksig, regs); in do_signal()
501 switch (regs->u_regs[UREG_I0]) { in do_signal()
506 regs->u_regs[UREG_I0] = orig_i0; in do_signal()
507 regs->pc -= 4; in do_signal()
508 regs->npc -= 4; in do_signal()
509 pt_regs_clear_syscall(regs); in do_signal()
511 regs->u_regs[UREG_G1] = __NR_restart_syscall; in do_signal()
512 regs->pc -= 4; in do_signal()
513 regs->npc -= 4; in do_signal()
514 pt_regs_clear_syscall(regs); in do_signal()
521 void do_notify_resume(struct pt_regs *regs, unsigned long orig_i0, in do_notify_resume() argument
525 do_signal(regs, orig_i0); in do_notify_resume()
528 tracehook_notify_resume(regs); in do_notify_resume()