3 #include <machine/asm.h>
4 #include <alpha/linux/linux_syscall.h>
7 * Signal "trampoline" code. Invoked from RTE setup by sendsig().
9 * On entry, stack & registers look like:
12 * a1 pointer to siginfo_t
13 * a2 pointer to signal context frame (scp)
14 * a3 address of handler
15 * sp+0 saved hardware state
18 * scp+0 beginning of signal context frame
24 #define LINUX_SYSCALLNUM(name) \
25 ___CONCAT(LINUX_SYS_,name)
27 #define LINUX_CALLSYS_NOERROR(name) \
28 ldiq v0, LINUX_SYSCALLNUM(name); \
29 call_pal PAL_OSF1_callsys
33 NESTED(linux_sigcode,0,0,ra,0,0)
34 lda sp, -16(sp) /* save the sigcontext pointer */
36 jsr ra, (t12) /* call the signal handler (t12==pv) */
37 ldq a0, 0(sp) /* get the sigcontext pointer */
39 /* and call sigreturn() with it. */
40 LINUX_CALLSYS_NOERROR(osf1_sigreturn)
41 mov v0, a0 /* if that failed, get error code */
42 LINUX_CALLSYS_NOERROR(exit) /* and call exit() with it. */
43 XNESTED(linux_esigcode,0)
47 EXPORT(linux_szsigcode)
48 .quad linux_esigcode-linux_sigcode