process.cc (5981:5e7899a2692f) process.cc (6378:4a2ff62c3b4f)
1/*
2 * Copyright (c) 2005 The Regents of The University of Michigan
3 * Copyright (c) 2007 MIPS Technologies, Inc.
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are
8 * met: redistributions of source code must retain the above copyright

--- 60 unchanged lines hidden (view full) ---

69static SyscallReturn
70sys_getsysinfoFunc(SyscallDesc *desc, int callnum, LiveProcess *process,
71 ThreadContext *tc)
72{
73 unsigned op = process->getSyscallArg(tc, 0);
74 // unsigned nbytes = process->getSyscallArg(tc, 2);
75
76 switch (op) {
1/*
2 * Copyright (c) 2005 The Regents of The University of Michigan
3 * Copyright (c) 2007 MIPS Technologies, Inc.
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are
8 * met: redistributions of source code must retain the above copyright

--- 60 unchanged lines hidden (view full) ---

69static SyscallReturn
70sys_getsysinfoFunc(SyscallDesc *desc, int callnum, LiveProcess *process,
71 ThreadContext *tc)
72{
73 unsigned op = process->getSyscallArg(tc, 0);
74 // unsigned nbytes = process->getSyscallArg(tc, 2);
75
76 switch (op) {
77
78 case 45: { // GSI_IEEE_FP_CONTROL
79 TypedBufferArg<uint64_t> fpcr(process->getSyscallArg(tc, 1));
80 // I don't think this exactly matches the HW FPCR
81 *fpcr = 0;
82 fpcr.copyOut(tc->getMemPort());
83 return 0;
84 }
85
77 case 45:
78 {
79 // GSI_IEEE_FP_CONTROL
80 TypedBufferArg<uint64_t> fpcr(process->getSyscallArg(tc, 1));
81 // I don't think this exactly matches the HW FPCR
82 *fpcr = 0;
83 fpcr.copyOut(tc->getMemPort());
84 return 0;
85 }
86 default:
87 cerr << "sys_getsysinfo: unknown op " << op << endl;
88 abort();
89 break;
90 }
91
92 return 1;
93}
94
95/// Target sys_setsysinfo() handler.
96static SyscallReturn
97sys_setsysinfoFunc(SyscallDesc *desc, int callnum, LiveProcess *process,
98 ThreadContext *tc)
99{
100 unsigned op = process->getSyscallArg(tc, 0);
101 // unsigned nbytes = process->getSyscallArg(tc, 2);
102
103 switch (op) {
104
86 default:
87 cerr << "sys_getsysinfo: unknown op " << op << endl;
88 abort();
89 break;
90 }
91
92 return 1;
93}
94
95/// Target sys_setsysinfo() handler.
96static SyscallReturn
97sys_setsysinfoFunc(SyscallDesc *desc, int callnum, LiveProcess *process,
98 ThreadContext *tc)
99{
100 unsigned op = process->getSyscallArg(tc, 0);
101 // unsigned nbytes = process->getSyscallArg(tc, 2);
102
103 switch (op) {
104
105 case 14: { // SSI_IEEE_FP_CONTROL
106 TypedBufferArg<uint64_t> fpcr(process->getSyscallArg(tc, 1));
107 // I don't think this exactly matches the HW FPCR
108 fpcr.copyIn(tc->getMemPort());
109 DPRINTFR(SyscallVerbose, "sys_setsysinfo(SSI_IEEE_FP_CONTROL): "
105 case 14:
106 {
107 // SSI_IEEE_FP_CONTROL
108 TypedBufferArg<uint64_t> fpcr(process->getSyscallArg(tc, 1));
109 // I don't think this exactly matches the HW FPCR
110 fpcr.copyIn(tc->getMemPort());
111 DPRINTFR(SyscallVerbose, "sys_setsysinfo(SSI_IEEE_FP_CONTROL): "
110 " setting FPCR to 0x%x\n", gtoh(*(uint64_t*)fpcr));
112 " setting FPCR to 0x%x\n", gtoh(*(uint64_t*)fpcr));
111 return 0;
112 }
113
113 return 0;
114 }
114 default:
115 cerr << "sys_setsysinfo: unknown op " << op << endl;
116 abort();
117 break;
118 }
119
120 return 1;
121}

--- 69 unchanged lines hidden (view full) ---

191 /* 67 */ SyscallDesc("sigaction",unimplementedFunc),
192 /* 68 */ SyscallDesc("sgetmask", unimplementedFunc),
193 /* 69 */ SyscallDesc("ssetmask", unimplementedFunc),
194 /* 70 */ SyscallDesc("setreuid", unimplementedFunc),
195 /* 71 */ SyscallDesc("setregid", unimplementedFunc),
196 /* 72 */ SyscallDesc("sigsuspend", unimplementedFunc),
197 /* 73 */ SyscallDesc("sigpending", unimplementedFunc),
198 /* 74 */ SyscallDesc("sethostname", ignoreFunc),
115 default:
116 cerr << "sys_setsysinfo: unknown op " << op << endl;
117 abort();
118 break;
119 }
120
121 return 1;
122}

