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 .data
9
10 .globl linux_platform
11 linux_platform:
12 .asciz "i686"
13
14 .text
15 .code32
16
17 ENTRY(linux32_vdso_sigcode)
18 .cfi_startproc
19 .cfi_signal_frame
20 .cfi_def_cfa %esp, LINUX_SIGF_SC
21 .cfi_offset %gs, L_SC_GS
22 .cfi_offset %fs, L_SC_FS
23 .cfi_offset %es, L_SC_ES
24 .cfi_offset %ds, L_SC_DS
25 .cfi_offset %cs, L_SC_CS
26 .cfi_offset %ss, L_SC_SS
27 #ifdef __clang__
28 .cfi_offset %flags, L_SC_EFLAGS
29 #else
30 .cfi_offset %eflags, L_SC_EFLAGS
31 #endif
32 .cfi_offset %edi, L_SC_EDI
33 .cfi_offset %esi, L_SC_ESI
34 .cfi_offset %ebp, L_SC_EBP
35 .cfi_offset %ebx, L_SC_EBX
36 .cfi_offset %edx, L_SC_EDX
37 .cfi_offset %ecx, L_SC_ECX
38 .cfi_offset %eax, L_SC_EAX
39 .cfi_offset %eip, L_SC_EIP
40 .cfi_offset %esp, L_SC_ESP
41
42 movl %esp, %ebx /* sigframe for sigreturn */
43 call *%edi /* call signal handler */
44 popl %eax /* gcc unwind code need this */
45 .cfi_def_cfa %esp, LINUX_SIGF_SC-4
46 movl $LINUX32_SYS_linux_sigreturn, %eax
47 int $0x80
48 0: jmp 0b
49 .cfi_endproc
50 END(linux32_vdso_sigcode)
51
52
53 ENTRY(linux32_vdso_rt_sigcode)
54 .cfi_startproc
55 .cfi_signal_frame
56 .cfi_def_cfa %esp, LINUX_RT_SIGF_UC + LINUX_RT_SIGF_SC
57 .cfi_offset %gs, L_SC_GS
58 .cfi_offset %fs, L_SC_FS
59 .cfi_offset %es, L_SC_ES
60 .cfi_offset %ds, L_SC_DS
61 .cfi_offset %cs, L_SC_CS
62 .cfi_offset %ss, L_SC_SS
63 #ifdef __clang__
64 .cfi_offset %flags, L_SC_EFLAGS
65 #else
66 .cfi_offset %eflags, L_SC_EFLAGS
67 #endif
68 .cfi_offset %edi, L_SC_EDI
69 .cfi_offset %esi, L_SC_ESI
70 .cfi_offset %ebp, L_SC_EBP
71 .cfi_offset %ebx, L_SC_EBX
72 .cfi_offset %edx, L_SC_EDX
73 .cfi_offset %ecx, L_SC_ECX
74 .cfi_offset %eax, L_SC_EAX
75 .cfi_offset %eip, L_SC_EIP
76 .cfi_offset %esp, L_SC_ESP
77
78 leal LINUX_RT_SIGF_UC(%esp), %ebx /* linux ucontext for rt_sigreturn */
79 call *%edi /* call signal handler */
80 movl $LINUX32_SYS_linux_rt_sigreturn, %eax
81 int $0x80
82 0: jmp 0b
83 .cfi_endproc
84 END(linux32_vdso_rt_sigcode)
85
86 ENTRY(__kernel_sigreturn)
87 .cfi_startproc
88 .cfi_signal_frame
89 movl %esp, %ebx /* sigframe for sigreturn */
90 call *%edi /* call signal handler */
91 popl %eax /* gcc unwind code need this */
92 movl $LINUX32_SYS_linux_sigreturn, %eax
93 int $0x80
94 0: jmp 0b
95 .cfi_endproc
96 END(__kernel_sigreturn)
97
98 ENTRY(__kernel_rt_sigreturn)
99 .cfi_startproc
100 .cfi_signal_frame
101 leal LINUX_RT_SIGF_UC(%esp), %ebx /* linux ucontext for rt_sigreturn */
102 call *%edi /* call signal handler */
103 movl $LINUX32_SYS_linux_rt_sigreturn, %eax
104 int $0x80
105 0: jmp 0b
106 .cfi_endproc
107 END(__kernel_rt_sigreturn)
108
109 ENTRY(__kernel_vsyscall)
110 .cfi_startproc
111 int $0x80
112 ret
113 .cfi_endproc
114 END(__kernel_vsyscall)
115
116 #if 0
117 .section .note.Linux, "a",@note
118 .long 2f - 1f /* namesz */
119 .balign 4
120 .long 4f - 3f /* descsz */
121 .long 0
122 1:
123 .asciz "Linux"
124 2:
125 .balign 4
126 3:
127 .long LINUX_VERSION_CODE
128 4:
129 .balign 4
130 .previous
131 #endif
Cache object: afee4bb371645e26f39e486d7b43b7c4
|