Lines Matching full:frame

42  * stack frame and previous contents of the stack.  This allows
43 * frame unwinding in a function epilogue but only if a frame
158 struct sigframe __user *frame = (struct sigframe __user *)regs->regs[15]; in sys_sigreturn() local
165 if (!access_ok(frame, sizeof(*frame))) in sys_sigreturn()
168 if (__get_user(set.sig[0], &frame->sc.oldmask) in sys_sigreturn()
170 && __copy_from_user(&set.sig[1], &frame->extramask, in sys_sigreturn()
171 sizeof(frame->extramask)))) in sys_sigreturn()
176 if (restore_sigcontext(regs, &frame->sc, &r0)) in sys_sigreturn()
188 struct rt_sigframe __user *frame = (struct rt_sigframe __user *)regs->regs[15]; in sys_rt_sigreturn() local
195 if (!access_ok(frame, sizeof(*frame))) in sys_rt_sigreturn()
198 if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set))) in sys_rt_sigreturn()
203 if (restore_sigcontext(regs, &frame->uc.uc_mcontext, &r0)) in sys_rt_sigreturn()
206 if (restore_altstack(&frame->uc.uc_stack)) in sys_rt_sigreturn()
217 * Set up a signal frame.
272 struct sigframe __user *frame; in setup_frame() local
275 frame = get_sigframe(&ksig->ka, regs->regs[15], sizeof(*frame)); in setup_frame()
277 if (!access_ok(frame, sizeof(*frame))) in setup_frame()
280 err |= setup_sigcontext(&frame->sc, regs, set->sig[0]); in setup_frame()
283 err |= __copy_to_user(frame->extramask, &set->sig[1], in setup_frame()
284 sizeof(frame->extramask)); in setup_frame()
296 err |= __put_user(MOVW(7), &frame->retcode[0]); in setup_frame()
297 err |= __put_user(TRAP_NOARG, &frame->retcode[1]); in setup_frame()
298 err |= __put_user(OR_R0_R0, &frame->retcode[2]); in setup_frame()
299 err |= __put_user(OR_R0_R0, &frame->retcode[3]); in setup_frame()
300 err |= __put_user(OR_R0_R0, &frame->retcode[4]); in setup_frame()
301 err |= __put_user(OR_R0_R0, &frame->retcode[5]); in setup_frame()
302 err |= __put_user(OR_R0_R0, &frame->retcode[6]); in setup_frame()
303 err |= __put_user((__NR_sigreturn), &frame->retcode[7]); in setup_frame()
304 regs->pr = (unsigned long) frame->retcode; in setup_frame()
305 flush_icache_range(regs->pr, regs->pr + sizeof(frame->retcode)); in setup_frame()
312 regs->regs[15] = (unsigned long) frame; in setup_frame()
315 regs->regs[6] = (unsigned long) &frame->sc; in setup_frame()
330 current->comm, task_pid_nr(current), frame, regs->pc, regs->pr); in setup_frame()
338 struct rt_sigframe __user *frame; in setup_rt_frame() local
341 frame = get_sigframe(&ksig->ka, regs->regs[15], sizeof(*frame)); in setup_rt_frame()
343 if (!access_ok(frame, sizeof(*frame))) in setup_rt_frame()
346 err |= copy_siginfo_to_user(&frame->info, &ksig->info); in setup_rt_frame()
349 err |= __put_user(0, &frame->uc.uc_flags); in setup_rt_frame()
350 err |= __put_user(NULL, &frame->uc.uc_link); in setup_rt_frame()
351 err |= __save_altstack(&frame->uc.uc_stack, regs->regs[15]); in setup_rt_frame()
352 err |= setup_sigcontext(&frame->uc.uc_mcontext, in setup_rt_frame()
354 err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set)); in setup_rt_frame()
366 err |= __put_user(MOVW(7), &frame->retcode[0]); in setup_rt_frame()
367 err |= __put_user(TRAP_NOARG, &frame->retcode[1]); in setup_rt_frame()
368 err |= __put_user(OR_R0_R0, &frame->retcode[2]); in setup_rt_frame()
369 err |= __put_user(OR_R0_R0, &frame->retcode[3]); in setup_rt_frame()
370 err |= __put_user(OR_R0_R0, &frame->retcode[4]); in setup_rt_frame()
371 err |= __put_user(OR_R0_R0, &frame->retcode[5]); in setup_rt_frame()
372 err |= __put_user(OR_R0_R0, &frame->retcode[6]); in setup_rt_frame()
373 err |= __put_user((__NR_rt_sigreturn), &frame->retcode[7]); in setup_rt_frame()
374 regs->pr = (unsigned long) frame->retcode; in setup_rt_frame()
375 flush_icache_range(regs->pr, regs->pr + sizeof(frame->retcode)); in setup_rt_frame()
382 regs->regs[15] = (unsigned long) frame; in setup_rt_frame()
384 regs->regs[5] = (unsigned long) &frame->info; in setup_rt_frame()
385 regs->regs[6] = (unsigned long) &frame->uc; in setup_rt_frame()
400 current->comm, task_pid_nr(current), frame, regs->pc, regs->pr); in setup_rt_frame()
441 /* Set up the stack frame */ in handle_signal()