| struct sigscratch { |
| unsigned long scratch_unat; /* ar.unat for the general registers saved in pt */ |
| unsigned long ar_pfs; /* for syscalls, the user-level function-state */ |
| struct pt_regs pt; |
| }; |
| |
| struct sigframe { |
| /* |
| * Place signal handler args where user-level unwinder can find them easily. |
| * DO NOT MOVE THESE. They are part of the IA-64 Linux ABI and there is |
| * user-level code that depends on their presence! |
| */ |
| unsigned long arg0; /* signum */ |
| unsigned long arg1; /* siginfo pointer */ |
| unsigned long arg2; /* sigcontext pointer */ |
| /* |
| * End of architected state. |
| */ |
| |
| void __user *handler; /* pointer to the plabel of the signal handler */ |
| struct siginfo info; |
| struct sigcontext sc; |
| }; |
| |
| extern long ia64_do_signal (sigset_t *, struct sigscratch *, long); |