1 /* $FreeBSD: releng/6.0/sys/amd64/linux32/linux32_locore.s 133819 2004-08-16 07:55:06Z tjr $ */
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 LINUX_SC_GS(%ebx),%gs
15 movl LINUX_SC_FS(%ebx),%fs
16 movl LINUX_SC_ES(%ebx),%es
17 movl LINUX_SC_DS(%ebx),%ds
18 movl %esp, %ebx /* pass sigframe */
19 push %eax /* fake ret addr */
20 movl $LINUX_SYS_linux_sigreturn,%eax /* linux_sigreturn() */
21 int $0x80 /* enter kernel with args */
22 0: jmp 0b
23 ALIGN_TEXT
24 /* XXXXX */
25 linux_rt_sigcode:
26 call *LINUX_RT_SIGF_HANDLER(%esp)
27 leal LINUX_RT_SIGF_UC(%esp),%ebx /* linux ucp */
28 movl LINUX_SC_GS(%ebx),%gs
29 movl LINUX_SC_FS(%ebx),%fs
30 movl LINUX_SC_ES(%ebx),%es
31 movl LINUX_SC_DS(%ebx),%ds
32 push %eax /* fake ret addr */
33 movl $LINUX_SYS_linux_rt_sigreturn,%eax /* linux_rt_sigreturn() */
34 int $0x80 /* enter kernel with args */
35 0: jmp 0b
36 ALIGN_TEXT
37 /* XXXXX */
38 linux_esigcode:
39
40 .data
41 .globl linux_szsigcode, linux_sznonrtsigcode
42 linux_szsigcode:
43 .long linux_esigcode-linux_sigcode
44 linux_sznonrtsigcode:
45 .long linux_rt_sigcode-linux_sigcode
Cache object: 3c68f13efe8718f90df87331e4de29db
|