1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
#ifndef lint
.text
.asciz "$Id$";
#endif
#include <machine/asm.h>
#include <sys/syscall.h>
#ifdef __STDC__
#define IMM #
#define SYSCALL(x) .even; ENTRY(machdep_sys_ ## x); \
movl IMM SYS_ ## x,d0; trap IMM 0; jcs err; rts
#else /* !__STDC__ */
#define SYSCALL(x) .even; ENTRY(machdep_sys_/**/x); \
movl #SYS_/**/x,d0; trap #0; jcs err; rts
#endif /* !__STDC__ */
/*
* Initial asm stuff for all functions.
*/
.text
.even
/* ==========================================================================
* error code for all syscalls. The error value is returned as the negative
* of the errno value.
*/
err:
negl d0
rts
/* ==========================================================================
* machdep_sys_pipe
*/
.even
ENTRY(machdep_sys_pipe);
movl #SYS_pipe,d0
trap #0
jcs err
movl sp@(4),a0
movl d0,a0@+
movl d1,a0@
clrl d0
rts
#ifndef SYS___sigsuspend14
.even
ENTRY(machdep_sys_sigsuspend)
movl sp@(4),a0
movl a0@,sp@(4)
movl #SYS_compat_13_sigsuspend13,d0
trap #0
jcs err
clrl d0
rts
#endif
#ifndef SYS___sigprocmask14
.even
ENTRY(machdep_sys_sigprocmask)
tstl sp@(8)
jne gotptr
/* movl #0,sp@(8) /* null mask pointer; block empty set */
movl #1,sp@(4)
jra doit
gotptr:
movl sp@(8),a0
movl a0@,sp@(8)
doit:
movl #SYS_compat_13_sigprocmask13,d0
trap #0
jcs err
tstl sp@(12)
jeq out
movl sp@(12),a0
movl d0,a0@
out:
clrl d0
rts
#endif
|