15 #include <linux/sched.h>
18 #include <linux/kernel.h>
19 #include <linux/signal.h>
20 #include <linux/errno.h>
21 #include <linux/wait.h>
23 #include <linux/stddef.h>
24 #include <linux/personality.h>
26 #include <linux/ptrace.h>
27 #include <linux/elf.h>
31 #include <asm/processor.h>
32 #include <asm/ucontext.h>
33 #include <asm/sigframe.h>
34 #include <asm/syscalls.h>
85 new_sa.
sa.sa_handler = compat_ptr(handler);
86 new_sa.
sa.sa_restorer = compat_ptr(restorer);
96 &oact->sa_restorer) ||
140 err |=
__put_user(ptr_to_compat(from->si_ptr), &to->si_ptr);
147 &to->_sifields._pad[0]);
152 err |=
__put_user(from->si_utime, &to->si_utime);
153 err |=
__put_user(from->si_stime, &to->si_stime);
154 err |=
__put_user(from->si_status, &to->si_status);
164 err |=
__put_user(from->si_overrun, &to->si_overrun);
165 err |=
__put_user(ptr_to_compat(from->si_ptr),
194 to->si_ptr = compat_ptr(ptr32);
216 uss.
ss_sp = compat_ptr(ptr);
222 (
unsigned long)compat_ptr(regs->
sp));
224 if (ret >= 0 && uoss_ptr) {
271 sp = (
unsigned long)compat_ptr(regs->
sp);
278 if (on_sig_stack(sp) && !
likely(on_sig_stack(sp - frame_size)))
283 if (sas_ss_flags(sp) == 0)
293 return (
void __user *)
sp;
299 unsigned long restorer;
304 frame = compat_get_sigframe(ka, regs,
sizeof(*frame));
329 &frame->
uc.uc_stack.ss_sp);
331 &frame->
uc.uc_stack.ss_flags);
340 restorer = ptr_to_compat_reg(ka->
sa.sa_restorer);
349 regs->
pc = ptr_to_compat_reg(ka->
sa.sa_handler);
351 regs->
sp = ptr_to_compat_reg(frame);
353 regs->
regs[0] = (
unsigned long) usig;
354 regs->
regs[1] = ptr_to_compat_reg(&frame->
info);
355 regs->
regs[2] = ptr_to_compat_reg(&frame->
uc);