--- 69 unchanged lines hidden (view full) ---

192 /* 67 */ SyscallDesc("sigaction",unimplementedFunc),
193 /* 68 */ SyscallDesc("sgetmask", unimplementedFunc),
194 /* 69 */ SyscallDesc("ssetmask", unimplementedFunc),
195 /* 70 */ SyscallDesc("setreuid", unimplementedFunc),
196 /* 71 */ SyscallDesc("setregid", unimplementedFunc),
197 /* 72 */ SyscallDesc("sigsuspend", unimplementedFunc),
198 /* 73 */ SyscallDesc("sigpending", unimplementedFunc),
199 /* 74 */ SyscallDesc("sethostname", ignoreFunc),
199 /* 75 */ SyscallDesc("setrlimit", unimplementedFunc/*setrlimitFunc<MipsLinux>*/),
200 /* 76 */ SyscallDesc("getrlimit", unimplementedFunc/*getrlimitFunc<MipsLinux>*/),
200 /* 75 */ SyscallDesc("setrlimit", unimplementedFunc),
201 /* 76 */ SyscallDesc("getrlimit", unimplementedFunc),
201 /* 77 */ SyscallDesc("getrusage", getrusageFunc<MipsLinux>),
202 /* 78 */ SyscallDesc("gettimeofday", unimplementedFunc),
203 /* 79 */ SyscallDesc("settimeofday", unimplementedFunc),
204 /* 80 */ SyscallDesc("getgroups", unimplementedFunc),
205 /* 81 */ SyscallDesc("setgroups", unimplementedFunc),
206 /* 82 */ SyscallDesc("reserved#82", unimplementedFunc),
207 /* 83 */ SyscallDesc("symlink", unimplementedFunc),
208 /* 84 */ SyscallDesc("unused#84", unimplementedFunc),

--- 27 unchanged lines hidden (view full) ---

236 /* 112 */ SyscallDesc("idle", ignoreFunc),
237 /* 113 */ SyscallDesc("vm86", unimplementedFunc),
238 /* 114 */ SyscallDesc("wait4", unimplementedFunc),
239 /* 115 */ SyscallDesc("swapoff", unimplementedFunc),
240 /* 116 */ SyscallDesc("sysinfo", unimplementedFunc),
241 /* 117 */ SyscallDesc("ipc", unimplementedFunc),
242 /* 118 */ SyscallDesc("fsync", unimplementedFunc),
243 /* 119 */ SyscallDesc("sigreturn", unimplementedFunc),
202 /* 77 */ SyscallDesc("getrusage", getrusageFunc<MipsLinux>),
203 /* 78 */ SyscallDesc("gettimeofday", unimplementedFunc),
204 /* 79 */ SyscallDesc("settimeofday", unimplementedFunc),
205 /* 80 */ SyscallDesc("getgroups", unimplementedFunc),
206 /* 81 */ SyscallDesc("setgroups", unimplementedFunc),
207 /* 82 */ SyscallDesc("reserved#82", unimplementedFunc),
208 /* 83 */ SyscallDesc("symlink", unimplementedFunc),
209 /* 84 */ SyscallDesc("unused#84", unimplementedFunc),

