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 --- |