1/* $FreeBSD: releng/10.2/sys/i386/linux/linux_locore.s 187948 2009-01-31 11:37:21Z obrien $ */ 2 3#include "linux_assym.h" /* system definitions */ 4#include <machine/asmacros.h> /* miscellaneous asm macros */ 5 6#include <i386/linux/linux_syscall.h> /* system call numbers */ 7 8NON_GPROF_ENTRY(linux_sigcode) 9 call *LINUX_SIGF_HANDLER(%esp) 10 leal LINUX_SIGF_SC(%esp),%ebx /* linux scp */ 11 mov LINUX_SC_GS(%ebx),%gs 12 movl %esp, %ebx /* pass sigframe */ 13 push %eax /* fake ret addr */ 14 movl $LINUX_SYS_linux_sigreturn,%eax /* linux_sigreturn() */ 15 int $0x80 /* enter kernel with args */ 160: jmp 0b 17 ALIGN_TEXT 18/* XXXXX */ 19linux_rt_sigcode: 20 call *LINUX_RT_SIGF_HANDLER(%esp) 21 leal LINUX_RT_SIGF_UC(%esp),%ebx /* linux ucp */ 22 leal LINUX_RT_SIGF_SC(%ebx),%ecx /* linux sigcontext */ 23 mov LINUX_SC_GS(%ecx),%gs 24 push %eax /* fake ret addr */ 25 movl $LINUX_SYS_linux_rt_sigreturn,%eax /* linux_rt_sigreturn() */ 26 int $0x80 /* enter kernel with args */ 270: jmp 0b 28 ALIGN_TEXT 29/* XXXXX */ 30linux_esigcode: 31 32 .data 33 .globl linux_szsigcode, linux_sznonrtsigcode 34linux_szsigcode: 35 .long linux_esigcode-linux_sigcode 36linux_sznonrtsigcode: 37 .long linux_rt_sigcode-linux_sigcode 38