Lines Matching refs:regs
44 asmlinkage void sparc64_set_context(struct pt_regs *regs) in sparc64_set_context() argument
47 regs->u_regs[UREG_I0]; in sparc64_set_context()
65 if (regs->u_regs[UREG_I1]) { in sparc64_set_context()
81 regs->tpc = pc; in sparc64_set_context()
82 regs->tnpc = npc; in sparc64_set_context()
83 err |= __get_user(regs->y, &((*grp)[MC_Y])); in sparc64_set_context()
85 regs->tstate &= ~(TSTATE_ASI | TSTATE_ICC | TSTATE_XCC); in sparc64_set_context()
86 regs->tstate |= (tstate & (TSTATE_ASI | TSTATE_ICC | TSTATE_XCC)); in sparc64_set_context()
87 err |= __get_user(regs->u_regs[UREG_G1], (&(*grp)[MC_G1])); in sparc64_set_context()
88 err |= __get_user(regs->u_regs[UREG_G2], (&(*grp)[MC_G2])); in sparc64_set_context()
89 err |= __get_user(regs->u_regs[UREG_G3], (&(*grp)[MC_G3])); in sparc64_set_context()
90 err |= __get_user(regs->u_regs[UREG_G4], (&(*grp)[MC_G4])); in sparc64_set_context()
91 err |= __get_user(regs->u_regs[UREG_G5], (&(*grp)[MC_G5])); in sparc64_set_context()
92 err |= __get_user(regs->u_regs[UREG_G6], (&(*grp)[MC_G6])); in sparc64_set_context()
96 err |= __get_user(regs->u_regs[UREG_I0], (&(*grp)[MC_O0])); in sparc64_set_context()
97 err |= __get_user(regs->u_regs[UREG_I1], (&(*grp)[MC_O1])); in sparc64_set_context()
98 err |= __get_user(regs->u_regs[UREG_I2], (&(*grp)[MC_O2])); in sparc64_set_context()
99 err |= __get_user(regs->u_regs[UREG_I3], (&(*grp)[MC_O3])); in sparc64_set_context()
100 err |= __get_user(regs->u_regs[UREG_I4], (&(*grp)[MC_O4])); in sparc64_set_context()
101 err |= __get_user(regs->u_regs[UREG_I5], (&(*grp)[MC_O5])); in sparc64_set_context()
102 err |= __get_user(regs->u_regs[UREG_I6], (&(*grp)[MC_O6])); in sparc64_set_context()
103 err |= __get_user(regs->u_regs[UREG_I7], (&(*grp)[MC_O7])); in sparc64_set_context()
108 (&(((struct reg_window __user *)(STACK_BIAS+regs->u_regs[UREG_I6]))->ins[6]))); in sparc64_set_context()
110 (&(((struct reg_window __user *)(STACK_BIAS+regs->u_regs[UREG_I6]))->ins[7]))); in sparc64_set_context()
131 regs->tstate &= ~TSTATE_PEF; in sparc64_set_context()
143 asmlinkage void sparc64_get_context(struct pt_regs *regs) in sparc64_get_context() argument
146 regs->u_regs[UREG_I0]; in sparc64_get_context()
169 regs->tpc = (regs->tnpc & 0xffffffff); in sparc64_get_context()
170 regs->tnpc = (regs->tnpc + 4) & 0xffffffff; in sparc64_get_context()
172 regs->tpc = regs->tnpc; in sparc64_get_context()
173 regs->tnpc += 4; in sparc64_get_context()
183 err |= __put_user(regs->tstate, &((*grp)[MC_TSTATE])); in sparc64_get_context()
184 err |= __put_user(regs->tpc, &((*grp)[MC_PC])); in sparc64_get_context()
185 err |= __put_user(regs->tnpc, &((*grp)[MC_NPC])); in sparc64_get_context()
186 err |= __put_user(regs->y, &((*grp)[MC_Y])); in sparc64_get_context()
187 err |= __put_user(regs->u_regs[UREG_G1], &((*grp)[MC_G1])); in sparc64_get_context()
188 err |= __put_user(regs->u_regs[UREG_G2], &((*grp)[MC_G2])); in sparc64_get_context()
189 err |= __put_user(regs->u_regs[UREG_G3], &((*grp)[MC_G3])); in sparc64_get_context()
190 err |= __put_user(regs->u_regs[UREG_G4], &((*grp)[MC_G4])); in sparc64_get_context()
191 err |= __put_user(regs->u_regs[UREG_G5], &((*grp)[MC_G5])); in sparc64_get_context()
192 err |= __put_user(regs->u_regs[UREG_G6], &((*grp)[MC_G6])); in sparc64_get_context()
193 err |= __put_user(regs->u_regs[UREG_G7], &((*grp)[MC_G7])); in sparc64_get_context()
194 err |= __put_user(regs->u_regs[UREG_I0], &((*grp)[MC_O0])); in sparc64_get_context()
195 err |= __put_user(regs->u_regs[UREG_I1], &((*grp)[MC_O1])); in sparc64_get_context()
196 err |= __put_user(regs->u_regs[UREG_I2], &((*grp)[MC_O2])); in sparc64_get_context()
197 err |= __put_user(regs->u_regs[UREG_I3], &((*grp)[MC_O3])); in sparc64_get_context()
198 err |= __put_user(regs->u_regs[UREG_I4], &((*grp)[MC_O4])); in sparc64_get_context()
199 err |= __put_user(regs->u_regs[UREG_I5], &((*grp)[MC_O5])); in sparc64_get_context()
200 err |= __put_user(regs->u_regs[UREG_I6], &((*grp)[MC_O6])); in sparc64_get_context()
201 err |= __put_user(regs->u_regs[UREG_I7], &((*grp)[MC_O7])); in sparc64_get_context()
204 (&(((struct reg_window __user *)(STACK_BIAS+regs->u_regs[UREG_I6]))->ins[6]))); in sparc64_get_context()
206 (&(((struct reg_window __user *)(STACK_BIAS+regs->u_regs[UREG_I6]))->ins[7]))); in sparc64_get_context()
251 struct pt_regs regs; member
258 void do_rt_sigreturn(struct pt_regs *regs) in do_rt_sigreturn() argument
272 (regs->u_regs [UREG_FP] + STACK_BIAS); in do_rt_sigreturn()
278 if (get_user(ufp, &sf->regs.u_regs[UREG_FP])) in do_rt_sigreturn()
284 err = __get_user(tpc, &sf->regs.tpc); in do_rt_sigreturn()
285 err |= __get_user(tnpc, &sf->regs.tnpc); in do_rt_sigreturn()
293 err |= __get_user(regs->y, &sf->regs.y); in do_rt_sigreturn()
294 err |= __get_user(tstate, &sf->regs.tstate); in do_rt_sigreturn()
295 err |= copy_from_user(regs->u_regs, sf->regs.u_regs, sizeof(regs->u_regs)); in do_rt_sigreturn()
298 regs->tstate &= ~(TSTATE_ASI | TSTATE_ICC | TSTATE_XCC); in do_rt_sigreturn()
299 regs->tstate |= (tstate & (TSTATE_ASI | TSTATE_ICC | TSTATE_XCC)); in do_rt_sigreturn()
303 err |= restore_fpu_state(regs, fpu_save); in do_rt_sigreturn()
316 regs->tpc = tpc; in do_rt_sigreturn()
317 regs->tnpc = tnpc; in do_rt_sigreturn()
320 pt_regs_clear_syscall(regs); in do_rt_sigreturn()
328 static inline void __user *get_sigframe(struct ksignal *ksig, struct pt_regs *regs, unsigned long f… in get_sigframe() argument
330 unsigned long sp = regs->u_regs[UREG_FP] + STACK_BIAS; in get_sigframe()
354 setup_rt_frame(struct ksignal *ksig, struct pt_regs *regs) in setup_rt_frame() argument
372 get_sigframe(ksig, regs, sf_size); in setup_rt_frame()
382 err = copy_to_user(&sf->regs, regs, sizeof (*regs)); in setup_rt_frame()
387 err |= save_fpu_state(regs, fpu_save); in setup_rt_frame()
403 err |= __save_altstack(&sf->stack, regs->u_regs[UREG_FP]); in setup_rt_frame()
409 (u64 __user *)(regs->u_regs[UREG_FP] + in setup_rt_frame()
428 regs->u_regs[UREG_FP] = ((unsigned long) sf) - STACK_BIAS; in setup_rt_frame()
429 regs->u_regs[UREG_I0] = ksig->sig; in setup_rt_frame()
430 regs->u_regs[UREG_I1] = (unsigned long) &sf->info; in setup_rt_frame()
436 regs->u_regs[UREG_I2] = (unsigned long) &sf->info; in setup_rt_frame()
439 regs->tpc = (unsigned long) ksig->ka.sa.sa_handler; in setup_rt_frame()
440 regs->tnpc = (regs->tpc + 4); in setup_rt_frame()
442 regs->tpc &= 0xffffffff; in setup_rt_frame()
443 regs->tnpc &= 0xffffffff; in setup_rt_frame()
446 regs->u_regs[UREG_I7] = (unsigned long)ksig->ka.ka_restorer; in setup_rt_frame()
450 static inline void syscall_restart(unsigned long orig_i0, struct pt_regs *regs, in syscall_restart() argument
453 switch (regs->u_regs[UREG_I0]) { in syscall_restart()
457 regs->u_regs[UREG_I0] = EINTR; in syscall_restart()
458 regs->tstate |= (TSTATE_ICARRY|TSTATE_XCARRY); in syscall_restart()
465 regs->u_regs[UREG_I0] = orig_i0; in syscall_restart()
466 regs->tpc -= 4; in syscall_restart()
467 regs->tnpc -= 4; in syscall_restart()
475 static void do_signal(struct pt_regs *regs, unsigned long orig_i0) in do_signal() argument
499 if (pt_regs_is_syscall(regs) && in do_signal()
500 (regs->tstate & (TSTATE_XCARRY | TSTATE_ICARRY))) in do_signal()
501 regs->u_regs[UREG_G6] = orig_i0; in do_signal()
505 do_signal32(regs); in do_signal()
513 if (pt_regs_is_syscall(regs) && in do_signal()
514 (regs->tstate & (TSTATE_XCARRY | TSTATE_ICARRY))) { in do_signal()
516 orig_i0 = regs->u_regs[UREG_G6]; in do_signal()
521 syscall_restart(orig_i0, regs, &ksig.ka.sa); in do_signal()
522 signal_setup_done(setup_rt_frame(&ksig, regs), &ksig, 0); in do_signal()
525 switch (regs->u_regs[UREG_I0]) { in do_signal()
530 regs->u_regs[UREG_I0] = orig_i0; in do_signal()
531 regs->tpc -= 4; in do_signal()
532 regs->tnpc -= 4; in do_signal()
533 pt_regs_clear_syscall(regs); in do_signal()
535 regs->u_regs[UREG_G1] = __NR_restart_syscall; in do_signal()
536 regs->tpc -= 4; in do_signal()
537 regs->tnpc -= 4; in do_signal()
538 pt_regs_clear_syscall(regs); in do_signal()
545 void do_notify_resume(struct pt_regs *regs, unsigned long orig_i0, unsigned long thread_info_flags) in do_notify_resume() argument
549 do_signal(regs, orig_i0); in do_notify_resume()
552 tracehook_notify_resume(regs); in do_notify_resume()