alpha: Remove ALPHA tru64 support and associated tests
No one appears to be using it, and it is causing build issues and increases the development and maintenance effort.
This commit is contained in:
@@ -54,9 +54,3 @@ class FreebsdAlphaSystem(AlphaSystem):
|
||||
cxx_header = "arch/alpha/freebsd/system.hh"
|
||||
system_type = 34
|
||||
system_rev = 1 << 10
|
||||
|
||||
class Tru64AlphaSystem(AlphaSystem):
|
||||
type = 'Tru64AlphaSystem'
|
||||
cxx_header = "arch/alpha/tru64/system.hh"
|
||||
system_type = 12
|
||||
system_rev = 2<<1
|
||||
|
||||
@@ -52,9 +52,6 @@ if env['TARGET_ISA'] == 'alpha':
|
||||
Source('stacktrace.cc')
|
||||
Source('system.cc')
|
||||
Source('tlb.cc')
|
||||
Source('tru64/process.cc')
|
||||
Source('tru64/system.cc')
|
||||
Source('tru64/tru64.cc')
|
||||
Source('utility.cc')
|
||||
Source('vtophys.cc')
|
||||
|
||||
|
||||
@@ -39,7 +39,6 @@
|
||||
#include "base/trace.hh"
|
||||
#include "cpu/thread_context.hh"
|
||||
#include "debug/Context.hh"
|
||||
#include "kern/tru64/tru64_syscalls.hh"
|
||||
#include "sim/system.hh"
|
||||
|
||||
using namespace std;
|
||||
@@ -181,16 +180,6 @@ Statistics::callpal(int code, ThreadContext *tc)
|
||||
return;
|
||||
|
||||
_callpal[code]++;
|
||||
|
||||
switch (code) {
|
||||
case PAL::callsys: {
|
||||
int number = tc->readIntReg(0);
|
||||
if (SystemCalls<Tru64>::validSyscallNumber(number)) {
|
||||
int cvtnum = SystemCalls<Tru64>::convert(number);
|
||||
_syscall[cvtnum]++;
|
||||
}
|
||||
} break;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -1,584 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2001-2005 The Regents of The University of Michigan
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met: redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer;
|
||||
* redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution;
|
||||
* neither the name of the copyright holders nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from
|
||||
* this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Authors: Steve Reinhardt
|
||||
* Ali Saidi
|
||||
*/
|
||||
|
||||
#include "arch/alpha/tru64/process.hh"
|
||||
#include "arch/alpha/tru64/tru64.hh"
|
||||
#include "arch/alpha/isa_traits.hh"
|
||||
#include "cpu/thread_context.hh"
|
||||
#include "kern/tru64/tru64.hh"
|
||||
#include "sim/byteswap.hh"
|
||||
#include "sim/process.hh"
|
||||
#include "sim/syscall_emul.hh"
|
||||
|
||||
using namespace std;
|
||||
using namespace AlphaISA;
|
||||
|
||||
/// Target uname() handler.
|
||||
static SyscallReturn
|
||||
unameFunc(SyscallDesc *desc, int callnum, LiveProcess *process,
|
||||
ThreadContext *tc)
|
||||
{
|
||||
int index = 0;
|
||||
TypedBufferArg<AlphaTru64::utsname> name(process->getSyscallArg(tc, index));
|
||||
|
||||
strcpy(name->sysname, "OSF1");
|
||||
strcpy(name->nodename, "m5.eecs.umich.edu");
|
||||
strcpy(name->release, "V5.1");
|
||||
strcpy(name->version, "732");
|
||||
strcpy(name->machine, "alpha");
|
||||
|
||||
name.copyOut(tc->getMemProxy());
|
||||
return 0;
|
||||
}
|
||||
|
||||
/// Target getsysyinfo() handler.
|
||||
static SyscallReturn
|
||||
getsysinfoFunc(SyscallDesc *desc, int callnum, LiveProcess *process,
|
||||
ThreadContext *tc)
|
||||
{
|
||||
int index = 0;
|
||||
unsigned op = process->getSyscallArg(tc, index);
|
||||
Addr bufPtr = process->getSyscallArg(tc, index);
|
||||
unsigned nbytes = process->getSyscallArg(tc, index);
|
||||
|
||||
switch (op) {
|
||||
|
||||
case AlphaTru64::GSI_MAX_CPU: {
|
||||
TypedBufferArg<uint32_t> max_cpu(bufPtr);
|
||||
*max_cpu = htog((uint32_t)process->numCpus());
|
||||
max_cpu.copyOut(tc->getMemProxy());
|
||||
return 1;
|
||||
}
|
||||
|
||||
case AlphaTru64::GSI_CPUS_IN_BOX: {
|
||||
TypedBufferArg<uint32_t> cpus_in_box(bufPtr);
|
||||
*cpus_in_box = htog((uint32_t)process->numCpus());
|
||||
cpus_in_box.copyOut(tc->getMemProxy());
|
||||
return 1;
|
||||
}
|
||||
|
||||
case AlphaTru64::GSI_PHYSMEM: {
|
||||
TypedBufferArg<uint64_t> physmem(bufPtr);
|
||||
*physmem = htog((uint64_t)1024 * 1024); // physical memory in KB
|
||||
physmem.copyOut(tc->getMemProxy());
|
||||
return 1;
|
||||
}
|
||||
|
||||
case AlphaTru64::GSI_CPU_INFO: {
|
||||
TypedBufferArg<AlphaTru64::cpu_info> infop(bufPtr);
|
||||
|
||||
infop->current_cpu = htog(0);
|
||||
infop->cpus_in_box = htog(process->numCpus());
|
||||
infop->cpu_type = htog(57);
|
||||
infop->ncpus = htog(process->numCpus());
|
||||
uint64_t cpumask = (1 << process->numCpus()) - 1;
|
||||
infop->cpus_present = infop->cpus_running = htog(cpumask);
|
||||
infop->cpu_binding = htog(0);
|
||||
infop->cpu_ex_binding = htog(0);
|
||||
infop->mhz = htog(667);
|
||||
|
||||
infop.copyOut(tc->getMemProxy());
|
||||
return 1;
|
||||
}
|
||||
|
||||
case AlphaTru64::GSI_PROC_TYPE: {
|
||||
TypedBufferArg<uint64_t> proc_type(bufPtr);
|
||||
*proc_type = htog((uint64_t)11);
|
||||
proc_type.copyOut(tc->getMemProxy());
|
||||
return 1;
|
||||
}
|
||||
|
||||
case AlphaTru64::GSI_PLATFORM_NAME: {
|
||||
BufferArg bufArg(bufPtr, nbytes);
|
||||
strncpy((char *)bufArg.bufferPtr(),
|
||||
"COMPAQ Professional Workstation XP1000",
|
||||
nbytes);
|
||||
bufArg.copyOut(tc->getMemProxy());
|
||||
return 1;
|
||||
}
|
||||
|
||||
case AlphaTru64::GSI_CLK_TCK: {
|
||||
TypedBufferArg<uint64_t> clk_hz(bufPtr);
|
||||
*clk_hz = htog((uint64_t)1024);
|
||||
clk_hz.copyOut(tc->getMemProxy());
|
||||
return 1;
|
||||
}
|
||||
|
||||
default:
|
||||
warn("getsysinfo: unknown op %d\n", op);
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/// Target setsysyinfo() handler.
|
||||
static SyscallReturn
|
||||
setsysinfoFunc(SyscallDesc *desc, int callnum, LiveProcess *process,
|
||||
ThreadContext *tc)
|
||||
{
|
||||
int index = 0;
|
||||
unsigned op = process->getSyscallArg(tc, index);
|
||||
|
||||
switch (op) {
|
||||
case AlphaTru64::SSI_IEEE_FP_CONTROL:
|
||||
warn("setsysinfo: ignoring ieee_set_fp_control() arg 0x%x\n",
|
||||
process->getSyscallArg(tc, index));
|
||||
break;
|
||||
|
||||
default:
|
||||
warn("setsysinfo: unknown op %d\n", op);
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/// Target table() handler.
|
||||
static SyscallReturn
|
||||
tableFunc(SyscallDesc *desc, int callnum, LiveProcess *process,
|
||||
ThreadContext *tc)
|
||||
{
|
||||
using namespace std;
|
||||
|
||||
int argIndex = 0;
|
||||
int id = process->getSyscallArg(tc, argIndex); // table ID
|
||||
int index = process->getSyscallArg(tc, argIndex); // index into table
|
||||
Addr bufPtr = process->getSyscallArg(tc, argIndex);
|
||||
// arg 2 is buffer pointer; type depends on table ID
|
||||
int nel = process->getSyscallArg(tc, argIndex); // number of elements
|
||||
int lel = process->getSyscallArg(tc, argIndex); // expected element size
|
||||
|
||||
switch (id) {
|
||||
case AlphaTru64::TBL_SYSINFO: {
|
||||
if (index != 0 || nel != 1 || lel != sizeof(Tru64::tbl_sysinfo))
|
||||
return -EINVAL;
|
||||
TypedBufferArg<Tru64::tbl_sysinfo> elp(bufPtr);
|
||||
|
||||
const int clk_hz = one_million;
|
||||
elp->si_user = htog(curTick() / (SimClock::Frequency / clk_hz));
|
||||
elp->si_nice = htog(0);
|
||||
elp->si_sys = htog(0);
|
||||
elp->si_idle = htog(0);
|
||||
elp->wait = htog(0);
|
||||
elp->si_hz = htog(clk_hz);
|
||||
elp->si_phz = htog(clk_hz);
|
||||
elp->si_boottime = htog(seconds_since_epoch); // seconds since epoch?
|
||||
elp->si_max_procs = htog(process->numCpus());
|
||||
elp.copyOut(tc->getMemProxy());
|
||||
return 0;
|
||||
}
|
||||
|
||||
default:
|
||||
cerr << "table(): id " << id << " unknown." << endl;
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
SyscallDesc AlphaTru64Process::syscallDescs[] = {
|
||||
/* 0 */ SyscallDesc("syscall (#0)", AlphaTru64::indirectSyscallFunc,
|
||||
SyscallDesc::SuppressReturnValue),
|
||||
/* 1 */ SyscallDesc("exit", exitFunc),
|
||||
/* 2 */ SyscallDesc("fork", unimplementedFunc),
|
||||
/* 3 */ SyscallDesc("read", readFunc),
|
||||
/* 4 */ SyscallDesc("write", writeFunc),
|
||||
/* 5 */ SyscallDesc("old_open", unimplementedFunc),
|
||||
/* 6 */ SyscallDesc("close", closeFunc),
|
||||
/* 7 */ SyscallDesc("wait4", unimplementedFunc),
|
||||
/* 8 */ SyscallDesc("old_creat", unimplementedFunc),
|
||||
/* 9 */ SyscallDesc("link", unimplementedFunc),
|
||||
/* 10 */ SyscallDesc("unlink", unlinkFunc),
|
||||
/* 11 */ SyscallDesc("execv", unimplementedFunc),
|
||||
/* 12 */ SyscallDesc("chdir", unimplementedFunc),
|
||||
/* 13 */ SyscallDesc("fchdir", unimplementedFunc),
|
||||
/* 14 */ SyscallDesc("mknod", unimplementedFunc),
|
||||
/* 15 */ SyscallDesc("chmod", unimplementedFunc),
|
||||
/* 16 */ SyscallDesc("chown", unimplementedFunc),
|
||||
/* 17 */ SyscallDesc("obreak", brkFunc),
|
||||
/* 18 */ SyscallDesc("pre_F64_getfsstat", unimplementedFunc),
|
||||
/* 19 */ SyscallDesc("lseek", lseekFunc),
|
||||
/* 20 */ SyscallDesc("getpid", getpidPseudoFunc),
|
||||
/* 21 */ SyscallDesc("mount", unimplementedFunc),
|
||||
/* 22 */ SyscallDesc("unmount", unimplementedFunc),
|
||||
/* 23 */ SyscallDesc("setuid", setuidFunc),
|
||||
/* 24 */ SyscallDesc("getuid", getuidPseudoFunc),
|
||||
/* 25 */ SyscallDesc("exec_with_loader", unimplementedFunc),
|
||||
/* 26 */ SyscallDesc("ptrace", unimplementedFunc),
|
||||
/* 27 */ SyscallDesc("recvmsg", unimplementedFunc),
|
||||
/* 28 */ SyscallDesc("sendmsg", unimplementedFunc),
|
||||
/* 29 */ SyscallDesc("recvfrom", unimplementedFunc),
|
||||
/* 30 */ SyscallDesc("accept", unimplementedFunc),
|
||||
/* 31 */ SyscallDesc("getpeername", unimplementedFunc),
|
||||
/* 32 */ SyscallDesc("getsockname", unimplementedFunc),
|
||||
/* 33 */ SyscallDesc("access", unimplementedFunc),
|
||||
/* 34 */ SyscallDesc("chflags", unimplementedFunc),
|
||||
/* 35 */ SyscallDesc("fchflags", unimplementedFunc),
|
||||
/* 36 */ SyscallDesc("sync", unimplementedFunc),
|
||||
/* 37 */ SyscallDesc("kill", unimplementedFunc),
|
||||
/* 38 */ SyscallDesc("old_stat", unimplementedFunc),
|
||||
/* 39 */ SyscallDesc("setpgid", unimplementedFunc),
|
||||
/* 40 */ SyscallDesc("old_lstat", unimplementedFunc),
|
||||
/* 41 */ SyscallDesc("dup", unimplementedFunc),
|
||||
/* 42 */ SyscallDesc("pipe", unimplementedFunc),
|
||||
/* 43 */ SyscallDesc("set_program_attributes", unimplementedFunc),
|
||||
/* 44 */ SyscallDesc("profil", unimplementedFunc),
|
||||
/* 45 */ SyscallDesc("open", openFunc<AlphaTru64>),
|
||||
/* 46 */ SyscallDesc("obsolete osigaction", unimplementedFunc),
|
||||
/* 47 */ SyscallDesc("getgid", getgidPseudoFunc),
|
||||
/* 48 */ SyscallDesc("sigprocmask", ignoreFunc),
|
||||
/* 49 */ SyscallDesc("getlogin", unimplementedFunc),
|
||||
/* 50 */ SyscallDesc("setlogin", unimplementedFunc),
|
||||
/* 51 */ SyscallDesc("acct", unimplementedFunc),
|
||||
/* 52 */ SyscallDesc("sigpending", unimplementedFunc),
|
||||
/* 53 */ SyscallDesc("classcntl", unimplementedFunc),
|
||||
/* 54 */ SyscallDesc("ioctl", ioctlFunc<AlphaTru64>),
|
||||
/* 55 */ SyscallDesc("reboot", unimplementedFunc),
|
||||
/* 56 */ SyscallDesc("revoke", unimplementedFunc),
|
||||
/* 57 */ SyscallDesc("symlink", unimplementedFunc),
|
||||
/* 58 */ SyscallDesc("readlink", readlinkFunc),
|
||||
/* 59 */ SyscallDesc("execve", unimplementedFunc),
|
||||
/* 60 */ SyscallDesc("umask", umaskFunc),
|
||||
/* 61 */ SyscallDesc("chroot", unimplementedFunc),
|
||||
/* 62 */ SyscallDesc("old_fstat", unimplementedFunc),
|
||||
/* 63 */ SyscallDesc("getpgrp", unimplementedFunc),
|
||||
/* 64 */ SyscallDesc("getpagesize", getpagesizeFunc),
|
||||
/* 65 */ SyscallDesc("mremap", unimplementedFunc),
|
||||
/* 66 */ SyscallDesc("vfork", unimplementedFunc),
|
||||
/* 67 */ SyscallDesc("pre_F64_stat", statFunc<Tru64_PreF64>),
|
||||
/* 68 */ SyscallDesc("pre_F64_lstat", lstatFunc<Tru64_PreF64>),
|
||||
/* 69 */ SyscallDesc("sbrk", unimplementedFunc),
|
||||
/* 70 */ SyscallDesc("sstk", unimplementedFunc),
|
||||
/* 71 */ SyscallDesc("mmap", mmapFunc<AlphaTru64>),
|
||||
/* 72 */ SyscallDesc("ovadvise", unimplementedFunc),
|
||||
/* 73 */ SyscallDesc("munmap", munmapFunc),
|
||||
/* 74 */ SyscallDesc("mprotect", ignoreFunc),
|
||||
/* 75 */ SyscallDesc("madvise", unimplementedFunc),
|
||||
/* 76 */ SyscallDesc("old_vhangup", unimplementedFunc),
|
||||
/* 77 */ SyscallDesc("kmodcall", unimplementedFunc),
|
||||
/* 78 */ SyscallDesc("mincore", unimplementedFunc),
|
||||
/* 79 */ SyscallDesc("getgroups", unimplementedFunc),
|
||||
/* 80 */ SyscallDesc("setgroups", unimplementedFunc),
|
||||
/* 81 */ SyscallDesc("old_getpgrp", unimplementedFunc),
|
||||
/* 82 */ SyscallDesc("setpgrp", unimplementedFunc),
|
||||
/* 83 */ SyscallDesc("setitimer", unimplementedFunc),
|
||||
/* 84 */ SyscallDesc("old_wait", unimplementedFunc),
|
||||
/* 85 */ SyscallDesc("table", tableFunc),
|
||||
/* 86 */ SyscallDesc("getitimer", unimplementedFunc),
|
||||
/* 87 */ SyscallDesc("gethostname", gethostnameFunc),
|
||||
/* 88 */ SyscallDesc("sethostname", unimplementedFunc),
|
||||
/* 89 */ SyscallDesc("getdtablesize", unimplementedFunc),
|
||||
/* 90 */ SyscallDesc("dup2", unimplementedFunc),
|
||||
/* 91 */ SyscallDesc("pre_F64_fstat", fstatFunc<Tru64_PreF64>),
|
||||
/* 92 */ SyscallDesc("fcntl", fcntlFunc),
|
||||
/* 93 */ SyscallDesc("select", unimplementedFunc),
|
||||
/* 94 */ SyscallDesc("poll", unimplementedFunc),
|
||||
/* 95 */ SyscallDesc("fsync", unimplementedFunc),
|
||||
/* 96 */ SyscallDesc("setpriority", unimplementedFunc),
|
||||
/* 97 */ SyscallDesc("socket", unimplementedFunc),
|
||||
/* 98 */ SyscallDesc("connect", unimplementedFunc),
|
||||
/* 99 */ SyscallDesc("old_accept", unimplementedFunc),
|
||||
/* 100 */ SyscallDesc("getpriority", unimplementedFunc),
|
||||
/* 101 */ SyscallDesc("old_send", unimplementedFunc),
|
||||
/* 102 */ SyscallDesc("old_recv", unimplementedFunc),
|
||||
/* 103 */ SyscallDesc("sigreturn", AlphaTru64::sigreturnFunc,
|
||||
SyscallDesc::SuppressReturnValue),
|
||||
/* 104 */ SyscallDesc("bind", unimplementedFunc),
|
||||
/* 105 */ SyscallDesc("setsockopt", unimplementedFunc),
|
||||
/* 106 */ SyscallDesc("listen", unimplementedFunc),
|
||||
/* 107 */ SyscallDesc("plock", unimplementedFunc),
|
||||
/* 108 */ SyscallDesc("old_sigvec", unimplementedFunc),
|
||||
/* 109 */ SyscallDesc("old_sigblock", unimplementedFunc),
|
||||
/* 110 */ SyscallDesc("old_sigsetmask", unimplementedFunc),
|
||||
/* 111 */ SyscallDesc("sigsuspend", unimplementedFunc),
|
||||
/* 112 */ SyscallDesc("sigstack", ignoreFunc),
|
||||
/* 113 */ SyscallDesc("old_recvmsg", unimplementedFunc),
|
||||
/* 114 */ SyscallDesc("old_sendmsg", unimplementedFunc),
|
||||
/* 115 */ SyscallDesc("obsolete vtrace", unimplementedFunc),
|
||||
/* 116 */ SyscallDesc("gettimeofday", gettimeofdayFunc<AlphaTru64>),
|
||||
/* 117 */ SyscallDesc("getrusage", getrusageFunc<AlphaTru64>),
|
||||
/* 118 */ SyscallDesc("getsockopt", unimplementedFunc),
|
||||
/* 119 */ SyscallDesc("numa_syscalls", unimplementedFunc),
|
||||
/* 120 */ SyscallDesc("readv", unimplementedFunc),
|
||||
/* 121 */ SyscallDesc("writev", unimplementedFunc),
|
||||
/* 122 */ SyscallDesc("settimeofday", unimplementedFunc),
|
||||
/* 123 */ SyscallDesc("fchown", unimplementedFunc),
|
||||
/* 124 */ SyscallDesc("fchmod", unimplementedFunc),
|
||||
/* 125 */ SyscallDesc("old_recvfrom", unimplementedFunc),
|
||||
/* 126 */ SyscallDesc("setreuid", unimplementedFunc),
|
||||
/* 127 */ SyscallDesc("setregid", unimplementedFunc),
|
||||
/* 128 */ SyscallDesc("rename", renameFunc),
|
||||
/* 129 */ SyscallDesc("truncate", truncateFunc),
|
||||
/* 130 */ SyscallDesc("ftruncate", ftruncateFunc),
|
||||
/* 131 */ SyscallDesc("flock", unimplementedFunc),
|
||||
/* 132 */ SyscallDesc("setgid", unimplementedFunc),
|
||||
/* 133 */ SyscallDesc("sendto", unimplementedFunc),
|
||||
/* 134 */ SyscallDesc("shutdown", unimplementedFunc),
|
||||
/* 135 */ SyscallDesc("socketpair", unimplementedFunc),
|
||||
/* 136 */ SyscallDesc("mkdir", mkdirFunc),
|
||||
/* 137 */ SyscallDesc("rmdir", unimplementedFunc),
|
||||
/* 138 */ SyscallDesc("utimes", unimplementedFunc),
|
||||
/* 139 */ SyscallDesc("obsolete 4.2 sigreturn", unimplementedFunc),
|
||||
/* 140 */ SyscallDesc("adjtime", unimplementedFunc),
|
||||
/* 141 */ SyscallDesc("old_getpeername", unimplementedFunc),
|
||||
/* 142 */ SyscallDesc("gethostid", unimplementedFunc),
|
||||
/* 143 */ SyscallDesc("sethostid", unimplementedFunc),
|
||||
/* 144 */ SyscallDesc("getrlimit", getrlimitFunc<AlphaTru64>),
|
||||
/* 145 */ SyscallDesc("setrlimit", ignoreFunc),
|
||||
/* 146 */ SyscallDesc("old_killpg", unimplementedFunc),
|
||||
/* 147 */ SyscallDesc("setsid", unimplementedFunc),
|
||||
/* 148 */ SyscallDesc("quotactl", unimplementedFunc),
|
||||
/* 149 */ SyscallDesc("oldquota", unimplementedFunc),
|
||||
/* 150 */ SyscallDesc("old_getsockname", unimplementedFunc),
|
||||
/* 151 */ SyscallDesc("pread", unimplementedFunc),
|
||||
/* 152 */ SyscallDesc("pwrite", unimplementedFunc),
|
||||
/* 153 */ SyscallDesc("pid_block", unimplementedFunc),
|
||||
/* 154 */ SyscallDesc("pid_unblock", unimplementedFunc),
|
||||
/* 155 */ SyscallDesc("signal_urti", unimplementedFunc),
|
||||
/* 156 */ SyscallDesc("sigaction", ignoreFunc),
|
||||
/* 157 */ SyscallDesc("sigwaitprim", unimplementedFunc),
|
||||
/* 158 */ SyscallDesc("nfssvc", unimplementedFunc),
|
||||
/* 159 */ SyscallDesc("getdirentries", AlphaTru64::getdirentriesFunc),
|
||||
/* 160 */ SyscallDesc("pre_F64_statfs", statfsFunc<Tru64_PreF64>),
|
||||
/* 161 */ SyscallDesc("pre_F64_fstatfs", fstatfsFunc<Tru64_PreF64>),
|
||||
/* 162 */ SyscallDesc("unknown #162", unimplementedFunc),
|
||||
/* 163 */ SyscallDesc("async_daemon", unimplementedFunc),
|
||||
/* 164 */ SyscallDesc("getfh", unimplementedFunc),
|
||||
/* 165 */ SyscallDesc("getdomainname", unimplementedFunc),
|
||||
/* 166 */ SyscallDesc("setdomainname", unimplementedFunc),
|
||||
/* 167 */ SyscallDesc("unknown #167", unimplementedFunc),
|
||||
/* 168 */ SyscallDesc("unknown #168", unimplementedFunc),
|
||||
/* 169 */ SyscallDesc("exportfs", unimplementedFunc),
|
||||
/* 170 */ SyscallDesc("unknown #170", unimplementedFunc),
|
||||
/* 171 */ SyscallDesc("unknown #171", unimplementedFunc),
|
||||
/* 172 */ SyscallDesc("unknown #172", unimplementedFunc),
|
||||
/* 173 */ SyscallDesc("unknown #173", unimplementedFunc),
|
||||
/* 174 */ SyscallDesc("unknown #174", unimplementedFunc),
|
||||
/* 175 */ SyscallDesc("unknown #175", unimplementedFunc),
|
||||
/* 176 */ SyscallDesc("unknown #176", unimplementedFunc),
|
||||
/* 177 */ SyscallDesc("unknown #177", unimplementedFunc),
|
||||
/* 178 */ SyscallDesc("unknown #178", unimplementedFunc),
|
||||
/* 179 */ SyscallDesc("unknown #179", unimplementedFunc),
|
||||
/* 180 */ SyscallDesc("unknown #180", unimplementedFunc),
|
||||
/* 181 */ SyscallDesc("alt_plock", unimplementedFunc),
|
||||
/* 182 */ SyscallDesc("unknown #182", unimplementedFunc),
|
||||
/* 183 */ SyscallDesc("unknown #183", unimplementedFunc),
|
||||
/* 184 */ SyscallDesc("getmnt", unimplementedFunc),
|
||||
/* 185 */ SyscallDesc("unknown #185", unimplementedFunc),
|
||||
/* 186 */ SyscallDesc("unknown #186", unimplementedFunc),
|
||||
/* 187 */ SyscallDesc("alt_sigpending", unimplementedFunc),
|
||||
/* 188 */ SyscallDesc("alt_setsid", unimplementedFunc),
|
||||
/* 189 */ SyscallDesc("unknown #189", unimplementedFunc),
|
||||
/* 190 */ SyscallDesc("unknown #190", unimplementedFunc),
|
||||
/* 191 */ SyscallDesc("unknown #191", unimplementedFunc),
|
||||
/* 192 */ SyscallDesc("unknown #192", unimplementedFunc),
|
||||
/* 193 */ SyscallDesc("unknown #193", unimplementedFunc),
|
||||
/* 194 */ SyscallDesc("unknown #194", unimplementedFunc),
|
||||
/* 195 */ SyscallDesc("unknown #195", unimplementedFunc),
|
||||
/* 196 */ SyscallDesc("unknown #196", unimplementedFunc),
|
||||
/* 197 */ SyscallDesc("unknown #197", unimplementedFunc),
|
||||
/* 198 */ SyscallDesc("unknown #198", unimplementedFunc),
|
||||
/* 199 */ SyscallDesc("swapon", unimplementedFunc),
|
||||
/* 200 */ SyscallDesc("msgctl", unimplementedFunc),
|
||||
/* 201 */ SyscallDesc("msgget", unimplementedFunc),
|
||||
/* 202 */ SyscallDesc("msgrcv", unimplementedFunc),
|
||||
/* 203 */ SyscallDesc("msgsnd", unimplementedFunc),
|
||||
/* 204 */ SyscallDesc("semctl", unimplementedFunc),
|
||||
/* 205 */ SyscallDesc("semget", unimplementedFunc),
|
||||
/* 206 */ SyscallDesc("semop", unimplementedFunc),
|
||||
/* 207 */ SyscallDesc("uname", unameFunc),
|
||||
/* 208 */ SyscallDesc("lchown", unimplementedFunc),
|
||||
/* 209 */ SyscallDesc("shmat", unimplementedFunc),
|
||||
/* 210 */ SyscallDesc("shmctl", unimplementedFunc),
|
||||
/* 211 */ SyscallDesc("shmdt", unimplementedFunc),
|
||||
/* 212 */ SyscallDesc("shmget", unimplementedFunc),
|
||||
/* 213 */ SyscallDesc("mvalid", unimplementedFunc),
|
||||
/* 214 */ SyscallDesc("getaddressconf", unimplementedFunc),
|
||||
/* 215 */ SyscallDesc("msleep", unimplementedFunc),
|
||||
/* 216 */ SyscallDesc("mwakeup", unimplementedFunc),
|
||||
/* 217 */ SyscallDesc("msync", unimplementedFunc),
|
||||
/* 218 */ SyscallDesc("signal", unimplementedFunc),
|
||||
/* 219 */ SyscallDesc("utc_gettime", unimplementedFunc),
|
||||
/* 220 */ SyscallDesc("utc_adjtime", unimplementedFunc),
|
||||
/* 221 */ SyscallDesc("unknown #221", unimplementedFunc),
|
||||
/* 222 */ SyscallDesc("security", unimplementedFunc),
|
||||
/* 223 */ SyscallDesc("kloadcall", unimplementedFunc),
|
||||
/* 224 */ SyscallDesc("stat", statFunc<Tru64_F64>),
|
||||
/* 225 */ SyscallDesc("lstat", lstatFunc<Tru64_F64>),
|
||||
/* 226 */ SyscallDesc("fstat", fstatFunc<Tru64_F64>),
|
||||
/* 227 */ SyscallDesc("statfs", statfsFunc<Tru64_F64>),
|
||||
/* 228 */ SyscallDesc("fstatfs", fstatfsFunc<Tru64_F64>),
|
||||
/* 229 */ SyscallDesc("getfsstat", unimplementedFunc),
|
||||
/* 230 */ SyscallDesc("gettimeofday64", unimplementedFunc),
|
||||
/* 231 */ SyscallDesc("settimeofday64", unimplementedFunc),
|
||||
/* 232 */ SyscallDesc("unknown #232", unimplementedFunc),
|
||||
/* 233 */ SyscallDesc("getpgid", unimplementedFunc),
|
||||
/* 234 */ SyscallDesc("getsid", unimplementedFunc),
|
||||
/* 235 */ SyscallDesc("sigaltstack", ignoreFunc),
|
||||
/* 236 */ SyscallDesc("waitid", unimplementedFunc),
|
||||
/* 237 */ SyscallDesc("priocntlset", unimplementedFunc),
|
||||
/* 238 */ SyscallDesc("sigsendset", unimplementedFunc),
|
||||
/* 239 */ SyscallDesc("set_speculative", unimplementedFunc),
|
||||
/* 240 */ SyscallDesc("msfs_syscall", unimplementedFunc),
|
||||
/* 241 */ SyscallDesc("sysinfo", unimplementedFunc),
|
||||
/* 242 */ SyscallDesc("uadmin", unimplementedFunc),
|
||||
/* 243 */ SyscallDesc("fuser", unimplementedFunc),
|
||||
/* 244 */ SyscallDesc("proplist_syscall", unimplementedFunc),
|
||||
/* 245 */ SyscallDesc("ntp_adjtime", unimplementedFunc),
|
||||
/* 246 */ SyscallDesc("ntp_gettime", unimplementedFunc),
|
||||
/* 247 */ SyscallDesc("pathconf", unimplementedFunc),
|
||||
/* 248 */ SyscallDesc("fpathconf", unimplementedFunc),
|
||||
/* 249 */ SyscallDesc("sync2", unimplementedFunc),
|
||||
/* 250 */ SyscallDesc("uswitch", unimplementedFunc),
|
||||
/* 251 */ SyscallDesc("usleep_thread", unimplementedFunc),
|
||||
/* 252 */ SyscallDesc("audcntl", unimplementedFunc),
|
||||
/* 253 */ SyscallDesc("audgen", unimplementedFunc),
|
||||
/* 254 */ SyscallDesc("sysfs", unimplementedFunc),
|
||||
/* 255 */ SyscallDesc("subsys_info", unimplementedFunc),
|
||||
/* 256 */ SyscallDesc("getsysinfo", getsysinfoFunc),
|
||||
/* 257 */ SyscallDesc("setsysinfo", setsysinfoFunc),
|
||||
/* 258 */ SyscallDesc("afs_syscall", unimplementedFunc),
|
||||
/* 259 */ SyscallDesc("swapctl", unimplementedFunc),
|
||||
/* 260 */ SyscallDesc("memcntl", unimplementedFunc),
|
||||
/* 261 */ SyscallDesc("fdatasync", unimplementedFunc),
|
||||
/* 262 */ SyscallDesc("oflock", unimplementedFunc),
|
||||
/* 263 */ SyscallDesc("F64_readv", unimplementedFunc),
|
||||
/* 264 */ SyscallDesc("F64_writev", unimplementedFunc),
|
||||
/* 265 */ SyscallDesc("cdslxlate", unimplementedFunc),
|
||||
/* 266 */ SyscallDesc("sendfile", unimplementedFunc),
|
||||
};
|
||||
|
||||
SyscallDesc AlphaTru64Process::machSyscallDescs[] = {
|
||||
/* 0 */ SyscallDesc("kern_invalid", unimplementedFunc),
|
||||
/* 1 */ SyscallDesc("m5_mutex_lock", AlphaTru64::m5_mutex_lockFunc),
|
||||
/* 2 */ SyscallDesc("m5_mutex_trylock", AlphaTru64::m5_mutex_trylockFunc),
|
||||
/* 3 */ SyscallDesc("m5_mutex_unlock", AlphaTru64::m5_mutex_unlockFunc),
|
||||
/* 4 */ SyscallDesc("m5_cond_signal", AlphaTru64::m5_cond_signalFunc),
|
||||
/* 5 */ SyscallDesc("m5_cond_broadcast",
|
||||
AlphaTru64::m5_cond_broadcastFunc),
|
||||
/* 6 */ SyscallDesc("m5_cond_wait", AlphaTru64::m5_cond_waitFunc),
|
||||
/* 7 */ SyscallDesc("m5_thread_exit", AlphaTru64::m5_thread_exitFunc),
|
||||
/* 8 */ SyscallDesc("kern_invalid", unimplementedFunc),
|
||||
/* 9 */ SyscallDesc("kern_invalid", unimplementedFunc),
|
||||
/* 10 */ SyscallDesc("task_self", unimplementedFunc),
|
||||
/* 11 */ SyscallDesc("thread_reply", unimplementedFunc),
|
||||
/* 12 */ SyscallDesc("task_notify", unimplementedFunc),
|
||||
/* 13 */ SyscallDesc("thread_self", unimplementedFunc),
|
||||
/* 14 */ SyscallDesc("kern_invalid", unimplementedFunc),
|
||||
/* 15 */ SyscallDesc("kern_invalid", unimplementedFunc),
|
||||
/* 16 */ SyscallDesc("kern_invalid", unimplementedFunc),
|
||||
/* 17 */ SyscallDesc("kern_invalid", unimplementedFunc),
|
||||
/* 18 */ SyscallDesc("kern_invalid", unimplementedFunc),
|
||||
/* 19 */ SyscallDesc("kern_invalid", unimplementedFunc),
|
||||
/* 20 */ SyscallDesc("msg_send_trap", unimplementedFunc),
|
||||
/* 21 */ SyscallDesc("msg_receive_trap", unimplementedFunc),
|
||||
/* 22 */ SyscallDesc("msg_rpc_trap", unimplementedFunc),
|
||||
/* 23 */ SyscallDesc("kern_invalid", unimplementedFunc),
|
||||
/* 24 */ SyscallDesc("nxm_block", AlphaTru64::nxm_blockFunc),
|
||||
/* 25 */ SyscallDesc("nxm_unblock", AlphaTru64::nxm_unblockFunc),
|
||||
/* 26 */ SyscallDesc("kern_invalid", unimplementedFunc),
|
||||
/* 27 */ SyscallDesc("kern_invalid", unimplementedFunc),
|
||||
/* 28 */ SyscallDesc("kern_invalid", unimplementedFunc),
|
||||
/* 29 */ SyscallDesc("nxm_thread_destroy", unimplementedFunc),
|
||||
/* 30 */ SyscallDesc("lw_wire", unimplementedFunc),
|
||||
/* 31 */ SyscallDesc("lw_unwire", unimplementedFunc),
|
||||
/* 32 */ SyscallDesc("nxm_thread_create",
|
||||
AlphaTru64::nxm_thread_createFunc),
|
||||
/* 33 */ SyscallDesc("nxm_task_init", AlphaTru64::nxm_task_initFunc),
|
||||
/* 34 */ SyscallDesc("kern_invalid", unimplementedFunc),
|
||||
/* 35 */ SyscallDesc("nxm_idle", AlphaTru64::nxm_idleFunc),
|
||||
/* 36 */ SyscallDesc("nxm_wakeup_idle", unimplementedFunc),
|
||||
/* 37 */ SyscallDesc("nxm_set_pthid", unimplementedFunc),
|
||||
/* 38 */ SyscallDesc("nxm_thread_kill", unimplementedFunc),
|
||||
/* 39 */ SyscallDesc("nxm_thread_block", AlphaTru64::nxm_thread_blockFunc),
|
||||
/* 40 */ SyscallDesc("nxm_thread_wakeup", unimplementedFunc),
|
||||
/* 41 */ SyscallDesc("init_process", unimplementedFunc),
|
||||
/* 42 */ SyscallDesc("nxm_get_binding", unimplementedFunc),
|
||||
/* 43 */ SyscallDesc("map_fd", unimplementedFunc),
|
||||
/* 44 */ SyscallDesc("nxm_resched", unimplementedFunc),
|
||||
/* 45 */ SyscallDesc("nxm_set_cancel", unimplementedFunc),
|
||||
/* 46 */ SyscallDesc("nxm_set_binding", unimplementedFunc),
|
||||
/* 47 */ SyscallDesc("stack_create", AlphaTru64::stack_createFunc),
|
||||
/* 48 */ SyscallDesc("nxm_get_state", unimplementedFunc),
|
||||
/* 49 */ SyscallDesc("nxm_thread_suspend", unimplementedFunc),
|
||||
/* 50 */ SyscallDesc("nxm_thread_resume", unimplementedFunc),
|
||||
/* 51 */ SyscallDesc("nxm_signal_check", unimplementedFunc),
|
||||
/* 52 */ SyscallDesc("htg_unix_syscall", unimplementedFunc),
|
||||
/* 53 */ SyscallDesc("kern_invalid", unimplementedFunc),
|
||||
/* 54 */ SyscallDesc("kern_invalid", unimplementedFunc),
|
||||
/* 55 */ SyscallDesc("host_self", unimplementedFunc),
|
||||
/* 56 */ SyscallDesc("host_priv_self", unimplementedFunc),
|
||||
/* 57 */ SyscallDesc("kern_invalid", unimplementedFunc),
|
||||
/* 58 */ SyscallDesc("kern_invalid", unimplementedFunc),
|
||||
/* 59 */ SyscallDesc("swtch_pri", AlphaTru64::swtch_priFunc),
|
||||
/* 60 */ SyscallDesc("swtch", unimplementedFunc),
|
||||
/* 61 */ SyscallDesc("thread_switch", unimplementedFunc),
|
||||
/* 62 */ SyscallDesc("semop_fast", unimplementedFunc),
|
||||
/* 63 */ SyscallDesc("nxm_pshared_init", unimplementedFunc),
|
||||
/* 64 */ SyscallDesc("nxm_pshared_block", unimplementedFunc),
|
||||
/* 65 */ SyscallDesc("nxm_pshared_unblock", unimplementedFunc),
|
||||
/* 66 */ SyscallDesc("nxm_pshared_destroy", unimplementedFunc),
|
||||
/* 67 */ SyscallDesc("nxm_swtch_pri", AlphaTru64::swtch_priFunc),
|
||||
/* 68 */ SyscallDesc("lw_syscall", unimplementedFunc),
|
||||
/* 69 */ SyscallDesc("kern_invalid", unimplementedFunc),
|
||||
/* 70 */ SyscallDesc("mach_sctimes_0", unimplementedFunc),
|
||||
/* 71 */ SyscallDesc("mach_sctimes_1", unimplementedFunc),
|
||||
/* 72 */ SyscallDesc("mach_sctimes_2", unimplementedFunc),
|
||||
/* 73 */ SyscallDesc("mach_sctimes_3", unimplementedFunc),
|
||||
/* 74 */ SyscallDesc("mach_sctimes_4", unimplementedFunc),
|
||||
/* 75 */ SyscallDesc("mach_sctimes_5", unimplementedFunc),
|
||||
/* 76 */ SyscallDesc("mach_sctimes_6", unimplementedFunc),
|
||||
/* 77 */ SyscallDesc("mach_sctimes_7", unimplementedFunc),
|
||||
/* 78 */ SyscallDesc("mach_sctimes_8", unimplementedFunc),
|
||||
/* 79 */ SyscallDesc("mach_sctimes_9", unimplementedFunc),
|
||||
/* 80 */ SyscallDesc("mach_sctimes_10", unimplementedFunc),
|
||||
/* 81 */ SyscallDesc("mach_sctimes_11", unimplementedFunc),
|
||||
/* 82 */ SyscallDesc("mach_sctimes_port_alloc_dealloc", unimplementedFunc)
|
||||
};
|
||||
|
||||
SyscallDesc*
|
||||
AlphaTru64Process::getDesc(int callnum)
|
||||
{
|
||||
if (callnum < -Num_Mach_Syscall_Descs || callnum > Num_Syscall_Descs)
|
||||
return NULL;
|
||||
|
||||
if (callnum < 0)
|
||||
return &machSyscallDescs[-callnum];
|
||||
else
|
||||
return &syscallDescs[callnum];
|
||||
}
|
||||
|
||||
AlphaTru64Process::AlphaTru64Process(LiveProcessParams *params,
|
||||
ObjectFile *objFile)
|
||||
: AlphaLiveProcess(params, objFile),
|
||||
Num_Syscall_Descs(sizeof(syscallDescs) / sizeof(SyscallDesc)),
|
||||
Num_Mach_Syscall_Descs(sizeof(machSyscallDescs) / sizeof(SyscallDesc))
|
||||
{
|
||||
}
|
||||
@@ -1,60 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2003-2004 The Regents of The University of Michigan
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met: redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer;
|
||||
* redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution;
|
||||
* neither the name of the copyright holders nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from
|
||||
* this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Authors: Steve Reinhardt
|
||||
*/
|
||||
|
||||
#ifndef __ARCH_ALPHA_TRU64_PROCESS_HH__
|
||||
#define __ARCH_ALPHA_TRU64_PROCESS_HH__
|
||||
|
||||
#include "arch/alpha/process.hh"
|
||||
|
||||
namespace AlphaISA {
|
||||
|
||||
/// A process with emulated Alpha Tru64 syscalls.
|
||||
class AlphaTru64Process : public AlphaLiveProcess
|
||||
{
|
||||
public:
|
||||
/// Constructor.
|
||||
AlphaTru64Process(LiveProcessParams * params,
|
||||
ObjectFile *objFile);
|
||||
|
||||
/// Array of syscall descriptors, indexed by call number.
|
||||
static SyscallDesc syscallDescs[];
|
||||
|
||||
/// Array of mach syscall descriptors, indexed by call number.
|
||||
static SyscallDesc machSyscallDescs[];
|
||||
|
||||
const int Num_Syscall_Descs;
|
||||
const int Num_Mach_Syscall_Descs;
|
||||
|
||||
virtual SyscallDesc *getDesc(int callnum);
|
||||
};
|
||||
|
||||
} // namespace AlphaISA
|
||||
|
||||
#endif // __ARCH_ALPHA_TRU64_PROCESS_HH__
|
||||
@@ -1,92 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2003-2005 The Regents of The University of Michigan
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met: redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer;
|
||||
* redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution;
|
||||
* neither the name of the copyright holders nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from
|
||||
* this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Authors: Nathan Binkert
|
||||
* Lisa Hsu
|
||||
*/
|
||||
|
||||
#include "arch/alpha/tru64/system.hh"
|
||||
#include "arch/isa_traits.hh"
|
||||
#include "arch/vtophys.hh"
|
||||
#include "base/loader/symtab.hh"
|
||||
#include "base/trace.hh"
|
||||
#include "cpu/base.hh"
|
||||
#include "cpu/thread_context.hh"
|
||||
#include "kern/tru64/tru64_events.hh"
|
||||
#include "kern/system_events.hh"
|
||||
#include "mem/fs_translating_port_proxy.hh"
|
||||
|
||||
using namespace std;
|
||||
|
||||
Tru64AlphaSystem::Tru64AlphaSystem(Tru64AlphaSystem::Params *p)
|
||||
: AlphaSystem(p)
|
||||
{
|
||||
Addr addr = 0;
|
||||
if (kernelSymtab->findAddress("enable_async_printf", addr)) {
|
||||
virtProxy.write(addr, (uint32_t)0);
|
||||
}
|
||||
|
||||
#ifdef DEBUG
|
||||
kernelPanicEvent = addKernelFuncEventOrPanic<BreakPCEvent>("panic");
|
||||
#endif
|
||||
|
||||
badaddrEvent = addKernelFuncEventOrPanic<BadAddrEvent>("badaddr");
|
||||
|
||||
skipPowerStateEvent =
|
||||
addKernelFuncEvent<SkipFuncEvent>("tl_v48_capture_power_state");
|
||||
skipScavengeBootEvent =
|
||||
addKernelFuncEvent<SkipFuncEvent>("pmap_scavenge_boot");
|
||||
|
||||
#if TRACING_ON
|
||||
printfEvent = addKernelFuncEvent<PrintfEvent>("printf");
|
||||
debugPrintfEvent = addKernelFuncEvent<DebugPrintfEvent>("m5printf");
|
||||
debugPrintfrEvent = addKernelFuncEvent<DebugPrintfrEvent>("m5printfr");
|
||||
dumpMbufEvent = addKernelFuncEvent<DumpMbufEvent>("m5_dump_mbuf");
|
||||
#endif
|
||||
}
|
||||
|
||||
Tru64AlphaSystem::~Tru64AlphaSystem()
|
||||
{
|
||||
#ifdef DEBUG
|
||||
delete kernelPanicEvent;
|
||||
#endif
|
||||
delete badaddrEvent;
|
||||
delete skipPowerStateEvent;
|
||||
delete skipScavengeBootEvent;
|
||||
#if TRACING_ON
|
||||
delete printfEvent;
|
||||
delete debugPrintfEvent;
|
||||
delete debugPrintfrEvent;
|
||||
delete dumpMbufEvent;
|
||||
#endif
|
||||
}
|
||||
|
||||
Tru64AlphaSystem *
|
||||
Tru64AlphaSystemParams::create()
|
||||
{
|
||||
return new Tru64AlphaSystem(this);
|
||||
}
|
||||
@@ -1,76 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2003-2005 The Regents of The University of Michigan
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met: redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer;
|
||||
* redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution;
|
||||
* neither the name of the copyright holders nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from
|
||||
* this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Authors: Nathan Binkert
|
||||
* Lisa Hsu
|
||||
*/
|
||||
|
||||
#ifndef __ARCH_ALPHA_TRU64_SYSTEM_HH__
|
||||
#define __ARCH_ALPHA_TRU64_SYSTEM_HH__
|
||||
|
||||
#include "arch/alpha/system.hh"
|
||||
#include "arch/isa_traits.hh"
|
||||
#include "params/Tru64AlphaSystem.hh"
|
||||
#include "sim/system.hh"
|
||||
|
||||
class ThreadContext;
|
||||
|
||||
class BreakPCEvent;
|
||||
class BadAddrEvent;
|
||||
class SkipFuncEvent;
|
||||
class PrintfEvent;
|
||||
class DebugPrintfEvent;
|
||||
class DebugPrintfrEvent;
|
||||
class DumpMbufEvent;
|
||||
class AlphaArguments;
|
||||
|
||||
class Tru64AlphaSystem : public AlphaSystem
|
||||
{
|
||||
private:
|
||||
#ifdef DEBUG
|
||||
/** Event to halt the simulator if the kernel calls panic() */
|
||||
BreakPCEvent *kernelPanicEvent;
|
||||
#endif
|
||||
|
||||
BadAddrEvent *badaddrEvent;
|
||||
SkipFuncEvent *skipPowerStateEvent;
|
||||
SkipFuncEvent *skipScavengeBootEvent;
|
||||
PrintfEvent *printfEvent;
|
||||
DebugPrintfEvent *debugPrintfEvent;
|
||||
DebugPrintfrEvent *debugPrintfrEvent;
|
||||
DumpMbufEvent *dumpMbufEvent;
|
||||
|
||||
public:
|
||||
typedef Tru64AlphaSystemParams Params;
|
||||
Tru64AlphaSystem(Params *p);
|
||||
~Tru64AlphaSystem();
|
||||
|
||||
static void Printf(AlphaArguments args);
|
||||
static void DumpMbuf(AlphaArguments args);
|
||||
};
|
||||
|
||||
#endif // __ARCH_ALPHA_TRU64_SYSTEM_HH__
|
||||
@@ -1,94 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2003-2005 The Regents of The University of Michigan
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met: redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer;
|
||||
* redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution;
|
||||
* neither the name of the copyright holders nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from
|
||||
* this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Authors: Korey Sewell
|
||||
*/
|
||||
|
||||
#include "arch/alpha/tru64/tru64.hh"
|
||||
|
||||
// open(2) flags translation table
|
||||
SyscallFlagTransTable AlphaTru64::openFlagTable[] = {
|
||||
#ifdef _MSC_VER
|
||||
{ AlphaTru64::TGT_O_RDONLY, _O_RDONLY },
|
||||
{ AlphaTru64::TGT_O_WRONLY, _O_WRONLY },
|
||||
{ AlphaTru64::TGT_O_RDWR, _O_RDWR },
|
||||
{ AlphaTru64::TGT_O_APPEND, _O_APPEND },
|
||||
{ AlphaTru64::TGT_O_CREAT, _O_CREAT },
|
||||
{ AlphaTru64::TGT_O_TRUNC, _O_TRUNC },
|
||||
{ AlphaTru64::TGT_O_EXCL, _O_EXCL },
|
||||
#ifdef _O_NONBLOCK
|
||||
{ AlphaTru64::TGT_O_NONBLOCK, _O_NONBLOCK },
|
||||
#endif
|
||||
#ifdef _O_NOCTTY
|
||||
{ AlphaTru64::TGT_O_NOCTTY, _O_NOCTTY },
|
||||
#endif
|
||||
#ifdef _O_SYNC
|
||||
{ AlphaTru64::TGT_O_SYNC, _O_SYNC },
|
||||
#endif
|
||||
#else /* !_MSC_VER */
|
||||
{ AlphaTru64::TGT_O_RDONLY, O_RDONLY },
|
||||
{ AlphaTru64::TGT_O_WRONLY, O_WRONLY },
|
||||
{ AlphaTru64::TGT_O_RDWR, O_RDWR },
|
||||
{ AlphaTru64::TGT_O_APPEND, O_APPEND },
|
||||
{ AlphaTru64::TGT_O_CREAT, O_CREAT },
|
||||
{ AlphaTru64::TGT_O_TRUNC, O_TRUNC },
|
||||
{ AlphaTru64::TGT_O_EXCL, O_EXCL },
|
||||
{ AlphaTru64::TGT_O_NONBLOCK, O_NONBLOCK },
|
||||
{ AlphaTru64::TGT_O_NOCTTY, O_NOCTTY },
|
||||
#ifdef O_SYNC
|
||||
{ AlphaTru64::TGT_O_SYNC, O_SYNC },
|
||||
#endif
|
||||
#endif /* _MSC_VER */
|
||||
};
|
||||
|
||||
const int AlphaTru64::NUM_OPEN_FLAGS =
|
||||
(sizeof(AlphaTru64::openFlagTable)/sizeof(AlphaTru64::openFlagTable[0]));
|
||||
|
||||
// mmap(2) flags translation table
|
||||
SyscallFlagTransTable AlphaTru64::mmapFlagTable[] = {
|
||||
{ TGT_MAP_SHARED, MAP_SHARED },
|
||||
{ TGT_MAP_PRIVATE, MAP_PRIVATE },
|
||||
{ TGT_MAP_32BIT, MAP_32BIT},
|
||||
{ TGT_MAP_ANON, MAP_ANON },
|
||||
{ TGT_MAP_DENYWRITE, MAP_DENYWRITE },
|
||||
{ TGT_MAP_EXECUTABLE, MAP_EXECUTABLE },
|
||||
{ TGT_MAP_FILE, MAP_FILE },
|
||||
{ TGT_MAP_GROWSDOWN, MAP_GROWSDOWN },
|
||||
{ TGT_MAP_HUGETLB, MAP_HUGETLB },
|
||||
{ TGT_MAP_LOCKED, MAP_LOCKED },
|
||||
{ TGT_MAP_NONBLOCK, MAP_NONBLOCK },
|
||||
{ TGT_MAP_NORESERVE, MAP_NORESERVE },
|
||||
{ TGT_MAP_POPULATE, MAP_POPULATE },
|
||||
{ TGT_MAP_STACK, MAP_STACK },
|
||||
{ TGT_MAP_ANONYMOUS, MAP_ANONYMOUS },
|
||||
{ TGT_MAP_FIXED, MAP_FIXED },
|
||||
};
|
||||
|
||||
const unsigned AlphaTru64::NUM_MMAP_FLAGS =
|
||||
sizeof(AlphaTru64::mmapFlagTable) /
|
||||
sizeof(AlphaTru64::mmapFlagTable[0]);
|
||||
|
||||
@@ -1,168 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2003-2005 The Regents of The University of Michigan
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met: redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer;
|
||||
* redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution;
|
||||
* neither the name of the copyright holders nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from
|
||||
* this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Authors: Korey Sewell
|
||||
*/
|
||||
|
||||
#ifndef __ALPHA_ALPHA_TRU64_TRU64_HH__
|
||||
#define __ALPHA_ALPHA_TRU64_TRU64_HH__
|
||||
|
||||
#include "kern/tru64/tru64.hh"
|
||||
|
||||
class AlphaTru64 : public Tru64
|
||||
{
|
||||
public:
|
||||
/// This table maps the target open() flags to the corresponding
|
||||
/// host open() flags.
|
||||
static SyscallFlagTransTable openFlagTable[];
|
||||
|
||||
/// Number of entries in openFlagTable[].
|
||||
static const int NUM_OPEN_FLAGS;
|
||||
|
||||
//@{
|
||||
/// open(2) flag values.
|
||||
static const int TGT_O_RDONLY = 00000000; //!< O_RDONLY
|
||||
static const int TGT_O_WRONLY = 00000001; //!< O_WRONLY
|
||||
static const int TGT_O_RDWR = 00000002; //!< O_RDWR
|
||||
static const int TGT_O_NONBLOCK = 00000004; //!< O_NONBLOCK
|
||||
static const int TGT_O_APPEND = 00000010; //!< O_APPEND
|
||||
static const int TGT_O_CREAT = 00001000; //!< O_CREAT
|
||||
static const int TGT_O_TRUNC = 00002000; //!< O_TRUNC
|
||||
static const int TGT_O_EXCL = 00004000; //!< O_EXCL
|
||||
static const int TGT_O_NOCTTY = 00010000; //!< O_NOCTTY
|
||||
static const int TGT_O_SYNC = 00040000; //!< O_SYNC
|
||||
static const int TGT_O_DRD = 00100000; //!< O_DRD
|
||||
static const int TGT_O_DIRECTIO = 00200000; //!< O_DIRECTIO
|
||||
static const int TGT_O_CACHE = 00400000; //!< O_CACHE
|
||||
static const int TGT_O_DSYNC = 02000000; //!< O_DSYNC
|
||||
static const int TGT_O_RSYNC = 04000000; //!< O_RSYNC
|
||||
//@}
|
||||
|
||||
/// For mmap().
|
||||
static SyscallFlagTransTable mmapFlagTable[];
|
||||
|
||||
static const unsigned TGT_MAP_SHARED = 0x00001;
|
||||
static const unsigned TGT_MAP_PRIVATE = 0x00002;
|
||||
static const unsigned TGT_MAP_32BIT = 0x00040;
|
||||
static const unsigned TGT_MAP_ANON = 0x00020;
|
||||
static const unsigned TGT_MAP_DENYWRITE = 0x00800;
|
||||
static const unsigned TGT_MAP_EXECUTABLE = 0x01000;
|
||||
static const unsigned TGT_MAP_FILE = 0x00000;
|
||||
static const unsigned TGT_MAP_GROWSDOWN = 0x00100;
|
||||
static const unsigned TGT_MAP_HUGETLB = 0x40000;
|
||||
static const unsigned TGT_MAP_LOCKED = 0x02000;
|
||||
static const unsigned TGT_MAP_NONBLOCK = 0x10000;
|
||||
static const unsigned TGT_MAP_NORESERVE = 0x04000;
|
||||
static const unsigned TGT_MAP_POPULATE = 0x08000;
|
||||
static const unsigned TGT_MAP_STACK = 0x20000;
|
||||
static const unsigned TGT_MAP_ANONYMOUS = 0x00020;
|
||||
static const unsigned TGT_MAP_FIXED = 0x00010;
|
||||
|
||||
static const unsigned NUM_MMAP_FLAGS;
|
||||
|
||||
//@{
|
||||
|
||||
//@{
|
||||
/// For getsysinfo().
|
||||
static const unsigned GSI_PLATFORM_NAME = 103; //!< platform name string
|
||||
static const unsigned GSI_CPU_INFO = 59; //!< CPU information
|
||||
static const unsigned GSI_PROC_TYPE = 60; //!< get proc_type
|
||||
static const unsigned GSI_MAX_CPU = 30; //!< max # CPUs on machine
|
||||
static const unsigned GSI_CPUS_IN_BOX = 55; //!< number of CPUs in system
|
||||
static const unsigned GSI_PHYSMEM = 19; //!< Physical memory in KB
|
||||
static const unsigned GSI_CLK_TCK = 42; //!< clock freq in Hz
|
||||
//@}
|
||||
|
||||
//@{
|
||||
/// For getrusage().
|
||||
static const int TGT_RUSAGE_THREAD = 1;
|
||||
static const int TGT_RUSAGE_SELF = 0;
|
||||
static const int TGT_RUSAGE_CHILDREN = -1;
|
||||
//@}
|
||||
|
||||
//@{
|
||||
/// For setsysinfo().
|
||||
static const unsigned SSI_IEEE_FP_CONTROL = 14; //!< ieee_set_fp_control()
|
||||
//@}
|
||||
|
||||
//@{
|
||||
/// ioctl() command codes.
|
||||
static const unsigned TGT_TIOCGETP = 0x40067408;
|
||||
static const unsigned TGT_TIOCSETP = 0x80067409;
|
||||
static const unsigned TGT_TIOCSETN = 0x8006740a;
|
||||
static const unsigned TGT_TIOCSETC = 0x80067411;
|
||||
static const unsigned TGT_TIOCGETC = 0x40067412;
|
||||
static const unsigned TGT_FIONREAD = 0x4004667f;
|
||||
static const unsigned TGT_TIOCISATTY = 0x2000745e;
|
||||
static const unsigned TGT_TCGETS = 0x402c7413;
|
||||
static const unsigned TGT_TCGETA = 0x40127417;
|
||||
static const unsigned TGT_TCSETAW = 0x80147419; // 2.6.15 kernel
|
||||
//@}
|
||||
|
||||
static bool
|
||||
isTtyReq(unsigned req)
|
||||
{
|
||||
switch (req) {
|
||||
case TGT_TIOCGETP:
|
||||
case TGT_TIOCSETP:
|
||||
case TGT_TIOCSETN:
|
||||
case TGT_TIOCSETC:
|
||||
case TGT_TIOCGETC:
|
||||
case TGT_FIONREAD:
|
||||
case TGT_TIOCISATTY:
|
||||
case TGT_TCGETS:
|
||||
case TGT_TCGETA:
|
||||
case TGT_TCSETAW:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
//@{
|
||||
/// For table().
|
||||
static const int TBL_SYSINFO = 12;
|
||||
//@}
|
||||
|
||||
/// Resource enumeration for getrlimit().
|
||||
enum rlimit_resources {
|
||||
TGT_RLIMIT_CPU = 0,
|
||||
TGT_RLIMIT_FSIZE = 1,
|
||||
TGT_RLIMIT_DATA = 2,
|
||||
TGT_RLIMIT_STACK = 3,
|
||||
TGT_RLIMIT_CORE = 4,
|
||||
TGT_RLIMIT_RSS = 5,
|
||||
TGT_RLIMIT_NOFILE = 6,
|
||||
TGT_RLIMIT_AS = 7,
|
||||
TGT_RLIMIT_VMEM = 7,
|
||||
TGT_RLIMIT_NPROC = 8,
|
||||
TGT_RLIMIT_MEMLOCK = 9,
|
||||
TGT_RLIMIT_LOCKS = 10
|
||||
};
|
||||
};
|
||||
|
||||
#endif // __ALPHA_ALPHA_TRU64_TRU64_HH__
|
||||
@@ -44,11 +44,3 @@ Source('system_events.cc')
|
||||
|
||||
DebugFlag('DebugPrintf')
|
||||
DebugFlag('Printf')
|
||||
|
||||
if env['TARGET_ISA'] == 'alpha':
|
||||
Source('tru64/dump_mbuf.cc')
|
||||
Source('tru64/printf.cc')
|
||||
Source('tru64/tru64_events.cc')
|
||||
Source('tru64/tru64_syscalls.cc')
|
||||
|
||||
DebugFlag('BADADDR')
|
||||
|
||||
@@ -34,9 +34,6 @@
|
||||
#include "base/trace.hh"
|
||||
#include "cpu/thread_context.hh"
|
||||
#include "kern/kernel_stats.hh"
|
||||
#if THE_ISA == ALPHA_ISA
|
||||
#include "kern/tru64/tru64_syscalls.hh"
|
||||
#endif
|
||||
#include "sim/system.hh"
|
||||
|
||||
using namespace std;
|
||||
@@ -92,24 +89,6 @@ Statistics::regStats(const string &_name)
|
||||
;
|
||||
|
||||
_iplUsed = _iplGood / _iplCount;
|
||||
#if THE_ISA == ALPHA_ISA
|
||||
_syscall
|
||||
.init(SystemCalls<Tru64>::Number)
|
||||
.name(name() + ".syscall")
|
||||
.desc("number of syscalls executed")
|
||||
.flags(total | pdf | nozero | nonan)
|
||||
;
|
||||
#endif
|
||||
|
||||
//@todo This needs to get the names of syscalls from an appropriate place.
|
||||
#if 0
|
||||
for (int i = 0; i < SystemCalls<Tru64>::Number; ++i) {
|
||||
const char *str = SystemCalls<Tru64>::name(i);
|
||||
if (str) {
|
||||
_syscall.subname(i, str);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -58,11 +58,6 @@ class Statistics : public Serializable
|
||||
Stats::Vector _iplTicks;
|
||||
Stats::Formula _iplUsed;
|
||||
|
||||
#if THE_ISA == ALPHA_ISA
|
||||
Stats::Vector _syscall;
|
||||
#endif
|
||||
// Stats::Vector _faults;
|
||||
|
||||
private:
|
||||
int iplLast;
|
||||
Tick iplLastTick;
|
||||
|
||||
@@ -1,82 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2003-2005 The Regents of The University of Michigan
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met: redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer;
|
||||
* redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution;
|
||||
* neither the name of the copyright holders nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from
|
||||
* this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Authors: Nathan Binkert
|
||||
*/
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
#include "arch/isa_traits.hh"
|
||||
#include "arch/vtophys.hh"
|
||||
#include "base/loader/symtab.hh"
|
||||
#include "base/cprintf.hh"
|
||||
#include "base/trace.hh"
|
||||
#include "base/types.hh"
|
||||
#include "config/the_isa.hh"
|
||||
#include "cpu/thread_context.hh"
|
||||
#include "kern/tru64/dump_mbuf.hh"
|
||||
#include "kern/tru64/mbuf.hh"
|
||||
#include "sim/arguments.hh"
|
||||
#include "sim/system.hh"
|
||||
|
||||
using namespace TheISA;
|
||||
|
||||
namespace tru64 {
|
||||
|
||||
void
|
||||
DumpMbuf(Arguments args)
|
||||
{
|
||||
ThreadContext *tc = args.getThreadContext();
|
||||
StringWrap name(tc->getSystemPtr()->name());
|
||||
Addr addr = (Addr)args;
|
||||
struct mbuf m;
|
||||
|
||||
CopyOut(tc, &m, addr, sizeof(m));
|
||||
|
||||
int count = m.m_pkthdr.len;
|
||||
|
||||
DPRINTFN("m=%#lx, m->m_pkthdr.len=%#d\n", addr, m.m_pkthdr.len);
|
||||
|
||||
while (count > 0) {
|
||||
DPRINTFN("m=%#lx, m->m_data=%#lx, m->m_len=%d\n",
|
||||
addr, m.m_data, m.m_len);
|
||||
char *buffer = new char[m.m_len];
|
||||
CopyOut(tc, buffer, m.m_data, m.m_len);
|
||||
DDUMPN((uint8_t *)buffer, m.m_len);
|
||||
delete [] buffer;
|
||||
|
||||
count -= m.m_len;
|
||||
if (!m.m_next)
|
||||
break;
|
||||
|
||||
CopyOut(tc, &m, m.m_next, sizeof(m));
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace Tru64
|
||||
@@ -1,40 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2003-2005 The Regents of The University of Michigan
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met: redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer;
|
||||
* redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution;
|
||||
* neither the name of the copyright holders nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from
|
||||
* this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Authors: Nathan Binkert
|
||||
*/
|
||||
|
||||
#ifndef __DUMP_MBUF_HH__
|
||||
#define __DUMP_MBUF_HH__
|
||||
|
||||
#include "sim/arguments.hh"
|
||||
|
||||
namespace tru64 {
|
||||
void DumpMbuf(Arguments args);
|
||||
}
|
||||
|
||||
#endif // __DUMP_MBUF_HH__
|
||||
@@ -1,100 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2003-2005 The Regents of The University of Michigan
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met: redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer;
|
||||
* redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution;
|
||||
* neither the name of the copyright holders nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from
|
||||
* this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Authors: Nathan Binkert
|
||||
*/
|
||||
|
||||
#ifndef __MBUF_HH__
|
||||
#define __MBUF_HH__
|
||||
|
||||
#include "arch/isa_traits.hh"
|
||||
#include "base/types.hh"
|
||||
|
||||
namespace tru64 {
|
||||
|
||||
struct m_hdr {
|
||||
Addr mh_next; // 0x00
|
||||
Addr mh_nextpkt; // 0x08
|
||||
Addr mh_data; // 0x10
|
||||
int32_t mh_len; // 0x18
|
||||
int32_t mh_type; // 0x1C
|
||||
int32_t mh_flags; // 0x20
|
||||
int32_t mh_pad0; // 0x24
|
||||
Addr mh_foo[4]; // 0x28, 0x30, 0x38, 0x40
|
||||
};
|
||||
|
||||
struct pkthdr {
|
||||
int32_t len;
|
||||
int32_t protocolSum;
|
||||
Addr rcvif;
|
||||
};
|
||||
|
||||
struct m_ext {
|
||||
Addr ext_buf; // 0x00
|
||||
Addr ext_free; // 0x08
|
||||
uint32_t ext_size; // 0x10
|
||||
uint32_t ext_pad0; // 0x14
|
||||
Addr ext_arg; // 0x18
|
||||
struct ext_refq {
|
||||
Addr forw, back; // 0x20, 0x28
|
||||
} ext_ref;
|
||||
Addr uiomove_f; // 0x30
|
||||
int32_t protocolSum; // 0x38
|
||||
int32_t bytesSummed; // 0x3C
|
||||
Addr checksum; // 0x40
|
||||
};
|
||||
|
||||
struct mbuf {
|
||||
struct m_hdr m_hdr;
|
||||
union {
|
||||
struct {
|
||||
struct pkthdr MH_pkthdr;
|
||||
union {
|
||||
struct m_ext MH_ext;
|
||||
char MH_databuf[1];
|
||||
} MH_dat;
|
||||
} MH;
|
||||
char M_databuf[1];
|
||||
} M_dat;
|
||||
};
|
||||
|
||||
#define m_attr m_hdr.mh_attr
|
||||
#define m_next m_hdr.mh_next
|
||||
#define m_len m_hdr.mh_len
|
||||
#define m_data m_hdr.mh_data
|
||||
#define m_type m_hdr.mh_type
|
||||
#define m_flags m_hdr.mh_flags
|
||||
#define m_nextpkt m_hdr.mh_nextpkt
|
||||
#define m_act m_nextpkt
|
||||
#define m_pkthdr M_dat.MH.MH_pkthdr
|
||||
#define m_ext M_dat.MH.MH_dat.MH_ext
|
||||
#define m_pktdat M_dat.MH.MH_dat.MH_databuf
|
||||
#define m_dat M_dat.M_databuf
|
||||
|
||||
}
|
||||
|
||||
#endif // __MBUF_HH__
|
||||
@@ -1,272 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2003-2005 The Regents of The University of Michigan
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met: redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer;
|
||||
* redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution;
|
||||
* neither the name of the copyright holders nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from
|
||||
* this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Authors: Nathan Binkert
|
||||
*/
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
#include "arch/vtophys.hh"
|
||||
#include "base/cprintf.hh"
|
||||
#include "base/trace.hh"
|
||||
#include "base/types.hh"
|
||||
#include "kern/tru64/printf.hh"
|
||||
#include "sim/arguments.hh"
|
||||
|
||||
using namespace std;
|
||||
|
||||
namespace tru64 {
|
||||
|
||||
void
|
||||
Printf(Arguments args)
|
||||
{
|
||||
std::ostream &out = Trace::output();
|
||||
|
||||
char *p = (char *)args++;
|
||||
|
||||
ios::fmtflags saved_flags = out.flags();
|
||||
char old_fill = out.fill();
|
||||
int old_precision = out.precision();
|
||||
|
||||
while (*p) {
|
||||
switch (*p) {
|
||||
case '%': {
|
||||
bool more = true;
|
||||
bool islong = false;
|
||||
bool leftjustify = false;
|
||||
bool format = false;
|
||||
bool zero = false;
|
||||
int width = 0;
|
||||
while (more && *++p) {
|
||||
switch (*p) {
|
||||
case 'l':
|
||||
case 'L':
|
||||
islong = true;
|
||||
break;
|
||||
case '-':
|
||||
leftjustify = true;
|
||||
break;
|
||||
case '#':
|
||||
format = true;
|
||||
break;
|
||||
case '0':
|
||||
if (width)
|
||||
width *= 10;
|
||||
else
|
||||
zero = true;
|
||||
break;
|
||||
default:
|
||||
if (*p >= '1' && *p <= '9')
|
||||
width = 10 * width + *p - '0';
|
||||
else
|
||||
more = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
bool hexnum = false;
|
||||
bool octal = false;
|
||||
bool sign = false;
|
||||
switch (*p) {
|
||||
case 'X':
|
||||
case 'x':
|
||||
hexnum = true;
|
||||
break;
|
||||
case 'O':
|
||||
case 'o':
|
||||
octal = true;
|
||||
break;
|
||||
case 'D':
|
||||
case 'd':
|
||||
sign = true;
|
||||
break;
|
||||
case 'P':
|
||||
format = true;
|
||||
case 'p':
|
||||
hexnum = true;
|
||||
break;
|
||||
}
|
||||
|
||||
switch (*p) {
|
||||
case 'D':
|
||||
case 'd':
|
||||
case 'U':
|
||||
case 'u':
|
||||
case 'X':
|
||||
case 'x':
|
||||
case 'O':
|
||||
case 'o':
|
||||
case 'P':
|
||||
case 'p': {
|
||||
if (hexnum)
|
||||
out << hex;
|
||||
|
||||
if (octal)
|
||||
out << oct;
|
||||
|
||||
if (format) {
|
||||
if (!zero)
|
||||
out.setf(ios::showbase);
|
||||
else {
|
||||
if (hexnum) {
|
||||
out << "0x";
|
||||
width -= 2;
|
||||
} else if (octal) {
|
||||
out << "0";
|
||||
width -= 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (zero)
|
||||
out.fill('0');
|
||||
|
||||
if (width > 0)
|
||||
out.width(width);
|
||||
|
||||
if (leftjustify && !zero)
|
||||
out.setf(ios::left);
|
||||
|
||||
if (sign) {
|
||||
if (islong)
|
||||
out << (int64_t)args;
|
||||
else
|
||||
out << (int32_t)args;
|
||||
} else {
|
||||
if (islong)
|
||||
out << (uint64_t)args;
|
||||
else
|
||||
out << (uint32_t)args;
|
||||
}
|
||||
|
||||
if (zero)
|
||||
out.fill(' ');
|
||||
|
||||
if (width > 0)
|
||||
out.width(0);
|
||||
|
||||
out << dec;
|
||||
|
||||
++args;
|
||||
}
|
||||
break;
|
||||
|
||||
case 's': {
|
||||
const char *s = (char *)args;
|
||||
if (!s)
|
||||
s = "<NULL>";
|
||||
|
||||
if (width > 0)
|
||||
out.width(width);
|
||||
if (leftjustify)
|
||||
out.setf(ios::left);
|
||||
|
||||
out << s;
|
||||
++args;
|
||||
}
|
||||
break;
|
||||
case 'C':
|
||||
case 'c': {
|
||||
uint64_t mask = (*p == 'C') ? 0xffL : 0x7fL;
|
||||
uint64_t num;
|
||||
int width;
|
||||
|
||||
if (islong) {
|
||||
num = (uint64_t)args;
|
||||
width = sizeof(uint64_t);
|
||||
} else {
|
||||
num = (uint32_t)args;
|
||||
width = sizeof(uint32_t);
|
||||
}
|
||||
|
||||
while (width-- > 0) {
|
||||
char c = (char)(num & mask);
|
||||
if (c)
|
||||
out << c;
|
||||
num >>= 8;
|
||||
}
|
||||
|
||||
++args;
|
||||
}
|
||||
break;
|
||||
case 'b': {
|
||||
uint64_t n = (uint64_t)args++;
|
||||
char *s = (char *)args++;
|
||||
out << s << ": " << n;
|
||||
}
|
||||
break;
|
||||
case 'n':
|
||||
case 'N': {
|
||||
args += 2;
|
||||
#if 0
|
||||
uint64_t n = (uint64_t)args++;
|
||||
struct reg_values *rv = (struct reg_values *)args++;
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
case 'r':
|
||||
case 'R': {
|
||||
args += 2;
|
||||
#if 0
|
||||
uint64_t n = (uint64_t)args++;
|
||||
struct reg_desc *rd = (struct reg_desc *)args++;
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
case '%':
|
||||
out << '%';
|
||||
break;
|
||||
}
|
||||
++p;
|
||||
}
|
||||
break;
|
||||
case '\n':
|
||||
out << endl;
|
||||
++p;
|
||||
break;
|
||||
case '\r':
|
||||
++p;
|
||||
if (*p != '\n')
|
||||
out << endl;
|
||||
break;
|
||||
|
||||
default: {
|
||||
size_t len = strcspn(p, "%\n\r\0");
|
||||
out.write(p, len);
|
||||
p += len;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
out.flags(saved_flags);
|
||||
out.fill(old_fill);
|
||||
out.precision(old_precision);
|
||||
}
|
||||
|
||||
} // namespace Tru64
|
||||
@@ -1,40 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2003-2005 The Regents of The University of Michigan
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met: redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer;
|
||||
* redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution;
|
||||
* neither the name of the copyright holders nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from
|
||||
* this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Authors: Nathan Binkert
|
||||
*/
|
||||
|
||||
#ifndef __PRINTF_HH__
|
||||
#define __PRINTF_HH__
|
||||
|
||||
#include "sim/arguments.hh"
|
||||
|
||||
namespace tru64 {
|
||||
void Printf(Arguments args);
|
||||
}
|
||||
|
||||
#endif // __PRINTF_HH__
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,114 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2003-2005 The Regents of The University of Michigan
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met: redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer;
|
||||
* redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution;
|
||||
* neither the name of the copyright holders nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from
|
||||
* this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Authors: Nathan Binkert
|
||||
* Lisa Hsu
|
||||
*/
|
||||
|
||||
#include "arch/alpha/ev5.hh"
|
||||
#include "arch/isa_traits.hh"
|
||||
#include "config/the_isa.hh"
|
||||
#include "cpu/base.hh"
|
||||
#include "cpu/thread_context.hh"
|
||||
#include "debug/BADADDR.hh"
|
||||
#include "debug/DebugPrintf.hh"
|
||||
#include "debug/Printf.hh"
|
||||
#include "kern/tru64/dump_mbuf.hh"
|
||||
#include "kern/tru64/printf.hh"
|
||||
#include "kern/tru64/tru64_events.hh"
|
||||
#include "kern/system_events.hh"
|
||||
#include "sim/arguments.hh"
|
||||
#include "sim/system.hh"
|
||||
|
||||
using namespace TheISA;
|
||||
|
||||
//void SkipFuncEvent::process(ExecContext *tc);
|
||||
|
||||
void
|
||||
BadAddrEvent::process(ThreadContext *tc)
|
||||
{
|
||||
// The following gross hack is the equivalent function to the
|
||||
// annotation for vmunix::badaddr in:
|
||||
// simos/simulation/apps/tcl/osf/tlaser.tcl
|
||||
|
||||
uint64_t a0 = tc->readIntReg(16);
|
||||
|
||||
bool found = false;
|
||||
|
||||
MasterPort &dataPort = tc->getCpuPtr()->getDataPort();
|
||||
|
||||
// get the address ranges of the connected slave port
|
||||
AddrRangeList resp = dataPort.getAddrRanges();
|
||||
for (const auto &iter : resp) {
|
||||
if (iter.contains(K0Seg2Phys(a0) & PAddrImplMask))
|
||||
found = true;
|
||||
}
|
||||
|
||||
if (!IsK0Seg(a0) || found ) {
|
||||
|
||||
DPRINTF(BADADDR, "badaddr arg=%#x bad\n", a0);
|
||||
tc->setIntReg(ReturnValueReg, 0x1);
|
||||
SkipFuncEvent::process(tc);
|
||||
} else {
|
||||
DPRINTF(BADADDR, "badaddr arg=%#x good\n", a0);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
PrintfEvent::process(ThreadContext *tc)
|
||||
{
|
||||
if (DTRACE(Printf)) {
|
||||
StringWrap name(tc->getSystemPtr()->name());
|
||||
DPRINTFN("");
|
||||
|
||||
Arguments args(tc);
|
||||
tru64::Printf(args);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
DebugPrintfEvent::process(ThreadContext *tc)
|
||||
{
|
||||
if (DTRACE(DebugPrintf)) {
|
||||
if (!raw) {
|
||||
StringWrap name(tc->getSystemPtr()->name());
|
||||
DPRINTFN("");
|
||||
}
|
||||
|
||||
Arguments args(tc);
|
||||
tru64::Printf(args);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
DumpMbufEvent::process(ThreadContext *tc)
|
||||
{
|
||||
if (DTRACE(DebugPrintf)) {
|
||||
Arguments args(tc);
|
||||
tru64::DumpMbuf(args);
|
||||
}
|
||||
}
|
||||
@@ -1,86 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2003-2005 The Regents of The University of Michigan
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met: redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer;
|
||||
* redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution;
|
||||
* neither the name of the copyright holders nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from
|
||||
* this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Authors: Nathan Binkert
|
||||
* Lisa Hsu
|
||||
*/
|
||||
|
||||
#ifndef __TRU64_EVENTS_HH__
|
||||
#define __TRU64_EVENTS_HH__
|
||||
|
||||
#include <string>
|
||||
|
||||
#include "cpu/pc_event.hh"
|
||||
#include "kern/system_events.hh"
|
||||
|
||||
class ThreadContext;
|
||||
|
||||
class BadAddrEvent : public SkipFuncEvent
|
||||
{
|
||||
public:
|
||||
BadAddrEvent(PCEventQueue *q, const std::string &desc, Addr addr)
|
||||
: SkipFuncEvent(q, desc, addr) {}
|
||||
virtual void process(ThreadContext *tc);
|
||||
};
|
||||
|
||||
class PrintfEvent : public PCEvent
|
||||
{
|
||||
public:
|
||||
PrintfEvent(PCEventQueue *q, const std::string &desc, Addr addr)
|
||||
: PCEvent(q, desc, addr) {}
|
||||
virtual void process(ThreadContext *tc);
|
||||
};
|
||||
|
||||
class DebugPrintfEvent : public PCEvent
|
||||
{
|
||||
private:
|
||||
bool raw;
|
||||
|
||||
public:
|
||||
DebugPrintfEvent(PCEventQueue *q, const std::string &desc, Addr addr,
|
||||
bool r = false)
|
||||
: PCEvent(q, desc, addr), raw(r) {}
|
||||
virtual void process(ThreadContext *tc);
|
||||
};
|
||||
|
||||
class DebugPrintfrEvent : public DebugPrintfEvent
|
||||
{
|
||||
public:
|
||||
DebugPrintfrEvent(PCEventQueue *q, const std::string &desc, Addr addr)
|
||||
: DebugPrintfEvent(q, desc, addr, true)
|
||||
{}
|
||||
};
|
||||
|
||||
class DumpMbufEvent : public PCEvent
|
||||
{
|
||||
public:
|
||||
DumpMbufEvent(PCEventQueue *q, const std::string &desc, Addr addr)
|
||||
: PCEvent(q, desc, addr) {}
|
||||
virtual void process(ThreadContext *tc);
|
||||
};
|
||||
|
||||
#endif // __TRU64_EVENTS_HH__
|
||||
@@ -1,440 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2003-2005 The Regents of The University of Michigan
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met: redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer;
|
||||
* redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution;
|
||||
* neither the name of the copyright holders nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from
|
||||
* this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Authors: Nathan Binkert
|
||||
*/
|
||||
|
||||
#include "kern/tru64/tru64_syscalls.hh"
|
||||
|
||||
namespace {
|
||||
const char *
|
||||
standard_strings[SystemCalls<Tru64>::StandardNumber] = {
|
||||
"syscall", // 0
|
||||
"exit", // 1
|
||||
"fork", // 2
|
||||
"read", // 3
|
||||
"write", // 4
|
||||
"old_open", // 5
|
||||
"close", // 6
|
||||
"wait4", // 7
|
||||
"old_creat", // 8
|
||||
"link", // 9
|
||||
|
||||
"unlink", // 10
|
||||
"execv", // 11
|
||||
"chdir", // 12
|
||||
"fchdir", // 13
|
||||
"mknod", // 14
|
||||
"chmod", // 15
|
||||
"chown", // 16
|
||||
"obreak", // 17
|
||||
"pre_F64_getfsstat", // 18
|
||||
"lseek", // 19
|
||||
|
||||
"getpid", // 20
|
||||
"mount", // 21
|
||||
"unmount", // 22
|
||||
"setuid", // 23
|
||||
"getuid", // 24
|
||||
"exec_with_loader", // 25
|
||||
"ptrace", // 26
|
||||
"recvmsg", // 27
|
||||
"sendmsg", // 28
|
||||
"recvfrom", // 29
|
||||
|
||||
"accept", // 30
|
||||
"getpeername", // 31
|
||||
"getsockname", // 32
|
||||
"access", // 33
|
||||
"chflags", // 34
|
||||
"fchflags", // 35
|
||||
"sync", // 36
|
||||
"kill", // 37
|
||||
"old_stat", // 38
|
||||
"setpgid", // 39
|
||||
|
||||
"old_lstat", // 40
|
||||
"dup", // 41
|
||||
"pipe", // 42
|
||||
"set_program_attributes", // 43
|
||||
"profil", // 44
|
||||
"open", // 45
|
||||
"obsolete_osigaction", // 46
|
||||
"getgid", // 47
|
||||
"sigprocmask", // 48
|
||||
"getlogin", // 49
|
||||
|
||||
"setlogin", // 50
|
||||
"acct", // 51
|
||||
"sigpending", // 52
|
||||
"classcntl", // 53
|
||||
"ioctl", // 54
|
||||
"reboot", // 55
|
||||
"revoke", // 56
|
||||
"symlink", // 57
|
||||
"readlink", // 58
|
||||
"execve", // 59
|
||||
|
||||
"umask", // 60
|
||||
"chroot", // 61
|
||||
"old_fstat", // 62
|
||||
"getpgrp", // 63
|
||||
"getpagesize", // 64
|
||||
"mremap", // 65
|
||||
"vfork", // 66
|
||||
"pre_F64_stat", // 67
|
||||
"pre_F64_lstat", // 68
|
||||
"sbrk", // 69
|
||||
|
||||
"sstk", // 70
|
||||
"mmap", // 71
|
||||
"ovadvise", // 72
|
||||
"munmap", // 73
|
||||
"mprotect", // 74
|
||||
"madvise", // 75
|
||||
"old_vhangup", // 76
|
||||
"kmodcall", // 77
|
||||
"mincore", // 78
|
||||
"getgroups", // 79
|
||||
|
||||
"setgroups", // 80
|
||||
"old_getpgrp", // 81
|
||||
"setpgrp", // 82
|
||||
"setitimer", // 83
|
||||
"old_wait", // 84
|
||||
"table", // 85
|
||||
"getitimer", // 86
|
||||
"gethostname", // 87
|
||||
"sethostname", // 88
|
||||
"getdtablesize", // 89
|
||||
|
||||
"dup2", // 90
|
||||
"pre_F64_fstat", // 91
|
||||
"fcntl", // 92
|
||||
"select", // 93
|
||||
"poll", // 94
|
||||
"fsync", // 95
|
||||
"setpriority", // 96
|
||||
"socket", // 97
|
||||
"connect", // 98
|
||||
"old_accept", // 99
|
||||
|
||||
"getpriority", // 100
|
||||
"old_send", // 101
|
||||
"old_recv", // 102
|
||||
"sigreturn", // 103
|
||||
"bind", // 104
|
||||
"setsockopt", // 105
|
||||
"listen", // 106
|
||||
"plock", // 107
|
||||
"old_sigvec", // 108
|
||||
"old_sigblock", // 109
|
||||
|
||||
"old_sigsetmask", // 110
|
||||
"sigsuspend", // 111
|
||||
"sigstack", // 112
|
||||
"old_recvmsg", // 113
|
||||
"old_sendmsg", // 114
|
||||
"obsolete_vtrcae", // 115
|
||||
"gettimeofday", // 116
|
||||
"getrusage", // 117
|
||||
"getsockopt", // 118
|
||||
"numa_syscalls", // 119
|
||||
|
||||
"readv", // 120
|
||||
"writev", // 121
|
||||
"settimeofday", // 122
|
||||
"fchown", // 123
|
||||
"fchmod", // 124
|
||||
"old_recvfrom", // 125
|
||||
"setreuid", // 126
|
||||
"setregid", // 127
|
||||
"rename", // 128
|
||||
"truncate", // 129
|
||||
|
||||
"ftruncate", // 130
|
||||
"flock", // 131
|
||||
"setgid", // 132
|
||||
"sendto", // 133
|
||||
"shutdown", // 134
|
||||
"socketpair", // 135
|
||||
"mkdir", // 136
|
||||
"rmdir", // 137
|
||||
"utimes", // 138
|
||||
"obsolete_42_sigreturn", // 139
|
||||
|
||||
"adjtime", // 140
|
||||
"old_getpeername", // 141
|
||||
"gethostid", // 142
|
||||
"sethostid", // 143
|
||||
"getrlimit", // 144
|
||||
"setrlimit", // 145
|
||||
"old_killpg", // 146
|
||||
"setsid", // 147
|
||||
"quotactl", // 148
|
||||
"oldquota", // 149
|
||||
|
||||
"old_getsockname", // 150
|
||||
"pread", // 151
|
||||
"pwrite", // 152
|
||||
"pid_block", // 153
|
||||
"pid_unblock", // 154
|
||||
"signal_urti", // 155
|
||||
"sigaction", // 156
|
||||
"sigwaitprim", // 157
|
||||
"nfssvc", // 158
|
||||
"getdirentries", // 159
|
||||
|
||||
"pre_F64_statfs", // 160
|
||||
"pre_F64_fstatfs", // 161
|
||||
0, // 162
|
||||
"async_daemon", // 163
|
||||
"getfh", // 164
|
||||
"getdomainname", // 165
|
||||
"setdomainname", // 166
|
||||
0, // 167
|
||||
0, // 168
|
||||
"exportfs", // 169
|
||||
|
||||
0, // 170
|
||||
0, // 171
|
||||
0, // 172
|
||||
0, // 173
|
||||
0, // 174
|
||||
0, // 175
|
||||
0, // 176
|
||||
0, // 177
|
||||
0, // 178
|
||||
0, // 179
|
||||
|
||||
0, // 180
|
||||
"alt_plock", // 181
|
||||
0, // 182
|
||||
0, // 183
|
||||
"getmnt", // 184
|
||||
0, // 185
|
||||
0, // 186
|
||||
"alt_sigpending", // 187
|
||||
"alt_setsid", // 188
|
||||
0, // 189
|
||||
|
||||
0, // 190
|
||||
0, // 191
|
||||
0, // 192
|
||||
0, // 193
|
||||
0, // 194
|
||||
0, // 195
|
||||
0, // 196
|
||||
0, // 197
|
||||
0, // 198
|
||||
"swapon", // 199
|
||||
|
||||
"msgctl", // 200
|
||||
"msgget", // 201
|
||||
"msgrcv", // 202
|
||||
"msgsnd", // 203
|
||||
"semctl", // 204
|
||||
"semget", // 205
|
||||
"semop", // 206
|
||||
"uname", // 207
|
||||
"lchown", // 208
|
||||
"shmat", // 209
|
||||
|
||||
"shmctl", // 210
|
||||
"shmdt", // 211
|
||||
"shmget", // 212
|
||||
"mvalid", // 213
|
||||
"getaddressconf", // 214
|
||||
"msleep", // 215
|
||||
"mwakeup", // 216
|
||||
"msync", // 217
|
||||
"signal", // 218
|
||||
"utc_gettime", // 219
|
||||
|
||||
"utc_adjtime", // 220
|
||||
0, // 221
|
||||
"security", // 222
|
||||
"kloadcall", // 223
|
||||
"stat", // 224
|
||||
"lstat", // 225
|
||||
"fstat", // 226
|
||||
"statfs", // 227
|
||||
"fstatfs", // 228
|
||||
"getfsstat", // 229
|
||||
|
||||
"gettimeofday64", // 230
|
||||
"settimeofday64", // 231
|
||||
0, // 232
|
||||
"getpgid", // 233
|
||||
"getsid", // 234
|
||||
"sigaltstack", // 235
|
||||
"waitid", // 236
|
||||
"priocntlset", // 237
|
||||
"sigsendset", // 238
|
||||
"set_speculative", // 239
|
||||
|
||||
"msfs_syscall", // 240
|
||||
"sysinfo", // 241
|
||||
"uadmin", // 242
|
||||
"fuser", // 243
|
||||
"proplist_syscall", // 244
|
||||
"ntp_adjtime", // 245
|
||||
"ntp_gettime", // 246
|
||||
"pathconf", // 247
|
||||
"fpathconf", // 248
|
||||
"sync2", // 249
|
||||
|
||||
"uswitch", // 250
|
||||
"usleep_thread", // 251
|
||||
"audcntl", // 252
|
||||
"audgen", // 253
|
||||
"sysfs", // 254
|
||||
"subsys_info", // 255
|
||||
"getsysinfo", // 256
|
||||
"setsysinfo", // 257
|
||||
"afs_syscall", // 258
|
||||
"swapctl", // 259
|
||||
|
||||
"memcntl", // 260
|
||||
"fdatasync", // 261
|
||||
"oflock", // 262
|
||||
"_F64_readv", // 263
|
||||
"_F64_writev", // 264
|
||||
"cdslxlate", // 265
|
||||
"sendfile", // 266
|
||||
};
|
||||
|
||||
const char *
|
||||
mach_strings[SystemCalls<Tru64>::MachNumber] = {
|
||||
0, // 0
|
||||
0, // 1
|
||||
0, // 2
|
||||
0, // 3
|
||||
0, // 4
|
||||
0, // 5
|
||||
0, // 6
|
||||
0, // 7
|
||||
0, // 8
|
||||
0, // 9
|
||||
|
||||
"task_self", // 10
|
||||
"thread_reply", // 11
|
||||
"task_notify", // 12
|
||||
"thread_self", // 13
|
||||
0, // 14
|
||||
0, // 15
|
||||
0, // 16
|
||||
0, // 17
|
||||
0, // 18
|
||||
0, // 19
|
||||
|
||||
"msg_send_trap", // 20
|
||||
"msg_receive_trap", // 21
|
||||
"msg_rpc_trap", // 22
|
||||
0, // 23
|
||||
"nxm_block", // 24
|
||||
"nxm_unblock", // 25
|
||||
0, // 26
|
||||
0, // 27
|
||||
0, // 28
|
||||
"nxm_thread_destroy", // 29
|
||||
|
||||
"lw_wire", // 30
|
||||
"lw_unwire", // 31
|
||||
"nxm_thread_create", // 32
|
||||
"nxm_task_init", // 33
|
||||
0, // 34
|
||||
"nxm_idle", // 35
|
||||
"nxm_wakeup_idle", // 36
|
||||
"nxm_set_pthid", // 37
|
||||
"nxm_thread_kill", // 38
|
||||
"nxm_thread_block", // 39
|
||||
|
||||
"nxm_thread_wakeup", // 40
|
||||
"init_process", // 41
|
||||
"nxm_get_binding", // 42
|
||||
"map_fd", // 43
|
||||
"nxm_resched", // 44
|
||||
"nxm_set_cancel", // 45
|
||||
"nxm_set_binding", // 46
|
||||
"stack_create", // 47
|
||||
"nxm_get_state", // 48
|
||||
"nxm_thread_suspend", // 49
|
||||
|
||||
"nxm_thread_resume", // 50
|
||||
"nxm_signal_check", // 51
|
||||
"htg_unix_syscall", // 52
|
||||
0, // 53
|
||||
0, // 54
|
||||
"host_self", // 55
|
||||
"host_priv_self", // 56
|
||||
0, // 57
|
||||
0, // 58
|
||||
"swtch_pri", // 59
|
||||
|
||||
"swtch", // 60
|
||||
"thread_switch", // 61
|
||||
"semop_fast", // 62
|
||||
"nxm_pshared_init", // 63
|
||||
"nxm_pshared_block", // 64
|
||||
"nxm_pshared_unblock", // 65
|
||||
"nxm_pshared_destroy", // 66
|
||||
"nxm_swtch_pri", // 67
|
||||
"lw_syscall", // 68
|
||||
0, // 69
|
||||
|
||||
"mach_sctimes_0", // 70
|
||||
"mach_sctimes_1", // 71
|
||||
"mach_sctimes_2", // 72
|
||||
"mach_sctimes_3", // 73
|
||||
"mach_sctimes_4", // 74
|
||||
"mach_sctimes_5", // 75
|
||||
"mach_sctimes_6", // 76
|
||||
"mach_sctimes_7", // 77
|
||||
"mach_sctimes_8", // 78
|
||||
"mach_sctimes_9", // 79
|
||||
|
||||
"mach_sctimes_10", // 80
|
||||
"mach_sctimes_11", // 81
|
||||
"mach_sctimes_port_alloc_dealloc", // 82
|
||||
};
|
||||
}
|
||||
|
||||
const char *
|
||||
SystemCalls<Tru64>::name(int num)
|
||||
{
|
||||
if (num >= Number)
|
||||
return 0;
|
||||
else if (num >= StandardNumber)
|
||||
return mach_strings[num - StandardNumber];
|
||||
else if (num >= 0)
|
||||
return standard_strings[num];
|
||||
else if (num > -MachNumber)
|
||||
return mach_strings[-num];
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
@@ -1,361 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2003-2005 The Regents of The University of Michigan
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met: redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer;
|
||||
* redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution;
|
||||
* neither the name of the copyright holders nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from
|
||||
* this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Authors: Nathan Binkert
|
||||
*/
|
||||
|
||||
#ifndef __KERN_TRU64_TRU64_SYSCALLS_HH__
|
||||
#define __KERN_TRU64_TRU64_SYSCALLS_HH__
|
||||
|
||||
#include "kern/tru64/tru64.hh"
|
||||
|
||||
template <class OS>
|
||||
class SystemCalls;
|
||||
|
||||
template <>
|
||||
class SystemCalls<Tru64>
|
||||
{
|
||||
public:
|
||||
enum {
|
||||
syscall = 0,
|
||||
exit = 1,
|
||||
fork = 2,
|
||||
read = 3,
|
||||
write = 4,
|
||||
old_open = 5,
|
||||
close = 6,
|
||||
wait4 = 7,
|
||||
old_creat = 8,
|
||||
link = 9,
|
||||
unlink = 10,
|
||||
execv = 11,
|
||||
chdir = 12,
|
||||
fchdir = 13,
|
||||
mknod = 14,
|
||||
chmod = 15,
|
||||
chown = 16,
|
||||
obreak = 17,
|
||||
pre_F64_getfsstat = 18,
|
||||
lseek = 19,
|
||||
getpid = 20,
|
||||
mount = 21,
|
||||
unmount = 22,
|
||||
setuid = 23,
|
||||
getuid = 24,
|
||||
exec_with_loader = 25,
|
||||
ptrace = 26,
|
||||
recvmsg = 27,
|
||||
sendmsg = 28,
|
||||
recvfrom = 29,
|
||||
accept = 30,
|
||||
getpeername = 31,
|
||||
getsockname = 32,
|
||||
access = 33,
|
||||
chflags = 34,
|
||||
fchflags = 35,
|
||||
sync = 36,
|
||||
kill = 37,
|
||||
old_stat = 38,
|
||||
setpgid = 39,
|
||||
old_lstat = 40,
|
||||
dup = 41,
|
||||
pipe = 42,
|
||||
set_program_attributes = 43,
|
||||
profil = 44,
|
||||
open = 45,
|
||||
obsolete_osigaction = 46,
|
||||
getgid = 47,
|
||||
sigprocmask = 48,
|
||||
getlogin = 49,
|
||||
setlogin = 50,
|
||||
acct = 51,
|
||||
sigpending = 52,
|
||||
classcntl = 53,
|
||||
ioctl = 54,
|
||||
reboot = 55,
|
||||
revoke = 56,
|
||||
symlink = 57,
|
||||
readlink = 58,
|
||||
execve = 59,
|
||||
umask = 60,
|
||||
chroot = 61,
|
||||
old_fstat = 62,
|
||||
getpgrp = 63,
|
||||
getpagesize = 64,
|
||||
mremap = 65,
|
||||
vfork = 66,
|
||||
pre_F64_stat = 67,
|
||||
pre_F64_lstat = 68,
|
||||
sbrk = 69,
|
||||
sstk = 70,
|
||||
mmap = 71,
|
||||
ovadvise = 72,
|
||||
munmap = 73,
|
||||
mprotect = 74,
|
||||
madvise = 75,
|
||||
old_vhangup = 76,
|
||||
kmodcall = 77,
|
||||
mincore = 78,
|
||||
getgroups = 79,
|
||||
setgroups = 80,
|
||||
old_getpgrp = 81,
|
||||
setpgrp = 82,
|
||||
setitimer = 83,
|
||||
old_wait = 84,
|
||||
table = 85,
|
||||
getitimer = 86,
|
||||
gethostname = 87,
|
||||
sethostname = 88,
|
||||
getdtablesize = 89,
|
||||
dup2 = 90,
|
||||
pre_F64_fstat = 91,
|
||||
fcntl = 92,
|
||||
select = 93,
|
||||
poll = 94,
|
||||
fsync = 95,
|
||||
setpriority = 96,
|
||||
socket = 97,
|
||||
connect = 98,
|
||||
old_accept = 99,
|
||||
getpriority = 100,
|
||||
old_send = 101,
|
||||
old_recv = 102,
|
||||
sigreturn = 103,
|
||||
bind = 104,
|
||||
setsockopt = 105,
|
||||
listen = 106,
|
||||
plock = 107,
|
||||
old_sigvec = 108,
|
||||
old_sigblock = 109,
|
||||
old_sigsetmask = 110,
|
||||
sigsuspend = 111,
|
||||
sigstack = 112,
|
||||
old_recvmsg = 113,
|
||||
old_sendmsg = 114,
|
||||
obsolete_vtrcae = 115,
|
||||
gettimeofday = 116,
|
||||
getrusage = 117,
|
||||
getsockopt = 118,
|
||||
numa_syscalls = 119,
|
||||
readv = 120,
|
||||
writev = 121,
|
||||
settimeofday = 122,
|
||||
fchown = 123,
|
||||
fchmod = 124,
|
||||
old_recvfrom = 125,
|
||||
setreuid = 126,
|
||||
setregid = 127,
|
||||
rename = 128,
|
||||
truncate = 129,
|
||||
ftruncate = 130,
|
||||
flock = 131,
|
||||
setgid = 132,
|
||||
sendto = 133,
|
||||
shutdown = 134,
|
||||
socketpair = 135,
|
||||
mkdir = 136,
|
||||
rmdir = 137,
|
||||
utimes = 138,
|
||||
obsolete_42_sigreturn = 139,
|
||||
adjtime = 140,
|
||||
old_getpeername = 141,
|
||||
gethostid = 142,
|
||||
sethostid = 143,
|
||||
getrlimit = 144,
|
||||
setrlimit = 145,
|
||||
old_killpg = 146,
|
||||
setsid = 147,
|
||||
quotactl = 148,
|
||||
oldquota = 149,
|
||||
old_getsockname = 150,
|
||||
pread = 151,
|
||||
pwrite = 152,
|
||||
pid_block = 153,
|
||||
pid_unblock = 154,
|
||||
signal_urti = 155,
|
||||
sigaction = 156,
|
||||
sigwaitprim = 157,
|
||||
nfssvc = 158,
|
||||
getdirentries = 159,
|
||||
pre_F64_statfs = 160,
|
||||
pre_F64_fstatfs = 161,
|
||||
async_daemon = 163,
|
||||
getfh = 164,
|
||||
getdomainname = 165,
|
||||
setdomainname = 166,
|
||||
exportfs = 169,
|
||||
alt_plock = 181,
|
||||
getmnt = 184,
|
||||
alt_sigpending = 187,
|
||||
alt_setsid = 188,
|
||||
swapon = 199,
|
||||
msgctl = 200,
|
||||
msgget = 201,
|
||||
msgrcv = 202,
|
||||
msgsnd = 203,
|
||||
semctl = 204,
|
||||
semget = 205,
|
||||
semop = 206,
|
||||
uname = 207,
|
||||
lchown = 208,
|
||||
shmat = 209,
|
||||
shmctl = 210,
|
||||
shmdt = 211,
|
||||
shmget = 212,
|
||||
mvalid = 213,
|
||||
getaddressconf = 214,
|
||||
msleep = 215,
|
||||
mwakeup = 216,
|
||||
msync = 217,
|
||||
signal = 218,
|
||||
utc_gettime = 219,
|
||||
utc_adjtime = 220,
|
||||
security = 222,
|
||||
kloadcall = 223,
|
||||
stat = 224,
|
||||
lstat = 225,
|
||||
fstat = 226,
|
||||
statfs = 227,
|
||||
fstatfs = 228,
|
||||
getfsstat = 229,
|
||||
gettimeofday64 = 230,
|
||||
settimeofday64 = 231,
|
||||
getpgid = 233,
|
||||
getsid = 234,
|
||||
sigaltstack = 235,
|
||||
waitid = 236,
|
||||
priocntlset = 237,
|
||||
sigsendset = 238,
|
||||
set_speculative = 239,
|
||||
msfs_syscall = 240,
|
||||
sysinfo = 241,
|
||||
uadmin = 242,
|
||||
fuser = 243,
|
||||
proplist_syscall = 244,
|
||||
ntp_adjtime = 245,
|
||||
ntp_gettime = 246,
|
||||
pathconf = 247,
|
||||
fpathconf = 248,
|
||||
sync2 = 249,
|
||||
uswitch = 250,
|
||||
usleep_thread = 251,
|
||||
audcntl = 252,
|
||||
audgen = 253,
|
||||
sysfs = 254,
|
||||
subsys_info = 255,
|
||||
getsysinfo = 256,
|
||||
setsysinfo = 257,
|
||||
afs_syscall = 258,
|
||||
swapctl = 259,
|
||||
memcntl = 260,
|
||||
fdatasync = 261,
|
||||
oflock = 262,
|
||||
_F64_readv = 263,
|
||||
_F64_writev = 264,
|
||||
cdslxlate = 265,
|
||||
sendfile = 266,
|
||||
StandardNumber
|
||||
};
|
||||
|
||||
enum {
|
||||
task_self = 10,
|
||||
thread_reply = 11,
|
||||
task_notify = 12,
|
||||
thread_self = 13,
|
||||
msg_send_trap = 20,
|
||||
msg_receive_trap = 21,
|
||||
msg_rpc_trap = 22,
|
||||
nxm_block = 24,
|
||||
nxm_unblock = 25,
|
||||
nxm_thread_destroy = 29,
|
||||
lw_wire = 30,
|
||||
lw_unwire = 31,
|
||||
nxm_thread_create = 32,
|
||||
nxm_task_init = 33,
|
||||
nxm_idle = 35,
|
||||
nxm_wakeup_idle = 36,
|
||||
nxm_set_pthid = 37,
|
||||
nxm_thread_kill = 38,
|
||||
nxm_thread_block = 39,
|
||||
nxm_thread_wakeup = 40,
|
||||
init_process = 41,
|
||||
nxm_get_binding = 42,
|
||||
map_fd = 43,
|
||||
nxm_resched = 44,
|
||||
nxm_set_cancel = 45,
|
||||
nxm_set_binding = 46,
|
||||
stack_create = 47,
|
||||
nxm_get_state = 48,
|
||||
nxm_thread_suspend = 49,
|
||||
nxm_thread_resume = 50,
|
||||
nxm_signal_check = 51,
|
||||
htg_unix_syscall = 52,
|
||||
host_self = 55,
|
||||
host_priv_self = 56,
|
||||
swtch_pri = 59,
|
||||
swtch = 60,
|
||||
thread_switch = 61,
|
||||
semop_fast = 62,
|
||||
nxm_pshared_init = 63,
|
||||
nxm_pshared_block = 64,
|
||||
nxm_pshared_unblock = 65,
|
||||
nxm_pshared_destroy = 66,
|
||||
nxm_swtch_pri = 67,
|
||||
lw_syscall = 68,
|
||||
mach_sctimes_0 = 70,
|
||||
mach_sctimes_1 = 71,
|
||||
mach_sctimes_2 = 72,
|
||||
mach_sctimes_3 = 73,
|
||||
mach_sctimes_4 = 74,
|
||||
mach_sctimes_5 = 75,
|
||||
mach_sctimes_6 = 76,
|
||||
mach_sctimes_7 = 77,
|
||||
mach_sctimes_8 = 78,
|
||||
mach_sctimes_9 = 79,
|
||||
mach_sctimes_10 = 80,
|
||||
mach_sctimes_11 = 81,
|
||||
mach_sctimes_port_alloc_dealloc = 82,
|
||||
MachNumber
|
||||
};
|
||||
|
||||
static const int Number = StandardNumber + MachNumber;
|
||||
|
||||
static const char *name(int num);
|
||||
|
||||
static bool validSyscallNumber(int num) {
|
||||
return -MachNumber < num && num < StandardNumber;
|
||||
}
|
||||
|
||||
static int convert(int syscall_num) {
|
||||
if (!validSyscallNumber(syscall_num))
|
||||
return -1;
|
||||
|
||||
return syscall_num < 0 ? StandardNumber - syscall_num : syscall_num;
|
||||
}
|
||||
};
|
||||
|
||||
#endif // __KERN_TRU64_TRU64_SYSCALLS_HH__
|
||||
@@ -70,7 +70,6 @@
|
||||
|
||||
#if THE_ISA == ALPHA_ISA
|
||||
#include "arch/alpha/linux/process.hh"
|
||||
#include "arch/alpha/tru64/process.hh"
|
||||
#elif THE_ISA == SPARC_ISA
|
||||
#include "arch/sparc/linux/process.hh"
|
||||
#include "arch/sparc/solaris/process.hh"
|
||||
@@ -591,10 +590,6 @@ LiveProcess::create(LiveProcessParams * params)
|
||||
fatal("Object file architecture does not match compiled ISA (Alpha).");
|
||||
|
||||
switch (objFile->getOpSys()) {
|
||||
case ObjectFile::Tru64:
|
||||
process = new AlphaTru64Process(params, objFile);
|
||||
break;
|
||||
|
||||
case ObjectFile::UnknownOpSys:
|
||||
warn("Unknown operating system; assuming Linux.");
|
||||
// fall through
|
||||
|
||||
Reference in New Issue
Block a user