Machine-Independent MDL for TOPS-20 and VAX.
[pdp10-muddle.git] / mim / development / mim / vaxc / chmks.mud
1 <NEWTYPE CHMK FIX>
2
3 <SETG CHMKS-OBLIST <MOBLIST CHMK>>
4
5 <DEFINE XMSETG (A B)
6         <SET B <CHTYPE .B CHMK>>
7         <MSETG <SET A <OR <LOOKUP .A ,CHMKS-OBLIST>
8                           <INSERT .A ,CHMKS-OBLIST>>> .B>
9         (.A .B)>
10
11 <COND (<GASSIGNED? XMSETG>
12 <SETG ALL-CHMKS [ <XMSETG "EXIT" 1>
13                   <XMSETG "FORK" 2>
14                   <XMSETG "READ" 3>
15                   <XMSETG "WRITE" 4>
16                   <XMSETG "OPEN" 5>
17                   <XMSETG "CLOSE" 6>
18                   ;<XMSETG "WAIT" 7>
19                   <XMSETG "CREAT" 8>
20                   <XMSETG "LINK" 9>
21                   <XMSETG "UNLINK" 10>
22                   <XMSETG "EXEC" 11>
23                   <XMSETG "CHDIR" 12>
24                   ;<XMSETG "TIME" 13>
25                   <XMSETG "MKNOD" 14>
26                   <XMSETG "CHMOD" 15>
27                   <XMSETG "CHOWN" 16>
28                   ;<XMSETG "BREAK" 17>
29                   ;<XMSETG "STAT" 18>
30                   <XMSETG "LSEEK" 19>
31                   <XMSETG "GETPID" 20>
32                   <XMSETG "MOUNT" 21>
33                   <XMSETG "UMOUNT" 22>
34                   ;<XMSETG "SETUID" 23>
35                   <XMSETG "GETUID" 24>
36                   ;<XMSETG "STIME" 25>
37                   <XMSETG "PTRACE" 26>
38                   ;<XMSETG "ALARM" 27>
39                   ;<XMSETG "FSTAT" 28>
40                   ;<XMSETG "PAUSE" 29>
41                   ;<XMSETG "UTIME" 30>
42                   ;<XMSETG "STTY" 31>
43                   ;<XMSETG "GTTY" 32>
44                   <XMSETG "ACCESS" 33>
45                   ;<XMSETG "NICE" 34>
46                   ;<XMSETG "FTIME" 35>
47                   <XMSETG "SYNC" 36>
48                   <XMSETG "KILL" 37>
49                   <XMSETG "STAT" 38>
50                   ;<XMSETG "SETPGRP" 39>
51                   <XMSETG "LSTAT" 40>
52                   <XMSETG "DUP" 41>
53                   <XMSETG "PIPE" 42>
54                   ;<XMSETG "TIMES" 43>
55                   <XMSETG "PROFIL" 44>
56                   ;<XMSETG "SETGID" 46>
57                   <XMSETG "GETGID" 47>
58                   ;<XMSETG "SIGNAL" 48>
59                   <XMSETG "ACCT" 51>
60                   ;<XMSETG "PHYS" 52>
61                   ;<XMSETG "LOCK" 53>
62                   <XMSETG "IOCTL" 54>
63                   <XMSETG "REBOOT" 55>
64                   ;<XMSETG "MPX" 56>
65                   <XMSETG "SYMLINK" 57>
66                   <XMSETG "READLINK" 58>
67                   <XMSETG "EXECVE" 59>
68                   <XMSETG "UMASK" 60>
69                   <XMSETG "CHROOT" 61>
70                   <XMSETG "FSTAT" 62>
71                   <XMSETG "GETPAGESIZE" 64>
72                   <XMSETG "MREMAP" 65>
73                   <XMSETG "VFORK" 66>
74                   ;<XMSETG "VREAD" 67>
75                   ;<XMSETG "VWRITE" 68>
76                   <XMSETG "SBRK" 69>
77                   <XMSETG "SSTK" 70>
78                   <XMSETG "MMAP" 71>
79                   <XMSETG "VADVISE" 72>
80                   <XMSETG "VHANGUP" 76>
81                   ;<XMSETG "VLIMIT" 77>
82                   <XMSETG "MINCORE" 78>
83                   <XMSETG "GETGROUPS" 79>
84                   <XMSETG "SETGROUPS" 80>
85                   <XMSETG "GETPGRP" 81>
86                   <XMSETG "SETPGRP" 82>
87                   <XMSETG "SETITIMER" 83>
88                   <XMSETG "WAIT" 84>
89                   <XMSETG "VSWAPON" 85>
90                   <XMSETG "GETITIMER" 86>
91                   <XMSETG "GETHOSTNAME" 87>
92                   <XMSETG "SETHOSTNAME" 88>
93                   <XMSETG "GETDTABLESIZE" 89>
94                   <XMSETG "DUP2" 90>
95                   <XMSETG "GETDOPT" 91>
96                   <XMSETG "FCNTL" 92>
97                   <XMSETG "SELECT" 93>
98                   <XMSETG "SETDOPT" 94>
99                   <XMSETG "FSYNC" 95>
100                   <XMSETG "SETPRIORITY" 96>
101                   <XMSETG "SOCKET" 97>
102                   <XMSETG "CONNECT" 98>
103                   <XMSETG "ACCEPT" 99>
104                   <XMSETG "GETPRIORITY" 100>
105                   <XMSETG "SEND" 101>
106                   <XMSETG "RECV" 102>
107                   <XMSETG "BIND" 104>
108                   <XMSETG "SETSOCKOPT" 105>
109                   <XMSETG "LISTEN" 106>
110                   <XMSETG "VTIMES" 107>
111                   <XMSETG "SIGVEC" 108>
112                   <XMSETG "SIGBLOCK" 109>
113                   <XMSETG "SIGSETMASK" 110>
114                   <XMSETG "SIGPAUSE" 111>
115                   <XMSETG "SIGSTACK" 112>
116                   <XMSETG "RECVMSG" 113>
117                   <XMSETG "SENDMSG" 114>
118                   <XMSETG "GETTIMEOFDAY" 116>
119                   <XMSETG "GETRUSAGE" 117>
120                   <XMSETG "GETSOCKOPT" 118>
121                   <XMSETG "READV" 120>
122                   <XMSETG "WRITEV" 121>
123                   <XMSETG "SETTIMEOFDAY" 122>
124                   <XMSETG "FCHOWN" 123>
125                   <XMSETG "FCHMOD" 124>
126                   <XMSETG "RECVFROM" 125>
127                   <XMSETG "SETREUID" 126>
128                   <XMSETG "SETREGID" 127>
129                   <XMSETG "RENAME" 128>
130                   <XMSETG "TRUNCATE" 129>
131                   <XMSETG "FTRUNCATE" 130>
132                   <XMSETG "FLOCK" 131>
133                   <XMSETG "SENDTO" 133>
134                   <XMSETG "SHUTDOWN" 134>
135                   <XMSETG "SOCKETPAIR" 135>
136                   <XMSETG "MKDIR" 136>
137                   <XMSETG "RMDIR" 137>
138                   <XMSETG "UTIMES" 138>
139                   <XMSETG "REVOKE" 140>
140                   <XMSETG "GETPEERNAME" 141>
141                   <XMSETG "GETHOSTID" 142>
142                   <XMSETG "SETHOSTID" 143>
143                   <XMSETG "GETRLIMIT" 144>
144                   <XMSETG "SETRLIMIT" 145>
145                   <XMSETG "KILLPG" 146>
146                   <XMSETG "SETQUOTA" 148>
147                   <XMSETG "QUOTA" 149>
148                   <XMSETG "GETSOCKNAME" 150>]>)>
149
150
151 <DEFINE SYSCALL-GEN (DISPCODE NUMARG "OPT" (RES <>) HINT TYP "AUX" ATM NUM)
152         <COND (<OR <AND <TYPE? .DISPCODE ATOM>
153                         <TYPE? <SET ATM <LOOKUP <SPNAME .DISPCODE>
154                                                 ,CHMKS-OBLIST>>
155                                ATOM>
156                         <GASSIGNED? .ATM>
157                         <TYPE? <SET NUM ,.ATM> CHMK>>
158                    <AND <TYPE? <SET NUM .DISPCODE> FIX CHMK>
159                         <SET ATM <MAPF <>
160                                        <FUNCTION (A)
161                                             #DECL ((A) <LIST ATOM FIX>)
162                                             <COND (<==? <2 .A> .NUM>
163                                                    <MAPLEAVE <1 .A>>)>>
164                                        ,ALL-CHMKS>>>
165                    <TYPE? .NUM VARTBL>>
166                <COND (<==? .NUM ,VFORK!-CHMK>
167                       <DO-VFORK .RES>)
168                      (<CALL-RTE ,ISYSCALL!-MIMOP CALL .RES <> .NUMARG .NUM>)>)
169               (ELSE
170                <ERROR BAD-SYSCALL!-ERRORS>)>
171         NORMAL>
172
173 <DEFINE DO-VFORK (RES "AUX" (LABEL <MAKE-LABEL>) LV)
174   #DECL ((RES) <OR VARTBL FALSE>)
175   <FLUSH-ACS>
176   <EMIT ,INST-CHMK <MA-IMM ,VFORK!-CHMK>>
177   <COND (.RES
178          <EMIT-MOVE <MA-REG ,AC-0> <MA-REG ,AC-1> LONG>
179          <EMIT-MOVE <TYPE-CODE FIX> <MA-REG ,AC-0> LONG>
180          <SET LV <LINK-VAR-TO-AC .RES ,AC-0 TYPE-VALUE-PAIR>>
181          <GEN-BRANCH ,INST-BCC .LABEL CONDITIONAL-BRANCH>
182          <CONS-GEN .RES () .RES FALSE>
183          <EMIT-MOVE <TYPE-CODE FALSE> <MA-REG ,AC-0> LONG>
184          <LINKVAR-DECL <LINK-VAR-TO-AC .RES ,AC-0 TYPE-VALUE-PAIR> <>>
185          <VARTBL-RDECL .RES <>>
186          <VARTBL-TDECL .RES <>>
187          <EMIT-LABEL .LABEL <>>)
188         (T
189          <GEN-BRANCH ,INST-BCC .LABEL <>>
190          <CALL-RTE ,ICOMPERR!-MIMOP CALL <> <>>
191          <EMIT-LABEL .LABEL <>>)>>
192
193 <DEFINE PIPE-GEN (UVEC "OPTIONAL" (RES <>))
194   <CALL-RTE ,IPIPE!-MIMOP CALL .RES <> .UVEC>>