1 |
1275 |
phoenix |
/* -*- mode: asm -*-
|
2 |
|
|
*
|
3 |
|
|
* linux/arch/m68k/kernel/entry.S
|
4 |
|
|
*
|
5 |
|
|
* Copyright (C) 1991, 1992 Linus Torvalds
|
6 |
|
|
*
|
7 |
|
|
* This file is subject to the terms and conditions of the GNU General Public
|
8 |
|
|
* License. See the file README.legal in the main directory of this archive
|
9 |
|
|
* for more details.
|
10 |
|
|
*
|
11 |
|
|
* Linux/m68k support by Hamish Macdonald
|
12 |
|
|
*
|
13 |
|
|
* 68060 fixes by Jesper Skov
|
14 |
|
|
*
|
15 |
|
|
*/
|
16 |
|
|
|
17 |
|
|
/*
|
18 |
|
|
* entry.S contains the system-call and fault low-level handling routines.
|
19 |
|
|
* This also contains the timer-interrupt handler, as well as all interrupts
|
20 |
|
|
* and faults that can result in a task-switch.
|
21 |
|
|
*
|
22 |
|
|
* NOTE: This code handles signal-recognition, which happens every time
|
23 |
|
|
* after a timer-interrupt and after each system call.
|
24 |
|
|
*
|
25 |
|
|
*/
|
26 |
|
|
|
27 |
|
|
/*
|
28 |
|
|
* 12/03/96 Jes: Currently we only support m68k single-cpu systems, so
|
29 |
|
|
* all pointers that used to be 'current' are now entry
|
30 |
|
|
* number 0 in the 'current_set' list.
|
31 |
|
|
*
|
32 |
|
|
* 6/05/00 RZ: addedd writeback completion after return from sighandler
|
33 |
|
|
* for 68040
|
34 |
|
|
*/
|
35 |
|
|
|
36 |
|
|
#include
|
37 |
|
|
#include
|
38 |
|
|
#include
|
39 |
|
|
#include
|
40 |
|
|
#include
|
41 |
|
|
#include
|
42 |
|
|
#include
|
43 |
|
|
#include
|
44 |
|
|
|
45 |
|
|
#include "m68k_defs.h"
|
46 |
|
|
|
47 |
|
|
.globl SYMBOL_NAME(system_call), SYMBOL_NAME(buserr), SYMBOL_NAME(trap)
|
48 |
|
|
.globl SYMBOL_NAME(resume), SYMBOL_NAME(ret_from_exception)
|
49 |
|
|
.globl SYMBOL_NAME(ret_from_signal)
|
50 |
|
|
.globl SYMBOL_NAME(inthandler), SYMBOL_NAME(sys_call_table)
|
51 |
|
|
.globl SYMBOL_NAME(sys_fork), SYMBOL_NAME(sys_clone), SYMBOL_NAME(sys_vfork)
|
52 |
|
|
.globl SYMBOL_NAME(ret_from_interrupt), SYMBOL_NAME(bad_interrupt)
|
53 |
|
|
|
54 |
|
|
.text
|
55 |
|
|
ENTRY(buserr)
|
56 |
|
|
SAVE_ALL_INT
|
57 |
|
|
GET_CURRENT(%d0)
|
58 |
|
|
movel %sp,%sp@- | stack frame pointer argument
|
59 |
|
|
bsrl SYMBOL_NAME(buserr_c)
|
60 |
|
|
addql #4,%sp
|
61 |
|
|
jra SYMBOL_NAME(ret_from_exception)
|
62 |
|
|
|
63 |
|
|
ENTRY(trap)
|
64 |
|
|
SAVE_ALL_INT
|
65 |
|
|
GET_CURRENT(%d0)
|
66 |
|
|
movel %sp,%sp@- | stack frame pointer argument
|
67 |
|
|
bsrl SYMBOL_NAME(trap_c)
|
68 |
|
|
addql #4,%sp
|
69 |
|
|
jra SYMBOL_NAME(ret_from_exception)
|
70 |
|
|
|
71 |
|
|
ENTRY(reschedule)
|
72 |
|
|
| save top of frame
|
73 |
|
|
movel %sp,%curptr@(TASK_THREAD+THREAD_ESP0)
|
74 |
|
|
|
75 |
|
|
pea SYMBOL_NAME(ret_from_exception)
|
76 |
|
|
jmp SYMBOL_NAME(schedule)
|
77 |
|
|
|
78 |
|
|
| After a fork we jump here directly from resume,
|
79 |
|
|
| so that %d1 contains the previous task
|
80 |
|
|
| Theoretically only needed on SMP, but let's watch
|
81 |
|
|
| what happens in schedule_tail() in future...
|
82 |
|
|
ENTRY(ret_from_fork)
|
83 |
|
|
movel %d1,%sp@-
|
84 |
|
|
jsr SYMBOL_NAME(schedule_tail)
|
85 |
|
|
addql #4,%sp
|
86 |
|
|
jra SYMBOL_NAME(ret_from_exception)
|
87 |
|
|
|
88 |
|
|
badsys:
|
89 |
|
|
movel #-ENOSYS,%sp@(PT_D0)
|
90 |
|
|
jra SYMBOL_NAME(ret_from_exception)
|
91 |
|
|
|
92 |
|
|
do_trace:
|
93 |
|
|
movel #-ENOSYS,%sp@(PT_D0) | needed for strace
|
94 |
|
|
subql #4,%sp
|
95 |
|
|
SAVE_SWITCH_STACK
|
96 |
|
|
jbsr SYMBOL_NAME(syscall_trace)
|
97 |
|
|
RESTORE_SWITCH_STACK
|
98 |
|
|
addql #4,%sp
|
99 |
|
|
movel %sp@(PT_ORIG_D0),%d1
|
100 |
|
|
movel #-ENOSYS,%d0
|
101 |
|
|
cmpl #NR_syscalls,%d1
|
102 |
|
|
jcc 1f
|
103 |
|
|
jbsr @(SYMBOL_NAME(sys_call_table),%d1:l:4)@(0)
|
104 |
|
|
1: movel %d0,%sp@(PT_D0) | save the return value
|
105 |
|
|
subql #4,%sp | dummy return address
|
106 |
|
|
SAVE_SWITCH_STACK
|
107 |
|
|
jbsr SYMBOL_NAME(syscall_trace)
|
108 |
|
|
|
109 |
|
|
SYMBOL_NAME_LABEL(ret_from_signal)
|
110 |
|
|
RESTORE_SWITCH_STACK
|
111 |
|
|
addql #4,%sp
|
112 |
|
|
/* on 68040 complete pending writebacks if any */
|
113 |
|
|
#ifdef CONFIG_M68040
|
114 |
|
|
bfextu %sp@(PT_VECTOR){#0,#4},%d0
|
115 |
|
|
subql #7,%d0 | bus error frame ?
|
116 |
|
|
jbne 1f
|
117 |
|
|
movel %sp,%sp@-
|
118 |
|
|
jbsr SYMBOL_NAME(berr_040cleanup)
|
119 |
|
|
addql #4,%sp
|
120 |
|
|
1:
|
121 |
|
|
#endif
|
122 |
|
|
jra SYMBOL_NAME(ret_from_exception)
|
123 |
|
|
|
124 |
|
|
ENTRY(system_call)
|
125 |
|
|
SAVE_ALL_SYS
|
126 |
|
|
|
127 |
|
|
GET_CURRENT(%d1)
|
128 |
|
|
| save top of frame
|
129 |
|
|
movel %sp,%curptr@(TASK_THREAD+THREAD_ESP0)
|
130 |
|
|
|
131 |
|
|
btst #PT_TRACESYS_BIT,%curptr@(TASK_PTRACE+PT_TRACESYS_OFF)
|
132 |
|
|
jne do_trace
|
133 |
|
|
cmpl #NR_syscalls,%d0
|
134 |
|
|
jcc badsys
|
135 |
|
|
jbsr @(SYMBOL_NAME(sys_call_table),%d0:l:4)@(0)
|
136 |
|
|
movel %d0,%sp@(PT_D0) | save the return value
|
137 |
|
|
|
138 |
|
|
SYMBOL_NAME_LABEL(ret_from_exception)
|
139 |
|
|
btst #5,%sp@(PT_SR) | check if returning to kernel
|
140 |
|
|
bnes 2f | if so, skip resched, signals
|
141 |
|
|
| only allow interrupts when we are really the last one on the
|
142 |
|
|
| kernel stack, otherwise stack overflow can occur during
|
143 |
|
|
| heavy interrupt load
|
144 |
|
|
andw #ALLOWINT,%sr
|
145 |
|
|
tstl %curptr@(TASK_NEEDRESCHED)
|
146 |
|
|
jne SYMBOL_NAME(reschedule)
|
147 |
|
|
#if 0
|
148 |
|
|
cmpl #SYMBOL_NAME(task),%curptr | task[0] cannot have signals
|
149 |
|
|
jeq 2f
|
150 |
|
|
#endif
|
151 |
|
|
| check for delayed trace
|
152 |
|
|
bclr #PT_DTRACE_BIT,%curptr@(TASK_PTRACE+PT_DTRACE_OFF)
|
153 |
|
|
jne do_delayed_trace
|
154 |
|
|
5:
|
155 |
|
|
tstl %curptr@(TASK_STATE) | state
|
156 |
|
|
jne SYMBOL_NAME(reschedule)
|
157 |
|
|
|
158 |
|
|
tstl %curptr@(TASK_SIGPENDING)
|
159 |
|
|
jne Lsignal_return
|
160 |
|
|
2: RESTORE_ALL
|
161 |
|
|
|
162 |
|
|
Lsignal_return:
|
163 |
|
|
subql #4,%sp | dummy return address
|
164 |
|
|
SAVE_SWITCH_STACK
|
165 |
|
|
pea %sp@(SWITCH_STACK_SIZE)
|
166 |
|
|
clrl %sp@-
|
167 |
|
|
bsrl SYMBOL_NAME(do_signal)
|
168 |
|
|
addql #8,%sp
|
169 |
|
|
RESTORE_SWITCH_STACK
|
170 |
|
|
addql #4,%sp
|
171 |
|
|
RESTORE_ALL
|
172 |
|
|
|
173 |
|
|
do_delayed_trace:
|
174 |
|
|
bclr #7,%sp@(PT_SR) | clear trace bit in SR
|
175 |
|
|
pea 1 | send SIGTRAP
|
176 |
|
|
movel %curptr,%sp@-
|
177 |
|
|
pea LSIGTRAP
|
178 |
|
|
jbsr SYMBOL_NAME(send_sig)
|
179 |
|
|
addql #8,%sp
|
180 |
|
|
addql #4,%sp
|
181 |
|
|
jra 5b
|
182 |
|
|
|
183 |
|
|
|
184 |
|
|
#if 0
|
185 |
|
|
#if CONFIG_AMIGA
|
186 |
|
|
SYMBOL_NAME_LABEL(ami_inthandler)
|
187 |
|
|
addql #1,SYMBOL_NAME(irq_stat)+4 | local_irq_count
|
188 |
|
|
SAVE_ALL_INT
|
189 |
|
|
GET_CURRENT(%d0)
|
190 |
|
|
|
191 |
|
|
bfextu %sp@(PT_VECTOR){#4,#12},%d0
|
192 |
|
|
movel %d0,%a0
|
193 |
|
|
addql #1,%a0@(SYMBOL_NAME(kstat)+STAT_IRQ-VECOFF(VEC_SPUR))
|
194 |
|
|
movel %a0@(SYMBOL_NAME(autoirq_list)-VECOFF(VEC_SPUR)),%a0
|
195 |
|
|
|
196 |
|
|
| amiga vector int handler get the req mask instead of irq vector
|
197 |
|
|
lea CUSTOMBASE,%a1
|
198 |
|
|
movew %a1@(C_INTREQR),%d0
|
199 |
|
|
andw %a1@(C_INTENAR),%d0
|
200 |
|
|
|
201 |
|
|
| prepare stack (push frame pointer, dev_id & req mask)
|
202 |
|
|
pea %sp@
|
203 |
|
|
movel %a0@(IRQ_DEVID),%sp@-
|
204 |
|
|
movel %d0,%sp@-
|
205 |
|
|
pea %pc@(SYMBOL_NAME(ret_from_interrupt):w)
|
206 |
|
|
jbra @(IRQ_HANDLER,%a0)@(0)
|
207 |
|
|
|
208 |
|
|
ENTRY(nmi_handler)
|
209 |
|
|
rte
|
210 |
|
|
#endif
|
211 |
|
|
#endif
|
212 |
|
|
|
213 |
|
|
/*
|
214 |
|
|
** This is the main interrupt handler, responsible for calling process_int()
|
215 |
|
|
*/
|
216 |
|
|
SYMBOL_NAME_LABEL(inthandler)
|
217 |
|
|
SAVE_ALL_INT
|
218 |
|
|
GET_CURRENT(%d0)
|
219 |
|
|
addql #1,SYMBOL_NAME(irq_stat)+4 | local_irq_count
|
220 |
|
|
| put exception # in d0
|
221 |
|
|
bfextu %sp@(PT_VECTOR){#4,#10},%d0
|
222 |
|
|
|
223 |
|
|
movel %sp,%sp@-
|
224 |
|
|
movel %d0,%sp@- | put vector # on stack
|
225 |
|
|
#if defined(MACH_Q40_ONLY) && defined(CONFIG_BLK_DEV_FD)
|
226 |
|
|
btstb #4,0xff000000 | Q40 floppy needs very special treatment ...
|
227 |
|
|
jbeq 1f
|
228 |
|
|
btstb #3,0xff000004
|
229 |
|
|
jbeq 1f
|
230 |
|
|
jbsr SYMBOL_NAME(floppy_hardint)
|
231 |
|
|
jbra 3f
|
232 |
|
|
1:
|
233 |
|
|
#endif
|
234 |
|
|
jbsr SYMBOL_NAME(process_int)| process the IRQ
|
235 |
|
|
3: addql #8,%sp | pop parameters off stack
|
236 |
|
|
|
237 |
|
|
SYMBOL_NAME_LABEL(ret_from_interrupt)
|
238 |
|
|
subql #1,SYMBOL_NAME(irq_stat)+4 | local_irq_count
|
239 |
|
|
jeq 1f
|
240 |
|
|
2:
|
241 |
|
|
RESTORE_ALL
|
242 |
|
|
1:
|
243 |
|
|
moveq #(~ALLOWINT>>8)&0xff,%d0
|
244 |
|
|
andb %sp@(PT_SR),%d0
|
245 |
|
|
jne 2b
|
246 |
|
|
|
247 |
|
|
/* check if we need to do software interrupts */
|
248 |
|
|
tstl SYMBOL_NAME(irq_stat) | softirq_pending ?
|
249 |
|
|
jeq SYMBOL_NAME(ret_from_exception)
|
250 |
|
|
pea SYMBOL_NAME(ret_from_exception)
|
251 |
|
|
jra SYMBOL_NAME(do_softirq)
|
252 |
|
|
|
253 |
|
|
|
254 |
|
|
/* Handler for uninitialized and spurious interrupts */
|
255 |
|
|
|
256 |
|
|
SYMBOL_NAME_LABEL(bad_interrupt)
|
257 |
|
|
addql #1,SYMBOL_NAME(num_spurious)
|
258 |
|
|
rte
|
259 |
|
|
|
260 |
|
|
ENTRY(sys_fork)
|
261 |
|
|
SAVE_SWITCH_STACK
|
262 |
|
|
pea %sp@(SWITCH_STACK_SIZE)
|
263 |
|
|
jbsr SYMBOL_NAME(m68k_fork)
|
264 |
|
|
addql #4,%sp
|
265 |
|
|
RESTORE_SWITCH_STACK
|
266 |
|
|
rts
|
267 |
|
|
|
268 |
|
|
ENTRY(sys_clone)
|
269 |
|
|
SAVE_SWITCH_STACK
|
270 |
|
|
pea %sp@(SWITCH_STACK_SIZE)
|
271 |
|
|
jbsr SYMBOL_NAME(m68k_clone)
|
272 |
|
|
addql #4,%sp
|
273 |
|
|
RESTORE_SWITCH_STACK
|
274 |
|
|
rts
|
275 |
|
|
|
276 |
|
|
ENTRY(sys_vfork)
|
277 |
|
|
SAVE_SWITCH_STACK
|
278 |
|
|
pea %sp@(SWITCH_STACK_SIZE)
|
279 |
|
|
jbsr SYMBOL_NAME(m68k_vfork)
|
280 |
|
|
addql #4,%sp
|
281 |
|
|
RESTORE_SWITCH_STACK
|
282 |
|
|
rts
|
283 |
|
|
|
284 |
|
|
ENTRY(sys_sigsuspend)
|
285 |
|
|
SAVE_SWITCH_STACK
|
286 |
|
|
pea %sp@(SWITCH_STACK_SIZE)
|
287 |
|
|
jbsr SYMBOL_NAME(do_sigsuspend)
|
288 |
|
|
addql #4,%sp
|
289 |
|
|
RESTORE_SWITCH_STACK
|
290 |
|
|
rts
|
291 |
|
|
|
292 |
|
|
ENTRY(sys_rt_sigsuspend)
|
293 |
|
|
SAVE_SWITCH_STACK
|
294 |
|
|
pea %sp@(SWITCH_STACK_SIZE)
|
295 |
|
|
jbsr SYMBOL_NAME(do_rt_sigsuspend)
|
296 |
|
|
addql #4,%sp
|
297 |
|
|
RESTORE_SWITCH_STACK
|
298 |
|
|
rts
|
299 |
|
|
|
300 |
|
|
ENTRY(sys_sigreturn)
|
301 |
|
|
SAVE_SWITCH_STACK
|
302 |
|
|
jbsr SYMBOL_NAME(do_sigreturn)
|
303 |
|
|
RESTORE_SWITCH_STACK
|
304 |
|
|
rts
|
305 |
|
|
|
306 |
|
|
ENTRY(sys_rt_sigreturn)
|
307 |
|
|
SAVE_SWITCH_STACK
|
308 |
|
|
jbsr SYMBOL_NAME(do_rt_sigreturn)
|
309 |
|
|
RESTORE_SWITCH_STACK
|
310 |
|
|
rts
|
311 |
|
|
|
312 |
|
|
SYMBOL_NAME_LABEL(resume)
|
313 |
|
|
/*
|
314 |
|
|
* Beware - when entering resume, prev (the current task) is
|
315 |
|
|
* in a0, next (the new task) is in a1,so don't change these
|
316 |
|
|
* registers until their contents are no longer needed.
|
317 |
|
|
*/
|
318 |
|
|
|
319 |
|
|
/* save sr */
|
320 |
|
|
movew %sr,%a0@(TASK_THREAD+THREAD_SR)
|
321 |
|
|
|
322 |
|
|
/* save fs (sfc,%dfc) (may be pointing to kernel memory) */
|
323 |
|
|
movec %sfc,%d0
|
324 |
|
|
movew %d0,%a0@(TASK_THREAD+THREAD_FS)
|
325 |
|
|
|
326 |
|
|
/* save usp */
|
327 |
|
|
/* it is better to use a movel here instead of a movew 8*) */
|
328 |
|
|
movec %usp,%d0
|
329 |
|
|
movel %d0,%a0@(TASK_THREAD+THREAD_USP)
|
330 |
|
|
|
331 |
|
|
/* save non-scratch registers on stack */
|
332 |
|
|
SAVE_SWITCH_STACK
|
333 |
|
|
|
334 |
|
|
/* save current kernel stack pointer */
|
335 |
|
|
movel %sp,%a0@(TASK_THREAD+THREAD_KSP)
|
336 |
|
|
|
337 |
|
|
/* save floating point context */
|
338 |
|
|
#ifndef CONFIG_M68KFPU_EMU_ONLY
|
339 |
|
|
#ifdef CONFIG_M68KFPU_EMU
|
340 |
|
|
tstl SYMBOL_NAME(m68k_fputype)
|
341 |
|
|
jeq 3f
|
342 |
|
|
#endif
|
343 |
|
|
fsave %a0@(TASK_THREAD+THREAD_FPSTATE)
|
344 |
|
|
|
345 |
|
|
#if defined(CONFIG_M68060)
|
346 |
|
|
#if !defined(CPU_M68060_ONLY)
|
347 |
|
|
btst #3,SYMBOL_NAME(m68k_cputype)+3
|
348 |
|
|
beqs 1f
|
349 |
|
|
#endif
|
350 |
|
|
/* The 060 FPU keeps status in bits 15-8 of the first longword */
|
351 |
|
|
tstb %a0@(TASK_THREAD+THREAD_FPSTATE+2)
|
352 |
|
|
jeq 3f
|
353 |
|
|
#if !defined(CPU_M68060_ONLY)
|
354 |
|
|
jra 2f
|
355 |
|
|
#endif
|
356 |
|
|
#endif /* CONFIG_M68060 */
|
357 |
|
|
#if !defined(CPU_M68060_ONLY)
|
358 |
|
|
1: tstb %a0@(TASK_THREAD+THREAD_FPSTATE)
|
359 |
|
|
jeq 3f
|
360 |
|
|
#endif
|
361 |
|
|
2: fmovemx %fp0-%fp7,%a0@(TASK_THREAD+THREAD_FPREG)
|
362 |
|
|
fmoveml %fpcr/%fpsr/%fpiar,%a0@(TASK_THREAD+THREAD_FPCNTL)
|
363 |
|
|
3:
|
364 |
|
|
#endif /* CONFIG_M68KFPU_EMU_ONLY */
|
365 |
|
|
/* Return previous task in %d1 */
|
366 |
|
|
movel %curptr,%d1
|
367 |
|
|
|
368 |
|
|
/* switch to new task (a1 contains new task) */
|
369 |
|
|
movel %a1,%curptr
|
370 |
|
|
|
371 |
|
|
/* restore floating point context */
|
372 |
|
|
#ifndef CONFIG_M68KFPU_EMU_ONLY
|
373 |
|
|
#ifdef CONFIG_M68KFPU_EMU
|
374 |
|
|
tstl SYMBOL_NAME(m68k_fputype)
|
375 |
|
|
jeq 4f
|
376 |
|
|
#endif
|
377 |
|
|
#if defined(CONFIG_M68060)
|
378 |
|
|
#if !defined(CPU_M68060_ONLY)
|
379 |
|
|
btst #3,SYMBOL_NAME(m68k_cputype)+3
|
380 |
|
|
beqs 1f
|
381 |
|
|
#endif
|
382 |
|
|
/* The 060 FPU keeps status in bits 15-8 of the first longword */
|
383 |
|
|
tstb %a1@(TASK_THREAD+THREAD_FPSTATE+2)
|
384 |
|
|
jeq 3f
|
385 |
|
|
#if !defined(CPU_M68060_ONLY)
|
386 |
|
|
jra 2f
|
387 |
|
|
#endif
|
388 |
|
|
#endif /* CONFIG_M68060 */
|
389 |
|
|
#if !defined(CPU_M68060_ONLY)
|
390 |
|
|
1: tstb %a1@(TASK_THREAD+THREAD_FPSTATE)
|
391 |
|
|
jeq 3f
|
392 |
|
|
#endif
|
393 |
|
|
2: fmovemx %a1@(TASK_THREAD+THREAD_FPREG),%fp0-%fp7
|
394 |
|
|
fmoveml %a1@(TASK_THREAD+THREAD_FPCNTL),%fpcr/%fpsr/%fpiar
|
395 |
|
|
3: frestore %a1@(TASK_THREAD+THREAD_FPSTATE)
|
396 |
|
|
4:
|
397 |
|
|
#endif /* CONFIG_M68KFPU_EMU_ONLY */
|
398 |
|
|
|
399 |
|
|
/* restore the kernel stack pointer */
|
400 |
|
|
movel %a1@(TASK_THREAD+THREAD_KSP),%sp
|
401 |
|
|
|
402 |
|
|
/* restore non-scratch registers */
|
403 |
|
|
RESTORE_SWITCH_STACK
|
404 |
|
|
|
405 |
|
|
/* restore user stack pointer */
|
406 |
|
|
movel %a1@(TASK_THREAD+THREAD_USP),%a0
|
407 |
|
|
movel %a0,%usp
|
408 |
|
|
|
409 |
|
|
/* restore fs (sfc,%dfc) */
|
410 |
|
|
movew %a1@(TASK_THREAD+THREAD_FS),%a0
|
411 |
|
|
movec %a0,%sfc
|
412 |
|
|
movec %a0,%dfc
|
413 |
|
|
|
414 |
|
|
/* restore status register */
|
415 |
|
|
movew %a1@(TASK_THREAD+THREAD_SR),%sr
|
416 |
|
|
|
417 |
|
|
rts
|
418 |
|
|
|
419 |
|
|
.data
|
420 |
|
|
ALIGN
|
421 |
|
|
SYMBOL_NAME_LABEL(sys_call_table)
|
422 |
|
|
.long SYMBOL_NAME(sys_ni_syscall) /* 0 - old "setup()" system call*/
|
423 |
|
|
.long SYMBOL_NAME(sys_exit)
|
424 |
|
|
.long SYMBOL_NAME(sys_fork)
|
425 |
|
|
.long SYMBOL_NAME(sys_read)
|
426 |
|
|
.long SYMBOL_NAME(sys_write)
|
427 |
|
|
.long SYMBOL_NAME(sys_open) /* 5 */
|
428 |
|
|
.long SYMBOL_NAME(sys_close)
|
429 |
|
|
.long SYMBOL_NAME(sys_waitpid)
|
430 |
|
|
.long SYMBOL_NAME(sys_creat)
|
431 |
|
|
.long SYMBOL_NAME(sys_link)
|
432 |
|
|
.long SYMBOL_NAME(sys_unlink) /* 10 */
|
433 |
|
|
.long SYMBOL_NAME(sys_execve)
|
434 |
|
|
.long SYMBOL_NAME(sys_chdir)
|
435 |
|
|
.long SYMBOL_NAME(sys_time)
|
436 |
|
|
.long SYMBOL_NAME(sys_mknod)
|
437 |
|
|
.long SYMBOL_NAME(sys_chmod) /* 15 */
|
438 |
|
|
.long SYMBOL_NAME(sys_chown16)
|
439 |
|
|
.long SYMBOL_NAME(sys_ni_syscall) /* old break syscall holder */
|
440 |
|
|
.long SYMBOL_NAME(sys_stat)
|
441 |
|
|
.long SYMBOL_NAME(sys_lseek)
|
442 |
|
|
.long SYMBOL_NAME(sys_getpid) /* 20 */
|
443 |
|
|
.long SYMBOL_NAME(sys_mount)
|
444 |
|
|
.long SYMBOL_NAME(sys_oldumount)
|
445 |
|
|
.long SYMBOL_NAME(sys_setuid16)
|
446 |
|
|
.long SYMBOL_NAME(sys_getuid16)
|
447 |
|
|
.long SYMBOL_NAME(sys_stime) /* 25 */
|
448 |
|
|
.long SYMBOL_NAME(sys_ptrace)
|
449 |
|
|
.long SYMBOL_NAME(sys_alarm)
|
450 |
|
|
.long SYMBOL_NAME(sys_fstat)
|
451 |
|
|
.long SYMBOL_NAME(sys_pause)
|
452 |
|
|
.long SYMBOL_NAME(sys_utime) /* 30 */
|
453 |
|
|
.long SYMBOL_NAME(sys_ni_syscall) /* old stty syscall holder */
|
454 |
|
|
.long SYMBOL_NAME(sys_ni_syscall) /* old gtty syscall holder */
|
455 |
|
|
.long SYMBOL_NAME(sys_access)
|
456 |
|
|
.long SYMBOL_NAME(sys_nice)
|
457 |
|
|
.long SYMBOL_NAME(sys_ni_syscall) /* 35 */ /* old ftime syscall holder */
|
458 |
|
|
.long SYMBOL_NAME(sys_sync)
|
459 |
|
|
.long SYMBOL_NAME(sys_kill)
|
460 |
|
|
.long SYMBOL_NAME(sys_rename)
|
461 |
|
|
.long SYMBOL_NAME(sys_mkdir)
|
462 |
|
|
.long SYMBOL_NAME(sys_rmdir) /* 40 */
|
463 |
|
|
.long SYMBOL_NAME(sys_dup)
|
464 |
|
|
.long SYMBOL_NAME(sys_pipe)
|
465 |
|
|
.long SYMBOL_NAME(sys_times)
|
466 |
|
|
.long SYMBOL_NAME(sys_ni_syscall) /* old prof syscall holder */
|
467 |
|
|
.long SYMBOL_NAME(sys_brk) /* 45 */
|
468 |
|
|
.long SYMBOL_NAME(sys_setgid16)
|
469 |
|
|
.long SYMBOL_NAME(sys_getgid16)
|
470 |
|
|
.long SYMBOL_NAME(sys_signal)
|
471 |
|
|
.long SYMBOL_NAME(sys_geteuid16)
|
472 |
|
|
.long SYMBOL_NAME(sys_getegid16) /* 50 */
|
473 |
|
|
.long SYMBOL_NAME(sys_acct)
|
474 |
|
|
.long SYMBOL_NAME(sys_umount) /* recycled never used phys() */
|
475 |
|
|
.long SYMBOL_NAME(sys_ni_syscall) /* old lock syscall holder */
|
476 |
|
|
.long SYMBOL_NAME(sys_ioctl)
|
477 |
|
|
.long SYMBOL_NAME(sys_fcntl) /* 55 */
|
478 |
|
|
.long SYMBOL_NAME(sys_ni_syscall) /* old mpx syscall holder */
|
479 |
|
|
.long SYMBOL_NAME(sys_setpgid)
|
480 |
|
|
.long SYMBOL_NAME(sys_ni_syscall) /* old ulimit syscall holder */
|
481 |
|
|
.long SYMBOL_NAME(sys_ni_syscall)
|
482 |
|
|
.long SYMBOL_NAME(sys_umask) /* 60 */
|
483 |
|
|
.long SYMBOL_NAME(sys_chroot)
|
484 |
|
|
.long SYMBOL_NAME(sys_ustat)
|
485 |
|
|
.long SYMBOL_NAME(sys_dup2)
|
486 |
|
|
.long SYMBOL_NAME(sys_getppid)
|
487 |
|
|
.long SYMBOL_NAME(sys_getpgrp) /* 65 */
|
488 |
|
|
.long SYMBOL_NAME(sys_setsid)
|
489 |
|
|
.long SYMBOL_NAME(sys_sigaction)
|
490 |
|
|
.long SYMBOL_NAME(sys_sgetmask)
|
491 |
|
|
.long SYMBOL_NAME(sys_ssetmask)
|
492 |
|
|
.long SYMBOL_NAME(sys_setreuid16) /* 70 */
|
493 |
|
|
.long SYMBOL_NAME(sys_setregid16)
|
494 |
|
|
.long SYMBOL_NAME(sys_sigsuspend)
|
495 |
|
|
.long SYMBOL_NAME(sys_sigpending)
|
496 |
|
|
.long SYMBOL_NAME(sys_sethostname)
|
497 |
|
|
.long SYMBOL_NAME(sys_setrlimit) /* 75 */
|
498 |
|
|
.long SYMBOL_NAME(sys_old_getrlimit)
|
499 |
|
|
.long SYMBOL_NAME(sys_getrusage)
|
500 |
|
|
.long SYMBOL_NAME(sys_gettimeofday)
|
501 |
|
|
.long SYMBOL_NAME(sys_settimeofday)
|
502 |
|
|
.long SYMBOL_NAME(sys_getgroups16) /* 80 */
|
503 |
|
|
.long SYMBOL_NAME(sys_setgroups16)
|
504 |
|
|
.long SYMBOL_NAME(old_select)
|
505 |
|
|
.long SYMBOL_NAME(sys_symlink)
|
506 |
|
|
.long SYMBOL_NAME(sys_lstat)
|
507 |
|
|
.long SYMBOL_NAME(sys_readlink) /* 85 */
|
508 |
|
|
.long SYMBOL_NAME(sys_uselib)
|
509 |
|
|
.long SYMBOL_NAME(sys_swapon)
|
510 |
|
|
.long SYMBOL_NAME(sys_reboot)
|
511 |
|
|
.long SYMBOL_NAME(old_readdir)
|
512 |
|
|
.long SYMBOL_NAME(old_mmap) /* 90 */
|
513 |
|
|
.long SYMBOL_NAME(sys_munmap)
|
514 |
|
|
.long SYMBOL_NAME(sys_truncate)
|
515 |
|
|
.long SYMBOL_NAME(sys_ftruncate)
|
516 |
|
|
.long SYMBOL_NAME(sys_fchmod)
|
517 |
|
|
.long SYMBOL_NAME(sys_fchown16) /* 95 */
|
518 |
|
|
.long SYMBOL_NAME(sys_getpriority)
|
519 |
|
|
.long SYMBOL_NAME(sys_setpriority)
|
520 |
|
|
.long SYMBOL_NAME(sys_ni_syscall) /* old profil syscall holder */
|
521 |
|
|
.long SYMBOL_NAME(sys_statfs)
|
522 |
|
|
.long SYMBOL_NAME(sys_fstatfs) /* 100 */
|
523 |
|
|
.long SYMBOL_NAME(sys_ioperm)
|
524 |
|
|
.long SYMBOL_NAME(sys_socketcall)
|
525 |
|
|
.long SYMBOL_NAME(sys_syslog)
|
526 |
|
|
.long SYMBOL_NAME(sys_setitimer)
|
527 |
|
|
.long SYMBOL_NAME(sys_getitimer) /* 105 */
|
528 |
|
|
.long SYMBOL_NAME(sys_newstat)
|
529 |
|
|
.long SYMBOL_NAME(sys_newlstat)
|
530 |
|
|
.long SYMBOL_NAME(sys_newfstat)
|
531 |
|
|
.long SYMBOL_NAME(sys_ni_syscall)
|
532 |
|
|
.long SYMBOL_NAME(sys_ni_syscall) /* iopl for i386 */ /* 110 */
|
533 |
|
|
.long SYMBOL_NAME(sys_vhangup)
|
534 |
|
|
.long SYMBOL_NAME(sys_ni_syscall) /* obsolete idle() syscall */
|
535 |
|
|
.long SYMBOL_NAME(sys_ni_syscall) /* vm86old for i386 */
|
536 |
|
|
.long SYMBOL_NAME(sys_wait4)
|
537 |
|
|
.long SYMBOL_NAME(sys_swapoff) /* 115 */
|
538 |
|
|
.long SYMBOL_NAME(sys_sysinfo)
|
539 |
|
|
.long SYMBOL_NAME(sys_ipc)
|
540 |
|
|
.long SYMBOL_NAME(sys_fsync)
|
541 |
|
|
.long SYMBOL_NAME(sys_sigreturn)
|
542 |
|
|
.long SYMBOL_NAME(sys_clone) /* 120 */
|
543 |
|
|
.long SYMBOL_NAME(sys_setdomainname)
|
544 |
|
|
.long SYMBOL_NAME(sys_newuname)
|
545 |
|
|
.long SYMBOL_NAME(sys_cacheflush) /* modify_ldt for i386 */
|
546 |
|
|
.long SYMBOL_NAME(sys_adjtimex)
|
547 |
|
|
.long SYMBOL_NAME(sys_mprotect) /* 125 */
|
548 |
|
|
.long SYMBOL_NAME(sys_sigprocmask)
|
549 |
|
|
.long SYMBOL_NAME(sys_create_module)
|
550 |
|
|
.long SYMBOL_NAME(sys_init_module)
|
551 |
|
|
.long SYMBOL_NAME(sys_delete_module)
|
552 |
|
|
.long SYMBOL_NAME(sys_get_kernel_syms) /* 130 */
|
553 |
|
|
.long SYMBOL_NAME(sys_quotactl)
|
554 |
|
|
.long SYMBOL_NAME(sys_getpgid)
|
555 |
|
|
.long SYMBOL_NAME(sys_fchdir)
|
556 |
|
|
.long SYMBOL_NAME(sys_bdflush)
|
557 |
|
|
.long SYMBOL_NAME(sys_sysfs) /* 135 */
|
558 |
|
|
.long SYMBOL_NAME(sys_personality)
|
559 |
|
|
.long SYMBOL_NAME(sys_ni_syscall) /* for afs_syscall */
|
560 |
|
|
.long SYMBOL_NAME(sys_setfsuid16)
|
561 |
|
|
.long SYMBOL_NAME(sys_setfsgid16)
|
562 |
|
|
.long SYMBOL_NAME(sys_llseek) /* 140 */
|
563 |
|
|
.long SYMBOL_NAME(sys_getdents)
|
564 |
|
|
.long SYMBOL_NAME(sys_select)
|
565 |
|
|
.long SYMBOL_NAME(sys_flock)
|
566 |
|
|
.long SYMBOL_NAME(sys_msync)
|
567 |
|
|
.long SYMBOL_NAME(sys_readv) /* 145 */
|
568 |
|
|
.long SYMBOL_NAME(sys_writev)
|
569 |
|
|
.long SYMBOL_NAME(sys_getsid)
|
570 |
|
|
.long SYMBOL_NAME(sys_fdatasync)
|
571 |
|
|
.long SYMBOL_NAME(sys_sysctl)
|
572 |
|
|
.long SYMBOL_NAME(sys_mlock) /* 150 */
|
573 |
|
|
.long SYMBOL_NAME(sys_munlock)
|
574 |
|
|
.long SYMBOL_NAME(sys_mlockall)
|
575 |
|
|
.long SYMBOL_NAME(sys_munlockall)
|
576 |
|
|
.long SYMBOL_NAME(sys_sched_setparam)
|
577 |
|
|
.long SYMBOL_NAME(sys_sched_getparam) /* 155 */
|
578 |
|
|
.long SYMBOL_NAME(sys_sched_setscheduler)
|
579 |
|
|
.long SYMBOL_NAME(sys_sched_getscheduler)
|
580 |
|
|
.long SYMBOL_NAME(sys_sched_yield)
|
581 |
|
|
.long SYMBOL_NAME(sys_sched_get_priority_max)
|
582 |
|
|
.long SYMBOL_NAME(sys_sched_get_priority_min) /* 160 */
|
583 |
|
|
.long SYMBOL_NAME(sys_sched_rr_get_interval)
|
584 |
|
|
.long SYMBOL_NAME(sys_nanosleep)
|
585 |
|
|
.long SYMBOL_NAME(sys_mremap)
|
586 |
|
|
.long SYMBOL_NAME(sys_setresuid16)
|
587 |
|
|
.long SYMBOL_NAME(sys_getresuid16) /* 165 */
|
588 |
|
|
.long SYMBOL_NAME(sys_getpagesize)
|
589 |
|
|
.long SYMBOL_NAME(sys_query_module)
|
590 |
|
|
.long SYMBOL_NAME(sys_poll)
|
591 |
|
|
.long SYMBOL_NAME(sys_nfsservctl)
|
592 |
|
|
.long SYMBOL_NAME(sys_setresgid16) /* 170 */
|
593 |
|
|
.long SYMBOL_NAME(sys_getresgid16)
|
594 |
|
|
.long SYMBOL_NAME(sys_prctl)
|
595 |
|
|
.long SYMBOL_NAME(sys_rt_sigreturn)
|
596 |
|
|
.long SYMBOL_NAME(sys_rt_sigaction)
|
597 |
|
|
.long SYMBOL_NAME(sys_rt_sigprocmask) /* 175 */
|
598 |
|
|
.long SYMBOL_NAME(sys_rt_sigpending)
|
599 |
|
|
.long SYMBOL_NAME(sys_rt_sigtimedwait)
|
600 |
|
|
.long SYMBOL_NAME(sys_rt_sigqueueinfo)
|
601 |
|
|
.long SYMBOL_NAME(sys_rt_sigsuspend)
|
602 |
|
|
.long SYMBOL_NAME(sys_pread) /* 180 */
|
603 |
|
|
.long SYMBOL_NAME(sys_pwrite)
|
604 |
|
|
.long SYMBOL_NAME(sys_lchown16);
|
605 |
|
|
.long SYMBOL_NAME(sys_getcwd)
|
606 |
|
|
.long SYMBOL_NAME(sys_capget)
|
607 |
|
|
.long SYMBOL_NAME(sys_capset) /* 185 */
|
608 |
|
|
.long SYMBOL_NAME(sys_sigaltstack)
|
609 |
|
|
.long SYMBOL_NAME(sys_sendfile)
|
610 |
|
|
.long SYMBOL_NAME(sys_ni_syscall) /* streams1 */
|
611 |
|
|
.long SYMBOL_NAME(sys_ni_syscall) /* streams2 */
|
612 |
|
|
.long SYMBOL_NAME(sys_vfork) /* 190 */
|
613 |
|
|
.long SYMBOL_NAME(sys_getrlimit)
|
614 |
|
|
.long SYMBOL_NAME(sys_mmap2)
|
615 |
|
|
.long SYMBOL_NAME(sys_truncate64)
|
616 |
|
|
.long SYMBOL_NAME(sys_ftruncate64)
|
617 |
|
|
.long SYMBOL_NAME(sys_stat64) /* 195 */
|
618 |
|
|
.long SYMBOL_NAME(sys_lstat64)
|
619 |
|
|
.long SYMBOL_NAME(sys_fstat64)
|
620 |
|
|
.long SYMBOL_NAME(sys_chown)
|
621 |
|
|
.long SYMBOL_NAME(sys_getuid)
|
622 |
|
|
.long SYMBOL_NAME(sys_getgid) /* 200 */
|
623 |
|
|
.long SYMBOL_NAME(sys_geteuid)
|
624 |
|
|
.long SYMBOL_NAME(sys_getegid)
|
625 |
|
|
.long SYMBOL_NAME(sys_setreuid)
|
626 |
|
|
.long SYMBOL_NAME(sys_setregid)
|
627 |
|
|
.long SYMBOL_NAME(sys_getgroups) /* 205 */
|
628 |
|
|
.long SYMBOL_NAME(sys_setgroups)
|
629 |
|
|
.long SYMBOL_NAME(sys_fchown)
|
630 |
|
|
.long SYMBOL_NAME(sys_setresuid)
|
631 |
|
|
.long SYMBOL_NAME(sys_getresuid)
|
632 |
|
|
.long SYMBOL_NAME(sys_setresgid) /* 210 */
|
633 |
|
|
.long SYMBOL_NAME(sys_getresgid)
|
634 |
|
|
.long SYMBOL_NAME(sys_lchown)
|
635 |
|
|
.long SYMBOL_NAME(sys_setuid)
|
636 |
|
|
.long SYMBOL_NAME(sys_setgid)
|
637 |
|
|
.long SYMBOL_NAME(sys_setfsuid) /* 215 */
|
638 |
|
|
.long SYMBOL_NAME(sys_setfsgid)
|
639 |
|
|
.long SYMBOL_NAME(sys_pivot_root)
|
640 |
|
|
.long SYMBOL_NAME(sys_ni_syscall)
|
641 |
|
|
.long SYMBOL_NAME(sys_ni_syscall)
|
642 |
|
|
.long SYMBOL_NAME(sys_getdents64) /* 220 */
|
643 |
|
|
.long SYMBOL_NAME(sys_gettid)
|
644 |
|
|
.long SYMBOL_NAME(sys_tkill)
|
645 |
|
|
.long SYMBOL_NAME(sys_setxattr)
|
646 |
|
|
.long SYMBOL_NAME(sys_lsetxattr)
|
647 |
|
|
.long SYMBOL_NAME(sys_fsetxattr) /* 225 */
|
648 |
|
|
.long SYMBOL_NAME(sys_getxattr)
|
649 |
|
|
.long SYMBOL_NAME(sys_lgetxattr)
|
650 |
|
|
.long SYMBOL_NAME(sys_fgetxattr)
|
651 |
|
|
.long SYMBOL_NAME(sys_listxattr)
|
652 |
|
|
.long SYMBOL_NAME(sys_llistxattr) /* 230 */
|
653 |
|
|
.long SYMBOL_NAME(sys_flistxattr)
|
654 |
|
|
.long SYMBOL_NAME(sys_removexattr)
|
655 |
|
|
.long SYMBOL_NAME(sys_lremovexattr)
|
656 |
|
|
.long SYMBOL_NAME(sys_fremovexattr)
|
657 |
|
|
|
658 |
|
|
.rept NR_syscalls-(.-SYMBOL_NAME(sys_call_table))/4
|
659 |
|
|
.long SYMBOL_NAME(sys_ni_syscall)
|
660 |
|
|
.endr
|