Lines Matching refs:regs
61 struct pt_regs32 regs; member
141 void do_sigreturn32(struct pt_regs *regs) in do_sigreturn32() argument
157 regs->u_regs[UREG_FP] &= 0x00000000ffffffffUL; in do_sigreturn32()
158 sf = (struct signal_frame32 __user *) regs->u_regs[UREG_FP]; in do_sigreturn32()
176 regs->tpc = pc; in do_sigreturn32()
177 regs->tnpc = npc; in do_sigreturn32()
180 err = __get_user(regs->y, &sf->info.si_regs.y); in do_sigreturn32()
184 err |= __get_user(regs->u_regs[i], &sf->info.si_regs.u_regs[i]); in do_sigreturn32()
191 err |= __get_user(((u32 *)regs->u_regs)[2*i], &sf->v8plus.g_upper[i]); in do_sigreturn32()
193 regs->tstate &= ~TSTATE_ASI; in do_sigreturn32()
194 regs->tstate |= ((asi & 0xffUL) << 24UL); in do_sigreturn32()
199 regs->tstate &= ~(TSTATE_ICC|TSTATE_XCC); in do_sigreturn32()
200 regs->tstate |= psr_to_tstate_icc(psr); in do_sigreturn32()
203 pt_regs_clear_syscall(regs); in do_sigreturn32()
207 err |= restore_fpu_state(regs, compat_ptr(fpu_save)); in do_sigreturn32()
227 asmlinkage void do_rt_sigreturn32(struct pt_regs *regs) in do_rt_sigreturn32() argument
241 regs->u_regs[UREG_FP] &= 0x00000000ffffffffUL; in do_rt_sigreturn32()
242 sf = (struct rt_signal_frame32 __user *) regs->u_regs[UREG_FP]; in do_rt_sigreturn32()
249 if (get_user(pc, &sf->regs.pc) || in do_rt_sigreturn32()
250 __get_user(npc, &sf->regs.npc)) in do_rt_sigreturn32()
260 regs->tpc = pc; in do_rt_sigreturn32()
261 regs->tnpc = npc; in do_rt_sigreturn32()
264 err = __get_user(regs->y, &sf->regs.y); in do_rt_sigreturn32()
265 err |= __get_user(psr, &sf->regs.psr); in do_rt_sigreturn32()
268 err |= __get_user(regs->u_regs[i], &sf->regs.u_regs[i]); in do_rt_sigreturn32()
275 err |= __get_user(((u32 *)regs->u_regs)[2*i], &sf->v8plus.g_upper[i]); in do_rt_sigreturn32()
277 regs->tstate &= ~TSTATE_ASI; in do_rt_sigreturn32()
278 regs->tstate |= ((asi & 0xffUL) << 24UL); in do_rt_sigreturn32()
283 regs->tstate &= ~(TSTATE_ICC|TSTATE_XCC); in do_rt_sigreturn32()
284 regs->tstate |= psr_to_tstate_icc(psr); in do_rt_sigreturn32()
287 pt_regs_clear_syscall(regs); in do_rt_sigreturn32()
291 err |= restore_fpu_state(regs, compat_ptr(fpu_save)); in do_rt_sigreturn32()
318 static void __user *get_sigframe(struct ksignal *ksig, struct pt_regs *regs, unsigned long framesiz… in get_sigframe() argument
322 regs->u_regs[UREG_FP] &= 0x00000000ffffffffUL; in get_sigframe()
323 sp = regs->u_regs[UREG_FP]; in get_sigframe()
404 static int setup_frame32(struct ksignal *ksig, struct pt_regs *regs, in setup_frame32() argument
427 get_sigframe(ksig, regs, sigframe_size); in setup_frame32()
438 regs->tpc &= 0xffffffff; in setup_frame32()
439 regs->tnpc &= 0xffffffff; in setup_frame32()
441 err = put_user(regs->tpc, &sf->info.si_regs.pc); in setup_frame32()
442 err |= __put_user(regs->tnpc, &sf->info.si_regs.npc); in setup_frame32()
443 err |= __put_user(regs->y, &sf->info.si_regs.y); in setup_frame32()
444 psr = tstate_to_psr(regs->tstate); in setup_frame32()
449 err |= __put_user(regs->u_regs[i], &sf->info.si_regs.u_regs[i]); in setup_frame32()
453 err |= __put_user(((u32 *)regs->u_regs)[2*i], in setup_frame32()
455 err |= __put_user((regs->tstate & TSTATE_ASI) >> 24UL, in setup_frame32()
461 err |= save_fpu_state(regs, fp); in setup_frame32()
488 (u32 __user *)(regs->u_regs[UREG_FP]), in setup_frame32()
505 regs->u_regs[UREG_FP] = (unsigned long) sf; in setup_frame32()
506 regs->u_regs[UREG_I0] = ksig->sig; in setup_frame32()
507 regs->u_regs[UREG_I1] = (unsigned long) &sf->info; in setup_frame32()
508 regs->u_regs[UREG_I2] = (unsigned long) &sf->info; in setup_frame32()
511 regs->tpc = (unsigned long) ksig->ka.sa.sa_handler; in setup_frame32()
512 regs->tnpc = (regs->tpc + 4); in setup_frame32()
514 regs->tpc &= 0xffffffff; in setup_frame32()
515 regs->tnpc &= 0xffffffff; in setup_frame32()
520 regs->u_regs[UREG_I7] = (unsigned long)ksig->ka.ka_restorer; in setup_frame32()
524 regs->u_regs[UREG_I7] = (unsigned long) (&(sf->insns[0]) - 2); in setup_frame32()
535 static int setup_rt_frame32(struct ksignal *ksig, struct pt_regs *regs, in setup_rt_frame32() argument
558 get_sigframe(ksig, regs, sigframe_size); in setup_rt_frame32()
569 regs->tpc &= 0xffffffff; in setup_rt_frame32()
570 regs->tnpc &= 0xffffffff; in setup_rt_frame32()
572 err = put_user(regs->tpc, &sf->regs.pc); in setup_rt_frame32()
573 err |= __put_user(regs->tnpc, &sf->regs.npc); in setup_rt_frame32()
574 err |= __put_user(regs->y, &sf->regs.y); in setup_rt_frame32()
575 psr = tstate_to_psr(regs->tstate); in setup_rt_frame32()
578 err |= __put_user(psr, &sf->regs.psr); in setup_rt_frame32()
580 err |= __put_user(regs->u_regs[i], &sf->regs.u_regs[i]); in setup_rt_frame32()
584 err |= __put_user(((u32 *)regs->u_regs)[2*i], in setup_rt_frame32()
586 err |= __put_user((regs->tstate & TSTATE_ASI) >> 24UL, in setup_rt_frame32()
592 err |= save_fpu_state(regs, fp); in setup_rt_frame32()
611 err |= __compat_save_altstack(&sf->stack, regs->u_regs[UREG_FP]); in setup_rt_frame32()
619 (u32 __user *)(regs->u_regs[UREG_FP]), in setup_rt_frame32()
636 regs->u_regs[UREG_FP] = (unsigned long) sf; in setup_rt_frame32()
637 regs->u_regs[UREG_I0] = ksig->sig; in setup_rt_frame32()
638 regs->u_regs[UREG_I1] = (unsigned long) &sf->info; in setup_rt_frame32()
639 regs->u_regs[UREG_I2] = (unsigned long) &sf->regs; in setup_rt_frame32()
642 regs->tpc = (unsigned long) ksig->ka.sa.sa_handler; in setup_rt_frame32()
643 regs->tnpc = (regs->tpc + 4); in setup_rt_frame32()
645 regs->tpc &= 0xffffffff; in setup_rt_frame32()
646 regs->tnpc &= 0xffffffff; in setup_rt_frame32()
651 regs->u_regs[UREG_I7] = (unsigned long)ksig->ka.ka_restorer; in setup_rt_frame32()
655 regs->u_regs[UREG_I7] = (unsigned long) (&(sf->insns[0]) - 2); in setup_rt_frame32()
671 struct pt_regs *regs) in handle_signal32() argument
677 err = setup_rt_frame32(ksig, regs, oldset); in handle_signal32()
679 err = setup_frame32(ksig, regs, oldset); in handle_signal32()
684 static inline void syscall_restart32(unsigned long orig_i0, struct pt_regs *regs, in syscall_restart32() argument
687 switch (regs->u_regs[UREG_I0]) { in syscall_restart32()
691 regs->u_regs[UREG_I0] = EINTR; in syscall_restart32()
692 regs->tstate |= TSTATE_ICARRY; in syscall_restart32()
699 regs->u_regs[UREG_I0] = orig_i0; in syscall_restart32()
700 regs->tpc -= 4; in syscall_restart32()
701 regs->tnpc -= 4; in syscall_restart32()
709 void do_signal32(struct pt_regs * regs) in do_signal32() argument
716 if (pt_regs_is_syscall(regs) && in do_signal32()
717 (regs->tstate & (TSTATE_XCARRY | TSTATE_ICARRY))) { in do_signal32()
719 orig_i0 = regs->u_regs[UREG_G6]; in do_signal32()
724 syscall_restart32(orig_i0, regs, &ksig.ka.sa); in do_signal32()
725 handle_signal32(&ksig, regs); in do_signal32()
728 switch (regs->u_regs[UREG_I0]) { in do_signal32()
733 regs->u_regs[UREG_I0] = orig_i0; in do_signal32()
734 regs->tpc -= 4; in do_signal32()
735 regs->tnpc -= 4; in do_signal32()
736 pt_regs_clear_syscall(regs); in do_signal32()
738 regs->u_regs[UREG_G1] = __NR_restart_syscall; in do_signal32()
739 regs->tpc -= 4; in do_signal32()
740 regs->tnpc -= 4; in do_signal32()
741 pt_regs_clear_syscall(regs); in do_signal32()