21 #include <linux/linkage.h>
24 #include <asm/registers.h>
25 #include <asm/thread_info.h>
26 #include <asm/unistd.h>
27 #include <asm/uaccess.h>
28 #include <asm/ucontext.h>
29 #include <asm/cacheflush.h>
30 #include <asm/signal.h>
42 unsigned long sp = regs->
r29;
45 if ((ka->
sa.sa_flags &
SA_ONSTACK) && (sas_ss_flags(sp) == 0))
48 return (
void __user *)((sp - frame_size) & ~(
sizeof(
long long) - 1));
57 32*
sizeof(
unsigned long));
77 static int restore_sigcontext(
struct pt_regs *regs,
84 32 *
sizeof(
unsigned long));
112 frame = get_sigframe(ka, regs,
sizeof(
struct rt_sigframe));
126 err |= setup_sigcontext(regs, &frame->
uc.uc_mcontext);
132 regs->
r0100 = ((
unsigned long long)((
unsigned long)&frame->
info) << 32)
133 | (
unsigned long long)signr;
185 if (setup_rt_frame(sig, ka, info, sigmask_to_save(), regs) < 0)
207 handle_signal(signo, &info, &sigact, regs);
233 restore_saved_sigmask();
243 tracehook_notify_resume(regs);
274 if (restore_sigcontext(regs, &frame->
uc.uc_mcontext))