--- 27 unchanged lines hidden (view full) ---

237 /* 112 */ SyscallDesc("idle", ignoreFunc),
238 /* 113 */ SyscallDesc("vm86", unimplementedFunc),
239 /* 114 */ SyscallDesc("wait4", unimplementedFunc),
240 /* 115 */ SyscallDesc("swapoff", unimplementedFunc),
241 /* 116 */ SyscallDesc("sysinfo", unimplementedFunc),
242 /* 117 */ SyscallDesc("ipc", unimplementedFunc),
243 /* 118 */ SyscallDesc("fsync", unimplementedFunc),
244 /* 119 */ SyscallDesc("sigreturn", unimplementedFunc),
244 /* 120 */ SyscallDesc("clone", unimplementedFunc/*cloneFunc<MipsLinux>*/),
245 /* 120 */ SyscallDesc("clone", unimplementedFunc),
245 /* 121 */ SyscallDesc("setdomainname", unimplementedFunc),
246 /* 122 */ SyscallDesc("uname", unameFunc),
247 /* 123 */ SyscallDesc("modify_ldt", unimplementedFunc),
248 /* 124 */ SyscallDesc("adjtimex", unimplementedFunc),
249 /* 125 */ SyscallDesc("mprotect", ignoreFunc),
250 /* 126 */ SyscallDesc("sigprocmask", unimplementedFunc),
251 /* 127 */ SyscallDesc("create_module", unimplementedFunc),
252 /* 128 */ SyscallDesc("init_module", unimplementedFunc),

--- 57 unchanged lines hidden (view full) ---

310 /* 186 */ SyscallDesc("getresuid", unimplementedFunc),
311 /* 187 */ SyscallDesc("query_module", unimplementedFunc),
312 /* 188 */ SyscallDesc("poll", unimplementedFunc),
313 /* 189 */ SyscallDesc("nfsservctl", unimplementedFunc),
314 /* 190 */ SyscallDesc("setresgid", unimplementedFunc),
315 /* 191 */ SyscallDesc("getresgid", unimplementedFunc),
316 /* 192 */ SyscallDesc("prctl", unimplementedFunc),
317 /* 193 */ SyscallDesc("rt_sigreturn", unimplementedFunc),
246 /* 121 */ SyscallDesc("setdomainname", unimplementedFunc),
247 /* 122 */ SyscallDesc("uname", unameFunc),
248 /* 123 */ SyscallDesc("modify_ldt", unimplementedFunc),
249 /* 124 */ SyscallDesc("adjtimex", unimplementedFunc),
250 /* 125 */ SyscallDesc("mprotect", ignoreFunc),
251 /* 126 */ SyscallDesc("sigprocmask", unimplementedFunc),
252 /* 127 */ SyscallDesc("create_module", unimplementedFunc),
253 /* 128 */ SyscallDesc("init_module", unimplementedFunc),

--- 57 unchanged lines hidden (view full) ---

