152140Sluoqi/* $FreeBSD$ */ 252140Sluoqi 314331Speter#include "linux_assym.h" /* system definitions */ 468519Smarcel#include <machine/asmacros.h> /* miscellaneous asm macros */ 514331Speter 668583Smarcel#include <i386/linux/linux_syscall.h> /* system call numbers */ 714331Speter 814331SpeterNON_GPROF_ENTRY(linux_sigcode) 960302Sobrien call *LINUX_SIGF_HANDLER(%esp) 1014331Speter leal LINUX_SIGF_SC(%esp),%ebx /* linux scp */ 11187948Sobrien mov LINUX_SC_GS(%ebx),%gs 1269081Smarcel movl %esp, %ebx /* pass sigframe */ 1314331Speter push %eax /* fake ret addr */ 1414331Speter movl $LINUX_SYS_linux_sigreturn,%eax /* linux_sigreturn() */ 1552140Sluoqi int $0x80 /* enter kernel with args */ 1652140Sluoqi0: jmp 0b 1750363Smarcel ALIGN_TEXT 1867234Sgallatin/* XXXXX */ 1973011Sjakelinux_rt_sigcode: 2067234Sgallatin call *LINUX_RT_SIGF_HANDLER(%esp) 2167234Sgallatin leal LINUX_RT_SIGF_UC(%esp),%ebx /* linux ucp */ 22182849Skib leal LINUX_RT_SIGF_SC(%ebx),%ecx /* linux sigcontext */ 23187948Sobrien mov LINUX_SC_GS(%ecx),%gs 2467234Sgallatin push %eax /* fake ret addr */ 2569081Smarcel movl $LINUX_SYS_linux_rt_sigreturn,%eax /* linux_rt_sigreturn() */ 2667234Sgallatin int $0x80 /* enter kernel with args */ 2767234Sgallatin0: jmp 0b 2867234Sgallatin ALIGN_TEXT 2969081Smarcel/* XXXXX */ 3073011Sjakelinux_esigcode: 3114331Speter 3214331Speter .data 3373011Sjake .globl linux_szsigcode, linux_sznonrtsigcode 3473011Sjakelinux_szsigcode: 3573011Sjake .long linux_esigcode-linux_sigcode 3673011Sjakelinux_sznonrtsigcode: 3773011Sjake .long linux_rt_sigcode-linux_sigcode 38