linux_locore.s revision 68519
150276Speter/* $FreeBSD: head/sys/i386/linux/linux_locore.s 68519 2000-11-09 07:27:55Z marcel $ */
276726Speter
350276Speter#include "linux_assym.h"			/* system definitions */
450276Speter#include <machine/asmacros.h>			/* miscellaneous asm macros */
550276Speter
650276Speter#include <linux_syscall.h>			/* system call numbers */
750276Speter
850276SpeterNON_GPROF_ENTRY(linux_sigcode)
950276Speter	call	*LINUX_SIGF_HANDLER(%esp)
1050276Speter	leal	LINUX_SIGF_SC(%esp),%ebx	/* linux scp */
1150276Speter	movl	LINUX_SC_GS(%ebx),%gs
1250276Speter	push	%eax				/* fake ret addr */
1350276Speter	movl	$LINUX_SYS_linux_sigreturn,%eax	/* linux_sigreturn() */
1450276Speter	int	$0x80				/* enter kernel with args */
1550276Speter0:	jmp	0b
1650276Speter	ALIGN_TEXT
1750276Speter/* XXXXX */
1850276Speter
1950276Speter_linux_rt_sigcode:
2050276Speter	call	*LINUX_RT_SIGF_HANDLER(%esp)
2150276Speter	leal	LINUX_RT_SIGF_UC(%esp),%ebx	/* linux ucp */
2250276Speter	movl	LINUX_SC_GS(%ebx),%gs
2350276Speter	push	%eax				/* fake ret addr */
2450276Speter	movl	$LINUX_SYS_linux_rt_sigreturn,%eax	/* linux_rt_sigreturn() */
2550276Speter	int	$0x80				/* enter kernel with args */
2650276Speter0:	jmp	0b
2750276Speter	ALIGN_TEXT
2850276Speter/* XXXXX */
2950276Speter_linux_esigcode:
3050276Speter
3150276Speter	.data
3250276Speter	.globl	_linux_szsigcode, _linux_sznonrtsigcode
3350276Speter_linux_szsigcode:
3450276Speter	.long	_linux_esigcode-_linux_sigcode
3576726Speter_linux_sznonrtsigcode:
3650276Speter	.long	_linux_rt_sigcode-_linux_sigcode
3750276Speter	.text
3850276Speter
3950276Speter
4050276Speter
4150276Speter