1133819Stjr/* $FreeBSD$ */
2133819Stjr
3133819Stjr#include "linux32_assym.h"			/* system definitions */
4133819Stjr#include <machine/asmacros.h>			/* miscellaneous asm macros */
5133819Stjr
6133819Stjr#include <amd64/linux32/linux32_syscall.h>	/* system call numbers */
7133819Stjr
8133819Stjr.text
9133819Stjr.code32
10133819Stjr
11133819StjrNON_GPROF_ENTRY(linux_sigcode)
12133819Stjr	call	*LINUX_SIGF_HANDLER(%esp)
13133819Stjr	leal	LINUX_SIGF_SC(%esp),%ebx	/* linux scp */
14133819Stjr	movl	%esp, %ebx			/* pass sigframe */
15133819Stjr	push	%eax				/* fake ret addr */
16133819Stjr	movl	$LINUX_SYS_linux_sigreturn,%eax	/* linux_sigreturn() */
17133819Stjr	int	$0x80				/* enter kernel with args */
18133819Stjr0:	jmp	0b
19133819Stjr	ALIGN_TEXT
20133819Stjr/* XXXXX */
21133819Stjrlinux_rt_sigcode:
22133819Stjr	call	*LINUX_RT_SIGF_HANDLER(%esp)
23133819Stjr	leal	LINUX_RT_SIGF_UC(%esp),%ebx	/* linux ucp */
24182849Skib	leal	LINUX_RT_SIGF_SC(%ebx),%ecx	/* linux sigcontext */
25133819Stjr	push	%eax				/* fake ret addr */
26133819Stjr	movl	$LINUX_SYS_linux_rt_sigreturn,%eax   /* linux_rt_sigreturn() */
27133819Stjr	int	$0x80				/* enter kernel with args */
28133819Stjr0:	jmp	0b
29133819Stjr	ALIGN_TEXT
30133819Stjr/* XXXXX */
31133819Stjrlinux_esigcode:
32133819Stjr
33133819Stjr	.data
34133819Stjr	.globl	linux_szsigcode, linux_sznonrtsigcode
35133819Stjrlinux_szsigcode:
36133819Stjr	.long	linux_esigcode-linux_sigcode
37133819Stjrlinux_sznonrtsigcode:
38133819Stjr	.long	linux_rt_sigcode-linux_sigcode
39