Lines Matching refs:frame

112  * Restore Vector extension context from the user's signal frame. This function
208 struct rt_sigframe __user *frame;
212 frame_size = sizeof(*frame);
234 struct rt_sigframe __user *frame;
242 frame = (struct rt_sigframe __user *)regs->sp;
244 if (!access_ok(frame, frame_size))
247 if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set)))
252 if (restore_sigcontext(regs, &frame->uc.uc_mcontext))
255 if (restore_altstack(&frame->uc.uc_stack))
266 "%s[%d]: bad frame in %s: frame=%p pc=%p sp=%p\n",
268 frame, (void *)regs->epc, (void *)regs->sp);
274 static long setup_sigcontext(struct rt_sigframe __user *frame,
277 struct sigcontext __user *sc = &frame->uc.uc_mcontext;
315 /* Align the stack frame. */
324 struct rt_sigframe __user *frame;
329 frame = get_sigframe(ksig, regs, frame_size);
330 if (!access_ok(frame, frame_size))
333 err |= copy_siginfo_to_user(&frame->info, &ksig->info);
336 err |= __put_user(0, &frame->uc.uc_flags);
337 err |= __put_user(NULL, &frame->uc.uc_link);
338 err |= __save_altstack(&frame->uc.uc_stack, regs->sp);
339 err |= setup_sigcontext(frame, regs);
340 err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set));
353 if (copy_to_user(&frame->sigreturn_code, __user_rt_sigreturn,
354 sizeof(frame->sigreturn_code)))
357 addr = (unsigned long)&frame->sigreturn_code;
359 flush_icache_range(addr, addr + sizeof(frame->sigreturn_code));
372 regs->sp = (unsigned long)frame;
374 regs->a1 = (unsigned long)(&frame->info); /* a1: siginfo pointer */
375 regs->a2 = (unsigned long)(&frame->uc); /* a2: ucontext pointer */
380 (void *)regs->epc, (void *)regs->ra, frame);
393 /* Set up the stack frame */