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
84
85
86
87
88
|
$NetBSD: patch-bn,v 1.3 1999/09/10 20:38:23 bad Exp $
--- /dev/null Fri Sep 10 15:38:20 1999
+++ machdep/syscall-m68000-netbsd.S Fri Sep 10 20:57:21 1999
@@ -0,0 +1,83 @@
+
+#ifndef lint
+ .text
+ .asciz "$Id: patch-bn,v 1.3 1999/09/10 20:38:23 bad Exp $";
+#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_sigsuspend,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_sigprocmask,d0
+ trap #0
+ jcs err
+ tstl sp@(12)
+ jeq out
+ movl sp@(12),a0
+ movl d0,a0@
+out:
+ clrl d0
+ rts
+#endif
|