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()
240 struct pt_regs regs; member
247 void do_rt_sigreturn(struct pt_regs *regs) in do_rt_sigreturn() argument
261 (regs->u_regs [UREG_FP] + STACK_BIAS); in do_rt_sigreturn()
267 err = get_user(tpc, &sf->regs.tpc); in do_rt_sigreturn()
268 err |= __get_user(tnpc, &sf->regs.tnpc); in do_rt_sigreturn()
276 err |= __get_user(regs->y, &sf->regs.y); in do_rt_sigreturn()
277 err |= __get_user(tstate, &sf->regs.tstate); in do_rt_sigreturn()
278 err |= copy_from_user(regs->u_regs, sf->regs.u_regs, sizeof(regs->u_regs)); in do_rt_sigreturn()
281 regs->tstate &= ~(TSTATE_ASI | TSTATE_ICC | TSTATE_XCC); in do_rt_sigreturn()
282 regs->tstate |= (tstate & (TSTATE_ASI | TSTATE_ICC | TSTATE_XCC)); in do_rt_sigreturn()
286 err |= restore_fpu_state(regs, fpu_save); in do_rt_sigreturn()
299 regs->tpc = tpc; in do_rt_sigreturn()
300 regs->tnpc = tnpc; in do_rt_sigreturn()
303 pt_regs_clear_syscall(regs); in do_rt_sigreturn()
319 static inline void __user *get_sigframe(struct ksignal *ksig, struct pt_regs *regs, unsigned long f… in get_sigframe() argument
321 unsigned long sp = regs->u_regs[UREG_FP] + STACK_BIAS; in get_sigframe()
345 setup_rt_frame(struct ksignal *ksig, struct pt_regs *regs) in setup_rt_frame() argument
363 get_sigframe(ksig, regs, sf_size); in setup_rt_frame()
373 err = copy_to_user(&sf->regs, regs, sizeof (*regs)); in setup_rt_frame()
378 err |= save_fpu_state(regs, fpu_save); in setup_rt_frame()
394 err |= __save_altstack(&sf->stack, regs->u_regs[UREG_FP]); in setup_rt_frame()
400 (u64 __user *)(regs->u_regs[UREG_FP] + in setup_rt_frame()
419 regs->u_regs[UREG_FP] = ((unsigned long) sf) - STACK_BIAS; in setup_rt_frame()
420 regs->u_regs[UREG_I0] = ksig->sig; in setup_rt_frame()
421 regs->u_regs[UREG_I1] = (unsigned long) &sf->info; in setup_rt_frame()
427 regs->u_regs[UREG_I2] = (unsigned long) &sf->info; in setup_rt_frame()
430 regs->tpc = (unsigned long) ksig->ka.sa.sa_handler; in setup_rt_frame()
431 regs->tnpc = (regs->tpc + 4); in setup_rt_frame()
433 regs->tpc &= 0xffffffff; in setup_rt_frame()
434 regs->tnpc &= 0xffffffff; in setup_rt_frame()
437 regs->u_regs[UREG_I7] = (unsigned long)ksig->ka.ka_restorer; in setup_rt_frame()
441 static inline void syscall_restart(unsigned long orig_i0, struct pt_regs *regs, in syscall_restart() argument
444 switch (regs->u_regs[UREG_I0]) { in syscall_restart()
448 regs->u_regs[UREG_I0] = EINTR; in syscall_restart()
449 regs->tstate |= (TSTATE_ICARRY|TSTATE_XCARRY); in syscall_restart()
456 regs->u_regs[UREG_I0] = orig_i0; in syscall_restart()
457 regs->tpc -= 4; in syscall_restart()
458 regs->tnpc -= 4; in syscall_restart()
466 static void do_signal(struct pt_regs *regs, unsigned long orig_i0) in do_signal() argument
490 if (pt_regs_is_syscall(regs) && in do_signal()
491 (regs->tstate & (TSTATE_XCARRY | TSTATE_ICARRY))) in do_signal()
492 regs->u_regs[UREG_G6] = orig_i0; in do_signal()
496 do_signal32(regs); in do_signal()
504 if (pt_regs_is_syscall(regs) && in do_signal()
505 (regs->tstate & (TSTATE_XCARRY | TSTATE_ICARRY))) { in do_signal()
507 orig_i0 = regs->u_regs[UREG_G6]; in do_signal()
512 syscall_restart(orig_i0, regs, &ksig.ka.sa); in do_signal()
513 signal_setup_done(setup_rt_frame(&ksig, regs), &ksig, 0); in do_signal()
516 switch (regs->u_regs[UREG_I0]) { in do_signal()
521 regs->u_regs[UREG_I0] = orig_i0; in do_signal()
522 regs->tpc -= 4; in do_signal()
523 regs->tnpc -= 4; in do_signal()
524 pt_regs_clear_syscall(regs); in do_signal()
526 regs->u_regs[UREG_G1] = __NR_restart_syscall; in do_signal()
527 regs->tpc -= 4; in do_signal()
528 regs->tnpc -= 4; in do_signal()
529 pt_regs_clear_syscall(regs); in do_signal()
536 void do_notify_resume(struct pt_regs *regs, unsigned long orig_i0, unsigned long thread_info_flags) in do_notify_resume() argument
540 do_signal(regs, orig_i0); in do_notify_resume()
543 tracehook_notify_resume(regs); in do_notify_resume()