| 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 void ia64_do_signal (struct sigscratch *, long); |