Lines Matching refs:regs
198 static int save_sigregs32(struct pt_regs *regs, _sigregs32 __user *sregs) in save_sigregs32() argument
203 user_sregs.regs.psw.mask = (__u32)(regs->psw.mask >> 32); in save_sigregs32()
204 user_sregs.regs.psw.mask &= PSW32_MASK_USER | PSW32_MASK_RI; in save_sigregs32()
205 user_sregs.regs.psw.mask |= PSW32_USER_BITS; in save_sigregs32()
206 user_sregs.regs.psw.addr = (__u32) regs->psw.addr | in save_sigregs32()
207 (__u32)(regs->psw.mask & PSW_MASK_BA); in save_sigregs32()
209 user_sregs.regs.gprs[i] = (__u32) regs->gprs[i]; in save_sigregs32()
210 memcpy(&user_sregs.regs.acrs, current->thread.acrs, in save_sigregs32()
211 sizeof(user_sregs.regs.acrs)); in save_sigregs32()
219 static int restore_sigregs32(struct pt_regs *regs,_sigregs32 __user *sregs) in restore_sigregs32() argument
227 if (__copy_from_user(&user_sregs, &sregs->regs, sizeof(user_sregs))) in restore_sigregs32()
230 if (!is_ri_task(current) && (user_sregs.regs.psw.mask & PSW32_MASK_RI)) in restore_sigregs32()
238 regs->psw.mask = (regs->psw.mask & ~(PSW_MASK_USER | PSW_MASK_RI)) | in restore_sigregs32()
239 (__u64)(user_sregs.regs.psw.mask & PSW32_MASK_USER) << 32 | in restore_sigregs32()
240 (__u64)(user_sregs.regs.psw.mask & PSW32_MASK_RI) << 32 | in restore_sigregs32()
241 (__u64)(user_sregs.regs.psw.addr & PSW32_ADDR_AMODE); in restore_sigregs32()
243 if ((regs->psw.mask & PSW_MASK_ASC) == PSW_ASC_HOME) in restore_sigregs32()
244 regs->psw.mask = PSW_ASC_PRIMARY | in restore_sigregs32()
245 (regs->psw.mask & ~PSW_MASK_ASC); in restore_sigregs32()
246 regs->psw.addr = (__u64)(user_sregs.regs.psw.addr & PSW32_ADDR_INSN); in restore_sigregs32()
248 regs->gprs[i] = (__u64) user_sregs.regs.gprs[i]; in restore_sigregs32()
249 memcpy(¤t->thread.acrs, &user_sregs.regs.acrs, in restore_sigregs32()
255 clear_pt_regs_flag(regs, PIF_SYSCALL); /* No longer in a system call */ in restore_sigregs32()
259 static int save_sigregs_ext32(struct pt_regs *regs, in save_sigregs_ext32() argument
268 gprs_high[i] = regs->gprs[i] >> 32; in save_sigregs_ext32()
287 static int restore_sigregs_ext32(struct pt_regs *regs, in restore_sigregs_ext32() argument
299 *(__u32 *)®s->gprs[i] = gprs_high[i]; in restore_sigregs_ext32()
317 struct pt_regs *regs = task_pt_regs(current); in COMPAT_SYSCALL_DEFINE0() local
318 sigframe32 __user *frame = (sigframe32 __user *)regs->gprs[15]; in COMPAT_SYSCALL_DEFINE0()
326 if (restore_sigregs32(regs, &frame->sregs)) in COMPAT_SYSCALL_DEFINE0()
328 if (restore_sigregs_ext32(regs, &frame->sregs_ext)) in COMPAT_SYSCALL_DEFINE0()
331 return regs->gprs[2]; in COMPAT_SYSCALL_DEFINE0()
339 struct pt_regs *regs = task_pt_regs(current); in COMPAT_SYSCALL_DEFINE0() local
340 rt_sigframe32 __user *frame = (rt_sigframe32 __user *)regs->gprs[15]; in COMPAT_SYSCALL_DEFINE0()
350 if (restore_sigregs32(regs, &frame->uc.uc_mcontext)) in COMPAT_SYSCALL_DEFINE0()
352 if (restore_sigregs_ext32(regs, &frame->uc.uc_mcontext_ext)) in COMPAT_SYSCALL_DEFINE0()
355 return regs->gprs[2]; in COMPAT_SYSCALL_DEFINE0()
370 get_sigframe(struct k_sigaction *ka, struct pt_regs * regs, size_t frame_size) in get_sigframe() argument
375 sp = (unsigned long) A(regs->gprs[15]); in get_sigframe()
391 struct pt_regs *regs) in setup_frame32() argument
408 frame = get_sigframe(&ksig->ka, regs, frame_size); in setup_frame32()
413 if (__put_user(regs->gprs[15], (unsigned int __user *) frame)) in setup_frame32()
426 if (save_sigregs32(regs, &frame->sregs)) in setup_frame32()
430 if (__put_user(regs->gprs[2], (int __force __user *) &frame->signo)) in setup_frame32()
434 if (save_sigregs_ext32(regs, &frame->sregs_ext)) in setup_frame32()
451 regs->gprs[14] = restorer; in setup_frame32()
452 regs->gprs[15] = (__force __u64) frame; in setup_frame32()
454 regs->psw.mask = PSW_MASK_BA | in setup_frame32()
456 (regs->psw.mask & ~PSW_MASK_ASC); in setup_frame32()
457 regs->psw.addr = (__force __u64) ksig->ka.sa.sa_handler; in setup_frame32()
459 regs->gprs[2] = sig; in setup_frame32()
460 regs->gprs[3] = (__force __u64) &frame->sc; in setup_frame32()
467 regs->gprs[4] = regs->int_code & 127; in setup_frame32()
468 regs->gprs[5] = regs->int_parm_long; in setup_frame32()
469 regs->gprs[6] = task_thread_info(current)->last_break; in setup_frame32()
476 struct pt_regs *regs) in setup_rt_frame32() argument
498 frame = get_sigframe(&ksig->ka, regs, frame_size); in setup_rt_frame32()
503 if (__put_user(regs->gprs[15], (unsigned int __force __user *) frame)) in setup_rt_frame32()
529 __compat_save_altstack(&frame->uc.uc_stack, regs->gprs[15]) || in setup_rt_frame32()
530 save_sigregs32(regs, &frame->uc.uc_mcontext) || in setup_rt_frame32()
532 save_sigregs_ext32(regs, &frame->uc.uc_mcontext_ext)) in setup_rt_frame32()
536 regs->gprs[14] = restorer; in setup_rt_frame32()
537 regs->gprs[15] = (__force __u64) frame; in setup_rt_frame32()
539 regs->psw.mask = PSW_MASK_BA | in setup_rt_frame32()
541 (regs->psw.mask & ~PSW_MASK_ASC); in setup_rt_frame32()
542 regs->psw.addr = (__u64 __force) ksig->ka.sa.sa_handler; in setup_rt_frame32()
544 regs->gprs[2] = ksig->sig; in setup_rt_frame32()
545 regs->gprs[3] = (__force __u64) &frame->info; in setup_rt_frame32()
546 regs->gprs[4] = (__force __u64) &frame->uc; in setup_rt_frame32()
547 regs->gprs[5] = task_thread_info(current)->last_break; in setup_rt_frame32()
556 struct pt_regs *regs) in handle_signal32() argument
562 ret = setup_rt_frame32(ksig, oldset, regs); in handle_signal32()
564 ret = setup_frame32(ksig, oldset, regs); in handle_signal32()