First steps toward getting full system to work with
[gem5.git] / kern / tru64 / tru64_syscalls.hh
1 /*
2 * Copyright (c) 2003-2005 The Regents of The University of Michigan
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;
9 * redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution;
12 * neither the name of the copyright holders nor the names of its
13 * contributors may be used to endorse or promote products derived from
14 * this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29 #ifndef __KERN_TRU64_TRU64_SYSCALLS_HH__
30 #define __KERN_TRU64_TRU64_SYSCALLS_HH__
31
32 #include "kern/tru64/tru64.hh"
33
34 template <class OS>
35 class SystemCalls;
36
37 template <>
38 class SystemCalls<Tru64>
39 {
40 public:
41 enum {
42 syscall = 0,
43 exit = 1,
44 fork = 2,
45 read = 3,
46 write = 4,
47 old_open = 5,
48 close = 6,
49 wait4 = 7,
50 old_creat = 8,
51 link = 9,
52 unlink = 10,
53 execv = 11,
54 chdir = 12,
55 fchdir = 13,
56 mknod = 14,
57 chmod = 15,
58 chown = 16,
59 obreak = 17,
60 pre_F64_getfsstat = 18,
61 lseek = 19,
62 getpid = 20,
63 mount = 21,
64 unmount = 22,
65 setuid = 23,
66 getuid = 24,
67 exec_with_loader = 25,
68 ptrace = 26,
69 recvmsg = 27,
70 sendmsg = 28,
71 recvfrom = 29,
72 accept = 30,
73 getpeername = 31,
74 getsockname = 32,
75 access = 33,
76 chflags = 34,
77 fchflags = 35,
78 sync = 36,
79 kill = 37,
80 old_stat = 38,
81 setpgid = 39,
82 old_lstat = 40,
83 dup = 41,
84 pipe = 42,
85 set_program_attributes = 43,
86 profil = 44,
87 open = 45,
88 obsolete_osigaction = 46,
89 getgid = 47,
90 sigprocmask = 48,
91 getlogin = 49,
92 setlogin = 50,
93 acct = 51,
94 sigpending = 52,
95 classcntl = 53,
96 ioctl = 54,
97 reboot = 55,
98 revoke = 56,
99 symlink = 57,
100 readlink = 58,
101 execve = 59,
102 umask = 60,
103 chroot = 61,
104 old_fstat = 62,
105 getpgrp = 63,
106 getpagesize = 64,
107 mremap = 65,
108 vfork = 66,
109 pre_F64_stat = 67,
110 pre_F64_lstat = 68,
111 sbrk = 69,
112 sstk = 70,
113 mmap = 71,
114 ovadvise = 72,
115 munmap = 73,
116 mprotect = 74,
117 madvise = 75,
118 old_vhangup = 76,
119 kmodcall = 77,
120 mincore = 78,
121 getgroups = 79,
122 setgroups = 80,
123 old_getpgrp = 81,
124 setpgrp = 82,
125 setitimer = 83,
126 old_wait = 84,
127 table = 85,
128 getitimer = 86,
129 gethostname = 87,
130 sethostname = 88,
131 getdtablesize = 89,
132 dup2 = 90,
133 pre_F64_fstat = 91,
134 fcntl = 92,
135 select = 93,
136 poll = 94,
137 fsync = 95,
138 setpriority = 96,
139 socket = 97,
140 connect = 98,
141 old_accept = 99,
142 getpriority = 100,
143 old_send = 101,
144 old_recv = 102,
145 sigreturn = 103,
146 bind = 104,
147 setsockopt = 105,
148 listen = 106,
149 plock = 107,
150 old_sigvec = 108,
151 old_sigblock = 109,
152 old_sigsetmask = 110,
153 sigsuspend = 111,
154 sigstack = 112,
155 old_recvmsg = 113,
156 old_sendmsg = 114,
157 obsolete_vtrcae = 115,
158 gettimeofday = 116,
159 getrusage = 117,
160 getsockopt = 118,
161 numa_syscalls = 119,
162 readv = 120,
163 writev = 121,
164 settimeofday = 122,
165 fchown = 123,
166 fchmod = 124,
167 old_recvfrom = 125,
168 setreuid = 126,
169 setregid = 127,
170 rename = 128,
171 truncate = 129,
172 ftruncate = 130,
173 flock = 131,
174 setgid = 132,
175 sendto = 133,
176 shutdown = 134,
177 socketpair = 135,
178 mkdir = 136,
179 rmdir = 137,
180 utimes = 138,
181 obsolete_42_sigreturn = 139,
182 adjtime = 140,
183 old_getpeername = 141,
184 gethostid = 142,
185 sethostid = 143,
186 getrlimit = 144,
187 setrlimit = 145,
188 old_killpg = 146,
189 setsid = 147,
190 quotactl = 148,
191 oldquota = 149,
192 old_getsockname = 150,
193 pread = 151,
194 pwrite = 152,
195 pid_block = 153,
196 pid_unblock = 154,
197 signal_urti = 155,
198 sigaction = 156,
199 sigwaitprim = 157,
200 nfssvc = 158,
201 getdirentries = 159,
202 pre_F64_statfs = 160,
203 pre_F64_fstatfs = 161,
204 async_daemon = 163,
205 getfh = 164,
206 getdomainname = 165,
207 setdomainname = 166,
208 exportfs = 169,
209 alt_plock = 181,
210 getmnt = 184,
211 alt_sigpending = 187,
212 alt_setsid = 188,
213 swapon = 199,
214 msgctl = 200,
215 msgget = 201,
216 msgrcv = 202,
217 msgsnd = 203,
218 semctl = 204,
219 semget = 205,
220 semop = 206,
221 uname = 207,
222 lchown = 208,
223 shmat = 209,
224 shmctl = 210,
225 shmdt = 211,
226 shmget = 212,
227 mvalid = 213,
228 getaddressconf = 214,
229 msleep = 215,
230 mwakeup = 216,
231 msync = 217,
232 signal = 218,
233 utc_gettime = 219,
234 utc_adjtime = 220,
235 security = 222,
236 kloadcall = 223,
237 stat = 224,
238 lstat = 225,
239 fstat = 226,
240 statfs = 227,
241 fstatfs = 228,
242 getfsstat = 229,
243 gettimeofday64 = 230,
244 settimeofday64 = 231,
245 getpgid = 233,
246 getsid = 234,
247 sigaltstack = 235,
248 waitid = 236,
249 priocntlset = 237,
250 sigsendset = 238,
251 set_speculative = 239,
252 msfs_syscall = 240,
253 sysinfo = 241,
254 uadmin = 242,
255 fuser = 243,
256 proplist_syscall = 244,
257 ntp_adjtime = 245,
258 ntp_gettime = 246,
259 pathconf = 247,
260 fpathconf = 248,
261 sync2 = 249,
262 uswitch = 250,
263 usleep_thread = 251,
264 audcntl = 252,
265 audgen = 253,
266 sysfs = 254,
267 subsys_info = 255,
268 getsysinfo = 256,
269 setsysinfo = 257,
270 afs_syscall = 258,
271 swapctl = 259,
272 memcntl = 260,
273 fdatasync = 261,
274 oflock = 262,
275 _F64_readv = 263,
276 _F64_writev = 264,
277 cdslxlate = 265,
278 sendfile = 266,
279 StandardNumber
280 };
281
282 enum {
283 task_self = 10,
284 thread_reply = 11,
285 task_notify = 12,
286 thread_self = 13,
287 msg_send_trap = 20,
288 msg_receive_trap = 21,
289 msg_rpc_trap = 22,
290 nxm_block = 24,
291 nxm_unblock = 25,
292 nxm_thread_destroy = 29,
293 lw_wire = 30,
294 lw_unwire = 31,
295 nxm_thread_create = 32,
296 nxm_task_init = 33,
297 nxm_idle = 35,
298 nxm_wakeup_idle = 36,
299 nxm_set_pthid = 37,
300 nxm_thread_kill = 38,
301 nxm_thread_block = 39,
302 nxm_thread_wakeup = 40,
303 init_process = 41,
304 nxm_get_binding = 42,
305 map_fd = 43,
306 nxm_resched = 44,
307 nxm_set_cancel = 45,
308 nxm_set_binding = 46,
309 stack_create = 47,
310 nxm_get_state = 48,
311 nxm_thread_suspend = 49,
312 nxm_thread_resume = 50,
313 nxm_signal_check = 51,
314 htg_unix_syscall = 52,
315 host_self = 55,
316 host_priv_self = 56,
317 swtch_pri = 59,
318 swtch = 60,
319 thread_switch = 61,
320 semop_fast = 62,
321 nxm_pshared_init = 63,
322 nxm_pshared_block = 64,
323 nxm_pshared_unblock = 65,
324 nxm_pshared_destroy = 66,
325 nxm_swtch_pri = 67,
326 lw_syscall = 68,
327 mach_sctimes_0 = 70,
328 mach_sctimes_1 = 71,
329 mach_sctimes_2 = 72,
330 mach_sctimes_3 = 73,
331 mach_sctimes_4 = 74,
332 mach_sctimes_5 = 75,
333 mach_sctimes_6 = 76,
334 mach_sctimes_7 = 77,
335 mach_sctimes_8 = 78,
336 mach_sctimes_9 = 79,
337 mach_sctimes_10 = 80,
338 mach_sctimes_11 = 81,
339 mach_sctimes_port_alloc_dealloc = 82,
340 MachNumber
341 };
342
343 static const int Number = StandardNumber + MachNumber;
344
345 static const char *name(int num);
346
347 static bool validSyscallNumber(int num) {
348 return -MachNumber < num && num < StandardNumber;
349 }
350
351 static int convert(int syscall_num) {
352 if (!validSyscallNumber(syscall_num))
353 return -1;
354
355 return syscall_num < 0 ? StandardNumber - syscall_num : syscall_num;
356 }
357 };
358
359 #endif // __KERN_TRU64_TRU64_SYSCALLS_HH__