summaryrefslogtreecommitdiff
path: root/src/arch/riscv/linux/process.cc
diff options
context:
space:
mode:
authorAlec Roelke <ar4jc@virginia.edu>2016-11-30 17:10:28 -0500
committerAlec Roelke <ar4jc@virginia.edu>2016-11-30 17:10:28 -0500
commit84020a8aedd66740c105a06f55412942e9daac30 (patch)
treedd9ffea8c87b8ede078b33b9327cd85337bdf729 /src/arch/riscv/linux/process.cc
parent126c0360e2efd9588f38128bad94c7fa82c79f25 (diff)
downloadgem5-84020a8aedd66740c105a06f55412942e9daac30.tar.xz
riscv: [Patch 6/5] Improve Linux emulation for RISC-V
This is an add-on patch for the original series that implemented RISC-V that improves the implementation of Linux emulation for SE mode. Basically it cleans up linux/linux.hh by removing constants that haven't been defined for the RISC-V Linux proxy kernel and rearranging the stat struct so it aligns with RISC-V's implementation of it. It also adds placeholders for system calls that have been given numbers in RISC-V but haven't been given implementations yet. These system calls are as follows: - readlinkat - sigprocmask - ioctl - clock_gettime - getrusage - getrlimit - setrlimit The first five patches implemented RISC-V with the base ISA and multiply, floating point, and atomic extensions and added support for detailed CPU models with memory timing. [Fixed incompatibility with changes made from patch 1.] Signed-off by: Alec Roelke Signed-off by: Jason Lowe-Power <jason@lowepower.com>
Diffstat (limited to 'src/arch/riscv/linux/process.cc')
-rw-r--r--src/arch/riscv/linux/process.cc14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/arch/riscv/linux/process.cc b/src/arch/riscv/linux/process.cc
index e1c9ea2a2..7884b83b2 100644
--- a/src/arch/riscv/linux/process.cc
+++ b/src/arch/riscv/linux/process.cc
@@ -71,13 +71,13 @@ unameFunc(SyscallDesc *desc, int callnum, LiveProcess *process,
std::map<int, SyscallDesc> RiscvLinuxProcess::syscallDescs = {
{17, SyscallDesc("getcwd", getcwdFunc)},
{23, SyscallDesc("dup", dupFunc)},
- {25, SyscallDesc("fcntl", fcntlFunc)},
+ {25, SyscallDesc("fcntl", fcntl64Func)},
{29, SyscallDesc("ioctl", ioctlFunc<RiscvLinux>)},
{34, SyscallDesc("mkdirat", unimplementedFunc)},
{35, SyscallDesc("unlinkat", unlinkatFunc<RiscvLinux>)},
{37, SyscallDesc("linkat", unimplementedFunc)},
{38, SyscallDesc("renameat", renameatFunc<RiscvLinux>)},
- {46, SyscallDesc("ftruncate", ftruncateFunc)},
+ {46, SyscallDesc("ftruncate", ftruncate64Func)},
{48, SyscallDesc("faccessat", faccessatFunc<RiscvLinux>)},
{49, SyscallDesc("chdir", unimplementedFunc)},
{56, SyscallDesc("openat", openatFunc<RiscvLinux>)},
@@ -88,10 +88,10 @@ std::map<int, SyscallDesc> RiscvLinuxProcess::syscallDescs = {
{64, SyscallDesc("write", writeFunc)},
{66, SyscallDesc("writev", writevFunc<RiscvLinux>)},
{67, SyscallDesc("pread", unimplementedFunc)},
- {68, SyscallDesc("pwrite", unimplementedFunc)},
+ {68, SyscallDesc("pwrite", pwrite64Func<RiscvLinux>)},
{78, SyscallDesc("readlinkat", readlinkatFunc<RiscvLinux>)},
- {79, SyscallDesc("fstatat", unimplementedFunc)},
- {80, SyscallDesc("fstat", fstatFunc<RiscvLinux>)},
+ {79, SyscallDesc("fstatat", fstatat64Func<RiscvLinux>)},
+ {80, SyscallDesc("fstat", fstat64Func<RiscvLinux>)},
{93, SyscallDesc("exit", exitFunc)},
{94, SyscallDesc("exit_group", exitGroupFunc)},
{113, SyscallDesc("clock_gettime", clock_gettimeFunc<RiscvLinux>)},
@@ -119,8 +119,8 @@ std::map<int, SyscallDesc> RiscvLinuxProcess::syscallDescs = {
{1026, SyscallDesc("unlink", unlinkFunc)},
{1030, SyscallDesc("mkdir", mkdirFunc)},
{1033, SyscallDesc("access", accessFunc)},
- {1038, SyscallDesc("stat", statFunc<RiscvLinux>)},
- {1039, SyscallDesc("lstat", lstatFunc<RiscvLinux>)},
+ {1038, SyscallDesc("stat", stat64Func<RiscvLinux>)},
+ {1039, SyscallDesc("lstat", lstat64Func<RiscvLinux>)},
{1062, SyscallDesc("time", timeFunc<RiscvLinux>)},
{2011, SyscallDesc("getmainvars", unimplementedFunc)},
};