311 /* 186 */ SyscallDesc("getresuid", unimplementedFunc),
312 /* 187 */ SyscallDesc("query_module", unimplementedFunc),
313 /* 188 */ SyscallDesc("poll", unimplementedFunc),
314 /* 189 */ SyscallDesc("nfsservctl", unimplementedFunc),
315 /* 190 */ SyscallDesc("setresgid", unimplementedFunc),
316 /* 191 */ SyscallDesc("getresgid", unimplementedFunc),
317 /* 192 */ SyscallDesc("prctl", unimplementedFunc),
318 /* 193 */ SyscallDesc("rt_sigreturn", unimplementedFunc),
318 /* 194 */ SyscallDesc("rt_sigaction", unimplementedFunc/*rt_sigactionFunc<MipsLinux>*/),
319 /* 195 */ SyscallDesc("rt_sigprocmask", unimplementedFunc/*rt_sigprocmaskFunc<MipsLinux>*/),
319 /* 194 */ SyscallDesc("rt_sigaction", unimplementedFunc),
320 /* 195 */ SyscallDesc("rt_sigprocmask", unimplementedFunc),
320 /* 196 */ SyscallDesc("rt_sigpending", unimplementedFunc),
321 /* 197 */ SyscallDesc("rt_sigtimedwait", unimplementedFunc),
322 /* 198 */ SyscallDesc("rt_sigqueueinfo", ignoreFunc),
321 /* 196 */ SyscallDesc("rt_sigpending", unimplementedFunc),
322 /* 197 */ SyscallDesc("rt_sigtimedwait", unimplementedFunc),
323 /* 198 */ SyscallDesc("rt_sigqueueinfo", ignoreFunc),
323 /* 199 */ SyscallDesc("rt_sigsuspend", unimplementedFunc/*rt_sigsuspendFunc<MipsLinux>*/),
324 /* 199 */ SyscallDesc("rt_sigsuspend", unimplementedFunc),
324 /* 200 */ SyscallDesc("pread64", unimplementedFunc),
325 /* 201 */ SyscallDesc("pwrite64", unimplementedFunc),
326 /* 202 */ SyscallDesc("chown", unimplementedFunc),
327 /* 203 */ SyscallDesc("getcwd", getcwdFunc),
328 /* 204 */ SyscallDesc("capget", unimplementedFunc),
329 /* 205 */ SyscallDesc("capset", unimplementedFunc),
330 /* 206 */ SyscallDesc("sigalstack", unimplementedFunc),
331 /* 207 */ SyscallDesc("sendfile", unimplementedFunc),

--- 69 unchanged lines hidden (view full) ---

401 /* 277 */ SyscallDesc("vserver", unimplementedFunc),
402 /* 278 */ SyscallDesc("waitid", unimplementedFunc),
403 /* 279 */ SyscallDesc("unknown #279", unimplementedFunc),
404 /* 280 */ SyscallDesc("add_key", unimplementedFunc),
405 /* 281 */ SyscallDesc("request_key", unimplementedFunc),
406 /* 282 */ SyscallDesc("keyctl", unimplementedFunc)
407};
408
325 /* 200 */ SyscallDesc("pread64", unimplementedFunc),
326 /* 201 */ SyscallDesc("pwrite64", unimplementedFunc),
327 /* 202 */ SyscallDesc("chown", unimplementedFunc),
328 /* 203 */ SyscallDesc("getcwd", getcwdFunc),
329 /* 204 */ SyscallDesc("capget", unimplementedFunc),
330 /* 205 */ SyscallDesc("capset", unimplementedFunc),
331 /* 206 */ SyscallDesc("sigalstack", unimplementedFunc),
332 /* 207 */ SyscallDesc("sendfile", unimplementedFunc),

--- 69 unchanged lines hidden (view full) ---

402 /* 277 */ SyscallDesc("vserver", unimplementedFunc),
403 /* 278 */ SyscallDesc("waitid", unimplementedFunc),
404 /* 279 */ SyscallDesc("unknown #279", unimplementedFunc),
405 /* 280 */ SyscallDesc("add_key", unimplementedFunc),
406 /* 281 */ SyscallDesc("request_key", unimplementedFunc),
407 /* 282 */ SyscallDesc("keyctl", unimplementedFunc)
408};
409
409
410MipsLinuxProcess::MipsLinuxProcess(LiveProcessParams * params,
411 ObjectFile *objFile)
412 : MipsLiveProcess(params, objFile),
413 Num_Syscall_Descs(sizeof(syscallDescs) / sizeof(SyscallDesc))
414{ }
415
416void
417MipsLinuxProcess::startup()

--- 20 unchanged lines hidden ---
410MipsLinuxProcess::MipsLinuxProcess(LiveProcessParams * params,
411 ObjectFile *objFile)
412 : MipsLiveProcess(params, objFile),
413 Num_Syscall_Descs(sizeof(syscallDescs) / sizeof(SyscallDesc))
414{ }
415
416void
417MipsLinuxProcess::startup()

--- 20 unchanged lines hidden ---