⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 alpha_linux_process.cc

📁 linux下基于c++的处理器仿真平台。具有处理器流水线
💻 CC
📖 第 1 页 / 共 3 页
字号:
	      TypedBufferArg<uint64_t> fpcr(xc->getSyscallArg(1));	      // I don't think this exactly matches the HW FPCR	      fpcr.copyIn(xc->mem);	      DPRINTFR(SyscallVerbose, "osf_setsysinfo(SSI_IEEE_FP_CONTROL): "		       " setting FPCR to 0x%x\n", *(uint64_t*)fpcr);	      return 0;	  }	  default:	    cerr << "osf_getsysinfo: unknown op " << op << endl;	    abort();	    break;	}	return 1;    }    /// Target fnctl() handler.    static SyscallReturn    fcntlFunc(SyscallDesc *desc, int callnum, Process *process,	      ExecContext *xc)    {	int fd = xc->getSyscallArg(0);	if (fd < 0 || process->sim_fd(fd) < 0)	    return -EBADF;	int cmd = xc->getSyscallArg(1);	switch (cmd) {	  case 0: // F_DUPFD	    // if we really wanted to support this, we'd need to do it	    // in the target fd space.	    warn("fcntl(%d, F_DUPFD) not supported, error returned\n", fd);	    return -EMFILE;	  case 1: // F_GETFD (get close-on-exec flag)	  case 2: // F_SETFD (set close-on-exec flag)	    return 0;		  case 3: // F_GETFL (get file flags)	  case 4: // F_SETFL (set file flags)	    // not sure if this is totally valid, but we'll pass it through	    // to the underlying OS	    warn("fcntl(%d, %d) passed through to host\n", fd, cmd);	    return fcntl(process->sim_fd(fd), cmd);	    // return 0;	  case 7: // F_GETLK  (get lock)	  case 8: // F_SETLK  (set lock)	  case 9: // F_SETLKW (set lock and wait)	    // don't mess with file locking... just act like it's OK	    warn("File lock call (fcntl(%d, %d)) ignored.\n", fd, cmd);	    return 0;	  default:	    warn("Unknown fcntl command %d\n", cmd);	    return 0;	}    }    /// Array of syscall descriptors, indexed by call number.    static SyscallDesc syscallDescs[];    /// Number of syscalls in syscallDescs[].    static const int Num_Syscall_Descs;    /// Max supported syscall number.    static const int Max_Syscall_Desc;    /// Do the specified syscall.  Just looks the call number up in    /// the table and invokes the appropriate handler.    static void    doSyscall(int callnum, Process *process, ExecContext *xc)    {	if (callnum < 0 || callnum > Max_Syscall_Desc) {	    fatal("Syscall %d out of range", callnum);	}	SyscallDesc *desc = &syscallDescs[callnum];	desc->doSyscall(callnum, process, xc);    }};  // class Linux// open(2) flags translation tableOpenFlagTransTable Linux::openFlagTable[] = {#ifdef _MSC_VER  { Linux::TGT_O_RDONLY,	_O_RDONLY },  { Linux::TGT_O_WRONLY,	_O_WRONLY },  { Linux::TGT_O_RDWR,		_O_RDWR },  { Linux::TGT_O_APPEND,	_O_APPEND },  { Linux::TGT_O_CREAT,		_O_CREAT },  { Linux::TGT_O_TRUNC,		_O_TRUNC },  { Linux::TGT_O_EXCL,		_O_EXCL },#ifdef _O_NONBLOCK  { Linux::TGT_O_NONBLOCK,	_O_NONBLOCK },#endif#ifdef _O_NOCTTY  { Linux::TGT_O_NOCTTY,	_O_NOCTTY },#endif#ifdef _O_SYNC  { Linux::TGT_O_SYNC,		_O_SYNC },#endif#else /* !_MSC_VER */  { Linux::TGT_O_RDONLY,	O_RDONLY },  { Linux::TGT_O_WRONLY,	O_WRONLY },  { Linux::TGT_O_RDWR,		O_RDWR },  { Linux::TGT_O_APPEND,	O_APPEND },  { Linux::TGT_O_CREAT,		O_CREAT },  { Linux::TGT_O_TRUNC,		O_TRUNC },  { Linux::TGT_O_EXCL,		O_EXCL },  { Linux::TGT_O_NONBLOCK,	O_NONBLOCK },  { Linux::TGT_O_NOCTTY,	O_NOCTTY },#ifdef O_SYNC  { Linux::TGT_O_SYNC,		O_SYNC },#endif#endif /* _MSC_VER */};const int Linux::NUM_OPEN_FLAGS =	(sizeof(Linux::openFlagTable)/sizeof(Linux::openFlagTable[0]));const char *Linux::hostname = "m5.eecs.umich.edu";SyscallDesc Linux::syscallDescs[] = {    /*  0 */ SyscallDesc("osf_syscall", unimplementedFunc),    /*  1 */ SyscallDesc("exit", exitFunc),    /*  2 */ SyscallDesc("fork", unimplementedFunc),    /*  3 */ SyscallDesc("read", readFunc),    /*  4 */ SyscallDesc("write", writeFunc),    /*  5 */ SyscallDesc("osf_old_open", unimplementedFunc),    /*  6 */ SyscallDesc("close", closeFunc),    /*  7 */ SyscallDesc("osf_wait4", unimplementedFunc),    /*  8 */ SyscallDesc("osf_old_creat", unimplementedFunc),    /*  9 */ SyscallDesc("link", unimplementedFunc),    /* 10 */ SyscallDesc("unlink", unlinkFunc),    /* 11 */ SyscallDesc("osf_execve", unimplementedFunc),    /* 12 */ SyscallDesc("chdir", unimplementedFunc),    /* 13 */ SyscallDesc("fchdir", unimplementedFunc),    /* 14 */ SyscallDesc("mknod", unimplementedFunc),    /* 15 */ SyscallDesc("chmod", unimplementedFunc),    /* 16 */ SyscallDesc("chown", unimplementedFunc),    /* 17 */ SyscallDesc("brk", obreakFunc),    /* 18 */ SyscallDesc("osf_getfsstat", unimplementedFunc),    /* 19 */ SyscallDesc("lseek", lseekFunc),    /* 20 */ SyscallDesc("getxpid", getpidFunc),    /* 21 */ SyscallDesc("osf_mount", unimplementedFunc),    /* 22 */ SyscallDesc("umount", unimplementedFunc),    /* 23 */ SyscallDesc("setuid", setuidFunc),    /* 24 */ SyscallDesc("getxuid", getuidFunc),    /* 25 */ SyscallDesc("exec_with_loader", unimplementedFunc),    /* 26 */ SyscallDesc("osf_ptrace", unimplementedFunc),    /* 27 */ SyscallDesc("osf_nrecvmsg", unimplementedFunc),    /* 28 */ SyscallDesc("osf_nsendmsg", unimplementedFunc),    /* 29 */ SyscallDesc("osf_nrecvfrom", unimplementedFunc),    /* 30 */ SyscallDesc("osf_naccept", unimplementedFunc),    /* 31 */ SyscallDesc("osf_ngetpeername", unimplementedFunc),    /* 32 */ SyscallDesc("osf_ngetsockname", unimplementedFunc),    /* 33 */ SyscallDesc("access", unimplementedFunc),    /* 34 */ SyscallDesc("osf_chflags", unimplementedFunc),    /* 35 */ SyscallDesc("osf_fchflags", unimplementedFunc),    /* 36 */ SyscallDesc("sync", unimplementedFunc),    /* 37 */ SyscallDesc("kill", unimplementedFunc),    /* 38 */ SyscallDesc("osf_old_stat", unimplementedFunc),    /* 39 */ SyscallDesc("setpgid", unimplementedFunc),    /* 40 */ SyscallDesc("osf_old_lstat", unimplementedFunc),    /* 41 */ SyscallDesc("dup", unimplementedFunc),    /* 42 */ SyscallDesc("pipe", unimplementedFunc),    /* 43 */ SyscallDesc("osf_set_program_attributes", unimplementedFunc),    /* 44 */ SyscallDesc("osf_profil", unimplementedFunc),    /* 45 */ SyscallDesc("open", openFunc<Linux>),    /* 46 */ SyscallDesc("osf_old_sigaction", unimplementedFunc),    /* 47 */ SyscallDesc("getxgid", getgidFunc),    /* 48 */ SyscallDesc("osf_sigprocmask", ignoreFunc),    /* 49 */ SyscallDesc("osf_getlogin", unimplementedFunc),    /* 50 */ SyscallDesc("osf_setlogin", unimplementedFunc),    /* 51 */ SyscallDesc("acct", unimplementedFunc),    /* 52 */ SyscallDesc("sigpending", unimplementedFunc),    /* 53 */ SyscallDesc("osf_classcntl", unimplementedFunc),    /* 54 */ SyscallDesc("ioctl", ioctlFunc<Linux>),    /* 55 */ SyscallDesc("osf_reboot", unimplementedFunc),    /* 56 */ SyscallDesc("osf_revoke", unimplementedFunc),    /* 57 */ SyscallDesc("symlink", unimplementedFunc),    /* 58 */ SyscallDesc("readlink", unimplementedFunc),    /* 59 */ SyscallDesc("execve", unimplementedFunc),    /* 60 */ SyscallDesc("umask", unimplementedFunc),    /* 61 */ SyscallDesc("chroot", unimplementedFunc),    /* 62 */ SyscallDesc("osf_old_fstat", unimplementedFunc),    /* 63 */ SyscallDesc("getpgrp", unimplementedFunc),    /* 64 */ SyscallDesc("getpagesize", getpagesizeFunc),    /* 65 */ SyscallDesc("osf_mremap", unimplementedFunc),    /* 66 */ SyscallDesc("vfork", unimplementedFunc),    /* 67 */ SyscallDesc("stat", statFunc<Linux>),    /* 68 */ SyscallDesc("lstat", lstatFunc<Linux>),    /* 69 */ SyscallDesc("osf_sbrk", unimplementedFunc),    /* 70 */ SyscallDesc("osf_sstk", unimplementedFunc),    /* 71 */ SyscallDesc("mmap", mmapFunc<Linux>),    /* 72 */ SyscallDesc("osf_old_vadvise", unimplementedFunc),    /* 73 */ SyscallDesc("munmap", munmapFunc),    /* 74 */ SyscallDesc("mprotect", ignoreFunc),    /* 75 */ SyscallDesc("madvise", unimplementedFunc),    /* 76 */ SyscallDesc("vhangup", unimplementedFunc),    /* 77 */ SyscallDesc("osf_kmodcall", unimplementedFunc),    /* 78 */ SyscallDesc("osf_mincore", unimplementedFunc),    /* 79 */ SyscallDesc("getgroups", unimplementedFunc),    /* 80 */ SyscallDesc("setgroups", unimplementedFunc),    /* 81 */ SyscallDesc("osf_old_getpgrp", unimplementedFunc),    /* 82 */ SyscallDesc("setpgrp", unimplementedFunc),    /* 83 */ SyscallDesc("osf_setitimer", unimplementedFunc),    /* 84 */ SyscallDesc("osf_old_wait", unimplementedFunc),    /* 85 */ SyscallDesc("osf_table", unimplementedFunc),    /* 86 */ SyscallDesc("osf_getitimer", unimplementedFunc),    /* 87 */ SyscallDesc("gethostname", gethostnameFunc),    /* 88 */ SyscallDesc("sethostname", unimplementedFunc),    /* 89 */ SyscallDesc("getdtablesize", unimplementedFunc),    /* 90 */ SyscallDesc("dup2", unimplementedFunc),    /* 91 */ SyscallDesc("fstat", fstatFunc<Linux>),    /* 92 */ SyscallDesc("fcntl", fcntlFunc),    /* 93 */ SyscallDesc("osf_select", unimplementedFunc),    /* 94 */ SyscallDesc("poll", unimplementedFunc),    /* 95 */ SyscallDesc("fsync", unimplementedFunc),    /* 96 */ SyscallDesc("setpriority", unimplementedFunc),    /* 97 */ SyscallDesc("socket", unimplementedFunc),    /* 98 */ SyscallDesc("connect", unimplementedFunc),    /* 99 */ SyscallDesc("accept", unimplementedFunc),    /* 100 */ SyscallDesc("getpriority", unimplementedFunc),    /* 101 */ SyscallDesc("send", unimplementedFunc),    /* 102 */ SyscallDesc("recv", unimplementedFunc),    /* 103 */ SyscallDesc("sigreturn", unimplementedFunc),    /* 104 */ SyscallDesc("bind", unimplementedFunc),    /* 105 */ SyscallDesc("setsockopt", unimplementedFunc),    /* 106 */ SyscallDesc("listen", unimplementedFunc),    /* 107 */ SyscallDesc("osf_plock", unimplementedFunc),    /* 108 */ SyscallDesc("osf_old_sigvec", unimplementedFunc),    /* 109 */ SyscallDesc("osf_old_sigblock", unimplementedFunc),    /* 110 */ SyscallDesc("osf_old_sigsetmask", unimplementedFunc),    /* 111 */ SyscallDesc("sigsuspend", unimplementedFunc),    /* 112 */ SyscallDesc("osf_sigstack", ignoreFunc),    /* 113 */ SyscallDesc("recvmsg", unimplementedFunc),    /* 114 */ SyscallDesc("sendmsg", unimplementedFunc),    /* 115 */ SyscallDesc("osf_old_vtrace", unimplementedFunc),    /* 116 */ SyscallDesc("osf_gettimeofday", unimplementedFunc),    /* 117 */ SyscallDesc("osf_getrusage", unimplementedFunc),    /* 118 */ SyscallDesc("getsockopt", unimplementedFunc),    /* 119 */ SyscallDesc("numa_syscalls", unimplementedFunc),    /* 120 */ SyscallDesc("readv", unimplementedFunc),    /* 121 */ SyscallDesc("writev", unimplementedFunc),    /* 122 */ SyscallDesc("osf_settimeofday", unimplementedFunc),    /* 123 */ SyscallDesc("fchown", unimplementedFunc),    /* 124 */ SyscallDesc("fchmod", unimplementedFunc),    /* 125 */ SyscallDesc("recvfrom", unimplementedFunc),    /* 126 */ SyscallDesc("setreuid", unimplementedFunc),    /* 127 */ SyscallDesc("setregid", unimplementedFunc),    /* 128 */ SyscallDesc("rename", renameFunc),    /* 129 */ SyscallDesc("truncate", unimplementedFunc),    /* 130 */ SyscallDesc("ftruncate", unimplementedFunc),    /* 131 */ SyscallDesc("flock", unimplementedFunc),    /* 132 */ SyscallDesc("setgid", unimplementedFunc),    /* 133 */ SyscallDesc("sendto", unimplementedFunc),    /* 134 */ SyscallDesc("shutdown", unimplementedFunc),    /* 135 */ SyscallDesc("socketpair", unimplementedFunc),    /* 136 */ SyscallDesc("mkdir", unimplementedFunc),    /* 137 */ SyscallDesc("rmdir", unimplementedFunc),    /* 138 */ SyscallDesc("osf_utimes", unimplementedFunc),    /* 139 */ SyscallDesc("osf_old_sigreturn", unimplementedFunc),    /* 140 */ SyscallDesc("osf_adjtime", unimplementedFunc),    /* 141 */ SyscallDesc("getpeername", unimplementedFunc),    /* 142 */ SyscallDesc("osf_gethostid", unimplementedFunc),    /* 143 */ SyscallDesc("osf_sethostid", unimplementedFunc),    /* 144 */ SyscallDesc("getrlimit", getrlimitFunc<Linux>),    /* 145 */ SyscallDesc("setrlimit", ignoreFunc),    /* 146 */ SyscallDesc("osf_old_killpg", unimplementedFunc),    /* 147 */ SyscallDesc("setsid", unimplementedFunc),    /* 148 */ SyscallDesc("quotactl", unimplementedFunc),    /* 149 */ SyscallDesc("osf_oldquota", unimplementedFunc),    /* 150 */ SyscallDesc("getsockname", unimplementedFunc),    /* 151 */ SyscallDesc("osf_pread", unimplementedFunc),    /* 152 */ SyscallDesc("osf_pwrite", unimplementedFunc),    /* 153 */ SyscallDesc("osf_pid_block", unimplementedFunc),    /* 154 */ SyscallDesc("osf_pid_unblock", unimplementedFunc),    /* 155 */ SyscallDesc("osf_signal_urti", unimplementedFunc),    /* 156 */ SyscallDesc("sigaction", ignoreFunc),    /* 157 */ SyscallDesc("osf_sigwaitprim", unimplementedFunc),    /* 158 */ SyscallDesc("osf_nfssvc", unimplementedFunc),    /* 159 */ SyscallDesc("osf_getdirentries", unimplementedFunc),    /* 160 */ SyscallDesc("osf_statfs", unimplementedFunc),    /* 161 */ SyscallDesc("osf_fstatfs", unimplementedFunc),    /* 162 */ SyscallDesc("unknown #162", unimplementedFunc),    /* 163 */ SyscallDesc("osf_async_daemon", unimplementedFunc),    /* 164 */ SyscallDesc("osf_getfh", unimplementedFunc),    /* 165 */ SyscallDesc("osf_getdomainname", unimplementedFunc),    /* 166 */ SyscallDesc("setdomainname", unimplementedFunc),

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -