Lines Matching refs:regs

61 	struct pt_regs32	regs;  member
153 void do_sigreturn32(struct pt_regs *regs) in do_sigreturn32() argument
169 regs->u_regs[UREG_FP] &= 0x00000000ffffffffUL; in do_sigreturn32()
170 sf = (struct signal_frame32 __user *) regs->u_regs[UREG_FP]; in do_sigreturn32()
193 regs->tpc = pc; in do_sigreturn32()
194 regs->tnpc = npc; in do_sigreturn32()
197 err = __get_user(regs->y, &sf->info.si_regs.y); in do_sigreturn32()
201 err |= __get_user(regs->u_regs[i], &sf->info.si_regs.u_regs[i]); in do_sigreturn32()
208 err |= __get_user(((u32 *)regs->u_regs)[2*i], &sf->v8plus.g_upper[i]); in do_sigreturn32()
210 regs->tstate &= ~TSTATE_ASI; in do_sigreturn32()
211 regs->tstate |= ((asi & 0xffUL) << 24UL); in do_sigreturn32()
216 regs->tstate &= ~(TSTATE_ICC|TSTATE_XCC); in do_sigreturn32()
217 regs->tstate |= psr_to_tstate_icc(psr); in do_sigreturn32()
220 pt_regs_clear_syscall(regs); in do_sigreturn32()
224 err |= restore_fpu_state(regs, compat_ptr(fpu_save)); in do_sigreturn32()
244 asmlinkage void do_rt_sigreturn32(struct pt_regs *regs) in do_rt_sigreturn32() argument
258 regs->u_regs[UREG_FP] &= 0x00000000ffffffffUL; in do_rt_sigreturn32()
259 sf = (struct rt_signal_frame32 __user *) regs->u_regs[UREG_FP]; in do_rt_sigreturn32()
265 if (get_user(ufp, &sf->regs.u_regs[UREG_FP])) in do_rt_sigreturn32()
271 if (__get_user(pc, &sf->regs.pc) || in do_rt_sigreturn32()
272 __get_user(npc, &sf->regs.npc)) in do_rt_sigreturn32()
282 regs->tpc = pc; in do_rt_sigreturn32()
283 regs->tnpc = npc; in do_rt_sigreturn32()
286 err = __get_user(regs->y, &sf->regs.y); in do_rt_sigreturn32()
287 err |= __get_user(psr, &sf->regs.psr); in do_rt_sigreturn32()
290 err |= __get_user(regs->u_regs[i], &sf->regs.u_regs[i]); in do_rt_sigreturn32()
297 err |= __get_user(((u32 *)regs->u_regs)[2*i], &sf->v8plus.g_upper[i]); in do_rt_sigreturn32()
299 regs->tstate &= ~TSTATE_ASI; in do_rt_sigreturn32()
300 regs->tstate |= ((asi & 0xffUL) << 24UL); in do_rt_sigreturn32()
305 regs->tstate &= ~(TSTATE_ICC|TSTATE_XCC); in do_rt_sigreturn32()
306 regs->tstate |= psr_to_tstate_icc(psr); in do_rt_sigreturn32()
309 pt_regs_clear_syscall(regs); in do_rt_sigreturn32()
313 err |= restore_fpu_state(regs, compat_ptr(fpu_save)); in do_rt_sigreturn32()
332 static void __user *get_sigframe(struct ksignal *ksig, struct pt_regs *regs, unsigned long framesiz… in get_sigframe() argument
336 regs->u_regs[UREG_FP] &= 0x00000000ffffffffUL; in get_sigframe()
337 sp = regs->u_regs[UREG_FP]; in get_sigframe()
418 static int setup_frame32(struct ksignal *ksig, struct pt_regs *regs, in setup_frame32() argument
441 get_sigframe(ksig, regs, sigframe_size); in setup_frame32()
452 regs->tpc &= 0xffffffff; in setup_frame32()
453 regs->tnpc &= 0xffffffff; in setup_frame32()
455 err = put_user(regs->tpc, &sf->info.si_regs.pc); in setup_frame32()
456 err |= __put_user(regs->tnpc, &sf->info.si_regs.npc); in setup_frame32()
457 err |= __put_user(regs->y, &sf->info.si_regs.y); in setup_frame32()
458 psr = tstate_to_psr(regs->tstate); in setup_frame32()
463 err |= __put_user(regs->u_regs[i], &sf->info.si_regs.u_regs[i]); in setup_frame32()
467 err |= __put_user(((u32 *)regs->u_regs)[2*i], in setup_frame32()
469 err |= __put_user((regs->tstate & TSTATE_ASI) >> 24UL, in setup_frame32()
475 err |= save_fpu_state(regs, fp); in setup_frame32()
502 (u32 __user *)(regs->u_regs[UREG_FP]), in setup_frame32()
519 regs->u_regs[UREG_FP] = (unsigned long) sf; in setup_frame32()
520 regs->u_regs[UREG_I0] = ksig->sig; in setup_frame32()
521 regs->u_regs[UREG_I1] = (unsigned long) &sf->info; in setup_frame32()
522 regs->u_regs[UREG_I2] = (unsigned long) &sf->info; in setup_frame32()
525 regs->tpc = (unsigned long) ksig->ka.sa.sa_handler; in setup_frame32()
526 regs->tnpc = (regs->tpc + 4); in setup_frame32()
528 regs->tpc &= 0xffffffff; in setup_frame32()
529 regs->tnpc &= 0xffffffff; in setup_frame32()
534 regs->u_regs[UREG_I7] = (unsigned long)ksig->ka.ka_restorer; in setup_frame32()
538 regs->u_regs[UREG_I7] = (unsigned long) (&(sf->insns[0]) - 2); in setup_frame32()
549 static int setup_rt_frame32(struct ksignal *ksig, struct pt_regs *regs, in setup_rt_frame32() argument
572 get_sigframe(ksig, regs, sigframe_size); in setup_rt_frame32()
583 regs->tpc &= 0xffffffff; in setup_rt_frame32()
584 regs->tnpc &= 0xffffffff; in setup_rt_frame32()
586 err = put_user(regs->tpc, &sf->regs.pc); in setup_rt_frame32()
587 err |= __put_user(regs->tnpc, &sf->regs.npc); in setup_rt_frame32()
588 err |= __put_user(regs->y, &sf->regs.y); in setup_rt_frame32()
589 psr = tstate_to_psr(regs->tstate); in setup_rt_frame32()
592 err |= __put_user(psr, &sf->regs.psr); in setup_rt_frame32()
594 err |= __put_user(regs->u_regs[i], &sf->regs.u_regs[i]); in setup_rt_frame32()
598 err |= __put_user(((u32 *)regs->u_regs)[2*i], in setup_rt_frame32()
600 err |= __put_user((regs->tstate & TSTATE_ASI) >> 24UL, in setup_rt_frame32()
606 err |= save_fpu_state(regs, fp); in setup_rt_frame32()
625 err |= __compat_save_altstack(&sf->stack, regs->u_regs[UREG_FP]); in setup_rt_frame32()
633 (u32 __user *)(regs->u_regs[UREG_FP]), in setup_rt_frame32()
650 regs->u_regs[UREG_FP] = (unsigned long) sf; in setup_rt_frame32()
651 regs->u_regs[UREG_I0] = ksig->sig; in setup_rt_frame32()
652 regs->u_regs[UREG_I1] = (unsigned long) &sf->info; in setup_rt_frame32()
653 regs->u_regs[UREG_I2] = (unsigned long) &sf->regs; in setup_rt_frame32()
656 regs->tpc = (unsigned long) ksig->ka.sa.sa_handler; in setup_rt_frame32()
657 regs->tnpc = (regs->tpc + 4); in setup_rt_frame32()
659 regs->tpc &= 0xffffffff; in setup_rt_frame32()
660 regs->tnpc &= 0xffffffff; in setup_rt_frame32()
665 regs->u_regs[UREG_I7] = (unsigned long)ksig->ka.ka_restorer; in setup_rt_frame32()
669 regs->u_regs[UREG_I7] = (unsigned long) (&(sf->insns[0]) - 2); in setup_rt_frame32()
685 struct pt_regs *regs) in handle_signal32() argument
691 err = setup_rt_frame32(ksig, regs, oldset); in handle_signal32()
693 err = setup_frame32(ksig, regs, oldset); in handle_signal32()
698 static inline void syscall_restart32(unsigned long orig_i0, struct pt_regs *regs, in syscall_restart32() argument
701 switch (regs->u_regs[UREG_I0]) { in syscall_restart32()
705 regs->u_regs[UREG_I0] = EINTR; in syscall_restart32()
706 regs->tstate |= TSTATE_ICARRY; in syscall_restart32()
713 regs->u_regs[UREG_I0] = orig_i0; in syscall_restart32()
714 regs->tpc -= 4; in syscall_restart32()
715 regs->tnpc -= 4; in syscall_restart32()
723 void do_signal32(struct pt_regs * regs) in do_signal32() argument
730 if (pt_regs_is_syscall(regs) && in do_signal32()
731 (regs->tstate & (TSTATE_XCARRY | TSTATE_ICARRY))) { in do_signal32()
733 orig_i0 = regs->u_regs[UREG_G6]; in do_signal32()
738 syscall_restart32(orig_i0, regs, &ksig.ka.sa); in do_signal32()
739 handle_signal32(&ksig, regs); in do_signal32()
742 switch (regs->u_regs[UREG_I0]) { in do_signal32()
747 regs->u_regs[UREG_I0] = orig_i0; in do_signal32()
748 regs->tpc -= 4; in do_signal32()
749 regs->tnpc -= 4; in do_signal32()
750 pt_regs_clear_syscall(regs); in do_signal32()
752 regs->u_regs[UREG_G1] = __NR_restart_syscall; in do_signal32()
753 regs->tpc -= 4; in do_signal32()
754 regs->tnpc -= 4; in do_signal32()
755 pt_regs_clear_syscall(regs); in do_signal32()