1133819Stjr/* $FreeBSD: releng/10.2/sys/amd64/linux32/linux32_locore.s 190620 2009-04-01 13:09:26Z kib $ */ 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