Lines Matching refs:regs

50 	struct pt_regs		regs;  member
63 asmlinkage void do_sigreturn(struct pt_regs *regs) in do_sigreturn() argument
77 sf = (struct signal_frame __user *) regs->u_regs[UREG_FP]; in do_sigreturn()
93 up_psr = regs->psr; in do_sigreturn()
94 err |= __copy_from_user(regs, &sf->info.si_regs, sizeof(struct pt_regs)); in do_sigreturn()
97 regs->psr = (up_psr & ~(PSR_ICC | PSR_EF)) in do_sigreturn()
98 | (regs->psr & (PSR_ICC | PSR_EF)); in do_sigreturn()
101 pt_regs_clear_syscall(regs); in do_sigreturn()
105 err |= restore_fpu_state(regs, fpu_save); in do_sigreturn()
127 asmlinkage void do_rt_sigreturn(struct pt_regs *regs) in do_rt_sigreturn() argument
137 sf = (struct rt_signal_frame __user *) regs->u_regs[UREG_FP]; in do_rt_sigreturn()
142 err = __get_user(pc, &sf->regs.pc); in do_rt_sigreturn()
143 err |= __get_user(npc, &sf->regs.npc); in do_rt_sigreturn()
146 err |= __get_user(regs->y, &sf->regs.y); in do_rt_sigreturn()
147 err |= __get_user(psr, &sf->regs.psr); in do_rt_sigreturn()
149 err |= __copy_from_user(&regs->u_regs[UREG_G1], in do_rt_sigreturn()
150 &sf->regs.u_regs[UREG_G1], 15 * sizeof(u32)); in do_rt_sigreturn()
152 regs->psr = (regs->psr & ~PSR_ICC) | (psr & PSR_ICC); in do_rt_sigreturn()
155 pt_regs_clear_syscall(regs); in do_rt_sigreturn()
159 err |= restore_fpu_state(regs, fpu_save); in do_rt_sigreturn()
166 regs->pc = pc; in do_rt_sigreturn()
167 regs->npc = npc; in do_rt_sigreturn()
190 static inline void __user *get_sigframe(struct ksignal *ksig, struct pt_regs *regs, unsigned long f… in get_sigframe() argument
192 unsigned long sp = regs->u_regs[UREG_FP]; in get_sigframe()
215 static int setup_frame(struct ksignal *ksig, struct pt_regs *regs, in setup_frame() argument
234 get_sigframe(ksig, regs, sigframe_size); in setup_frame()
244 err = __copy_to_user(&sf->info.si_regs, regs, sizeof(struct pt_regs)); in setup_frame()
251 err |= save_fpu_state(regs, fp); in setup_frame()
269 err |= __copy_to_user(sf, (char *) regs->u_regs[UREG_FP], in setup_frame()
281 regs->u_regs[UREG_FP] = (unsigned long) sf; in setup_frame()
282 regs->u_regs[UREG_I0] = ksig->sig; in setup_frame()
283 regs->u_regs[UREG_I1] = (unsigned long) &sf->info; in setup_frame()
284 regs->u_regs[UREG_I2] = (unsigned long) &sf->info; in setup_frame()
287 regs->pc = (unsigned long) ksig->ka.sa.sa_handler; in setup_frame()
288 regs->npc = (regs->pc + 4); in setup_frame()
292 regs->u_regs[UREG_I7] = (unsigned long)ksig->ka.ka_restorer; in setup_frame()
294 regs->u_regs[UREG_I7] = (unsigned long)(&(sf->insns[0]) - 2); in setup_frame()
310 static int setup_rt_frame(struct ksignal *ksig, struct pt_regs *regs, in setup_rt_frame() argument
327 get_sigframe(ksig, regs, sigframe_size); in setup_rt_frame()
334 err = __put_user(regs->pc, &sf->regs.pc); in setup_rt_frame()
335 err |= __put_user(regs->npc, &sf->regs.npc); in setup_rt_frame()
336 err |= __put_user(regs->y, &sf->regs.y); in setup_rt_frame()
337 psr = regs->psr; in setup_rt_frame()
340 err |= __put_user(psr, &sf->regs.psr); in setup_rt_frame()
341 err |= __copy_to_user(&sf->regs.u_regs, regs->u_regs, sizeof(regs->u_regs)); in setup_rt_frame()
347 err |= save_fpu_state(regs, fp); in setup_rt_frame()
363 err |= __save_altstack(&sf->stack, regs->u_regs[UREG_FP]); in setup_rt_frame()
366 err |= __copy_to_user(sf, (char *) regs->u_regs[UREG_FP], in setup_rt_frame()
380 regs->u_regs[UREG_FP] = (unsigned long) sf; in setup_rt_frame()
381 regs->u_regs[UREG_I0] = ksig->sig; in setup_rt_frame()
382 regs->u_regs[UREG_I1] = (unsigned long) &sf->info; in setup_rt_frame()
383 regs->u_regs[UREG_I2] = (unsigned long) &sf->regs; in setup_rt_frame()
385 regs->pc = (unsigned long) ksig->ka.sa.sa_handler; in setup_rt_frame()
386 regs->npc = (regs->pc + 4); in setup_rt_frame()
389 regs->u_regs[UREG_I7] = (unsigned long)ksig->ka.ka_restorer; in setup_rt_frame()
391 regs->u_regs[UREG_I7] = (unsigned long)(&(sf->insns[0]) - 2); in setup_rt_frame()
408 handle_signal(struct ksignal *ksig, struct pt_regs *regs) in handle_signal() argument
414 err = setup_rt_frame(ksig, regs, oldset); in handle_signal()
416 err = setup_frame(ksig, regs, oldset); in handle_signal()
420 static inline void syscall_restart(unsigned long orig_i0, struct pt_regs *regs, in syscall_restart() argument
423 switch(regs->u_regs[UREG_I0]) { in syscall_restart()
427 regs->u_regs[UREG_I0] = EINTR; in syscall_restart()
428 regs->psr |= PSR_C; in syscall_restart()
435 regs->u_regs[UREG_I0] = orig_i0; in syscall_restart()
436 regs->pc -= 4; in syscall_restart()
437 regs->npc -= 4; in syscall_restart()
445 static void do_signal(struct pt_regs *regs, unsigned long orig_i0) in do_signal() argument
469 if (pt_regs_is_syscall(regs) && (regs->psr & PSR_C)) in do_signal()
470 regs->u_regs[UREG_G6] = orig_i0; in do_signal()
479 if (pt_regs_is_syscall(regs) && (regs->psr & PSR_C)) { in do_signal()
481 orig_i0 = regs->u_regs[UREG_G6]; in do_signal()
486 syscall_restart(orig_i0, regs, &ksig.ka.sa); in do_signal()
487 handle_signal(&ksig, regs); in do_signal()
490 switch (regs->u_regs[UREG_I0]) { in do_signal()
495 regs->u_regs[UREG_I0] = orig_i0; in do_signal()
496 regs->pc -= 4; in do_signal()
497 regs->npc -= 4; in do_signal()
498 pt_regs_clear_syscall(regs); in do_signal()
500 regs->u_regs[UREG_G1] = __NR_restart_syscall; in do_signal()
501 regs->pc -= 4; in do_signal()
502 regs->npc -= 4; in do_signal()
503 pt_regs_clear_syscall(regs); in do_signal()
510 void do_notify_resume(struct pt_regs *regs, unsigned long orig_i0, in do_notify_resume() argument
514 do_signal(regs, orig_i0); in do_notify_resume()
517 tracehook_notify_resume(regs); in do_notify_resume()