initial commit
[freebsd-arm:freebsd-arm.git] / amd64 / linux32 / linux32_locore.s
1 /* $FreeBSD$ */
2
3 #include "linux32_assym.h"                      /* system definitions */
4 #include <machine/asmacros.h>                   /* miscellaneous asm macros */
5
6 #include <amd64/linux32/linux32_syscall.h>      /* system call numbers */
7
8 .text
9 .code32
10
11 NON_GPROF_ENTRY(linux_sigcode)
12         call    *LINUX_SIGF_HANDLER(%esp)
13         leal    LINUX_SIGF_SC(%esp),%ebx        /* linux scp */
14         movl    %esp, %ebx                      /* pass sigframe */
15         push    %eax                            /* fake ret addr */
16         movl    $LINUX_SYS_linux_sigreturn,%eax /* linux_sigreturn() */
17         int     $0x80                           /* enter kernel with args */
18 0:      jmp     0b
19         ALIGN_TEXT
20 /* XXXXX */
21 linux_rt_sigcode:
22         call    *LINUX_RT_SIGF_HANDLER(%esp)
23         leal    LINUX_RT_SIGF_UC(%esp),%ebx     /* linux ucp */
24         leal    LINUX_RT_SIGF_SC(%ebx),%ecx     /* linux sigcontext */
25         push    %eax                            /* fake ret addr */
26         movl    $LINUX_SYS_linux_rt_sigreturn,%eax   /* linux_rt_sigreturn() */
27         int     $0x80                           /* enter kernel with args */
28 0:      jmp     0b
29         ALIGN_TEXT
30 /* XXXXX */
31 linux_esigcode:
32
33         .data
34         .globl  linux_szsigcode, linux_sznonrtsigcode
35 linux_szsigcode:
36         .long   linux_esigcode-linux_sigcode
37 linux_sznonrtsigcode:
38         .long   linux_rt_sigcode-linux_sigcode