svr4_locore.s revision 43412
1153761Swollman#include "svr4_assym.h" /* system definitions */ 2192886Sedwin#include <machine/asmacros.h> /* miscellaneous asm macros */ 3192886Sedwin 467578Swollman#include <svr4/svr4_syscall.h> /* system call numbers */ 52742Swollman 62742SwollmanNON_GPROF_ENTRY(svr4_sigcode) 7243003Sedwin call SVR4_SIGF_HANDLER(%esp) 82742Swollman leal SVR4_SIGF_UC(%esp),%eax # ucp (the call may have clobbered the 9248307Sedwin # copy at SIGF_UCP(%esp)) 102742Swollman#if defined(NOTYET) 112742Swollman#ifdef VM86 12158421Swollman testl $PSL_VM,SVR4_UC_EFLAGS(%eax) 13158421Swollman jnz 1f 142742Swollman#endif 1586222Swollman#endif 1620094Swollman movl SVR4_UC_FS(%eax),%ecx 1720094Swollman movl SVR4_UC_GS(%eax),%edx 1820094Swollman movl %cx,%fs 1920094Swollman movl %dx,%gs 2020094Swollman#if defined(__NetBSD__) 21158421Swollman1: pushl %eax 22158421Swollman pushl $1 # setcontext(p) == syscontext(1, p) 2320094Swollman pushl %eax # junk to fake return address 242742Swollman movl $_svr4_sys_context,%eax 252742Swollman#else 262742Swollman/* must be FreeBSD, right? */ 272742Swollman1: pushl %eax # fake return address 28248307Sedwin pushl $1 # pointer to ucontext 29248307Sedwin movl $svr4_sys_context,%eax 30248307Sedwin#endif 31248307Sedwin int $0x80 # enter kernel with args on stack 3214343Swollman movl $exit,%eax 3358787Sru int $0x80 # exit if sigreturn fails 3414343Swollman 3530711Swollman/* .globl _svr4_esigcode*/ 3630711Swollman 37149514Swollman .align 2 /* long word align */ 3830711Swollmansvr4_esigcode: 3930711Swollman 4030711Swollman .data 4130711Swollman .globl svr4_szsigcode 4230711Swollmansvr4_szsigcode: 432742Swollman .long svr4_esigcode - svr4_sigcode 4430711Swollman 4530711Swollman .text 4630711Swollman 4730711Swollman