summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJavier Setoain <javier.setoain@arm.com>2019-01-09 12:52:20 +0000
committerAndreas Sandberg <andreas.sandberg@arm.com>2019-01-10 17:50:28 +0000
commit5e420343d37fea3134a32d6e04465b13f67988d2 (patch)
tree405c6c8cb70f47b8893b83f24873b22501a84330
parent815dc6590ff70186a9b7915cf59987e57fef0ca4 (diff)
downloadgem5-5e420343d37fea3134a32d6e04465b13f67988d2.tar.xz
arch-arm, sim-se: Wire up syscalls needed for pthreads
Change-Id: I8da5e3e0d7dc5d31ac82ed2045109d6d73cbf99d Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com> Cc: Giacomo Travaglini <giacomo.travaglini@arm.com> Cc: Javier Setoain <javier.setoain@arm.com> Cc: Brandon Potter <Brandon.Potter@amd.com> Reviewed-on: https://gem5-review.googlesource.com/c/15415 Reviewed-by: Brandon Potter <Brandon.Potter@amd.com> Maintainer: Brandon Potter <Brandon.Potter@amd.com>
-rw-r--r--src/arch/arm/linux/process.cc44
1 files changed, 26 insertions, 18 deletions
diff --git a/src/arch/arm/linux/process.cc b/src/arch/arm/linux/process.cc
index 2c64a46ca..cb62e6ee7 100644
--- a/src/arch/arm/linux/process.cc
+++ b/src/arch/arm/linux/process.cc
@@ -132,7 +132,7 @@ static SyscallDesc syscallDescs32[] = {
/* 8 */ SyscallDesc("creat", unimplementedFunc),
/* 9 */ SyscallDesc("link", unimplementedFunc),
/* 10 */ SyscallDesc("unlink", unlinkFunc),
- /* 11 */ SyscallDesc("execve", unimplementedFunc),
+ /* 11 */ SyscallDesc("execve", execveFunc<ArmLinux32>),
/* 12 */ SyscallDesc("chdir", unimplementedFunc),
/* 13 */ SyscallDesc("time", timeFunc<ArmLinux32>),
/* 14 */ SyscallDesc("mknod", unimplementedFunc),
@@ -262,7 +262,11 @@ static SyscallDesc syscallDescs32[] = {
/* 138 */ SyscallDesc("setfsuid", unimplementedFunc),
/* 139 */ SyscallDesc("setfsgid", unimplementedFunc),
/* 140 */ SyscallDesc("llseek", _llseekFunc),
+#if defined(SYS_getdents)
+ /* 141 */ SyscallDesc("getdents", getdentsFunc),
+#else
/* 141 */ SyscallDesc("getdents", unimplementedFunc),
+#endif
/* 142 */ SyscallDesc("newselect", unimplementedFunc),
/* 143 */ SyscallDesc("flock", unimplementedFunc),
/* 144 */ SyscallDesc("msync", unimplementedFunc),
@@ -341,11 +345,11 @@ static SyscallDesc syscallDescs32[] = {
/* 217 */ SyscallDesc("getdents64", unimplementedFunc),
/* 218 */ SyscallDesc("pivot_root", unimplementedFunc),
/* 219 */ SyscallDesc("mincore", unimplementedFunc),
- /* 220 */ SyscallDesc("madvise", unimplementedFunc),
+ /* 220 */ SyscallDesc("madvise", ignoreFunc),
/* 221 */ SyscallDesc("fcntl64", fcntl64Func),
/* 222 */ SyscallDesc("unused#222", unimplementedFunc),
/* 223 */ SyscallDesc("unknown#223", unimplementedFunc),
- /* 224 */ SyscallDesc("gettid", unimplementedFunc),
+ /* 224 */ SyscallDesc("gettid", gettidFunc),
/* 225 */ SyscallDesc("readahead", unimplementedFunc),
/* 226 */ SyscallDesc("setxattr", unimplementedFunc),
/* 227 */ SyscallDesc("lsetxattr", unimplementedFunc),
@@ -361,9 +365,9 @@ static SyscallDesc syscallDescs32[] = {
/* 237 */ SyscallDesc("fremovexattr", unimplementedFunc),
/* 238 */ SyscallDesc("tkill", unimplementedFunc),
/* 239 */ SyscallDesc("sendfile64", unimplementedFunc),
- /* 240 */ SyscallDesc("futex", ignoreFunc, SyscallDesc::WarnOnce),
+ /* 240 */ SyscallDesc("futex", futexFunc<ArmLinux32>),
/* 241 */ SyscallDesc("sched_setaffinity", unimplementedFunc),
- /* 242 */ SyscallDesc("sched_getaffinity", unimplementedFunc),
+ /* 242 */ SyscallDesc("sched_getaffinity", ignoreFunc),
/* 243 */ SyscallDesc("io_setup", unimplementedFunc),
/* 244 */ SyscallDesc("io_destroy", unimplementedFunc),
/* 245 */ SyscallDesc("io_getevents", unimplementedFunc),
@@ -377,7 +381,7 @@ static SyscallDesc syscallDescs32[] = {
/* 253 */ SyscallDesc("remap_file_pages", unimplementedFunc),
/* 254 */ SyscallDesc("unused#254", unimplementedFunc),
/* 255 */ SyscallDesc("unused#255", unimplementedFunc),
- /* 256 */ SyscallDesc("set_tid_address", unimplementedFunc),
+ /* 256 */ SyscallDesc("set_tid_address", setTidAddressFunc),
/* 257 */ SyscallDesc("timer_create", unimplementedFunc),
/* 258 */ SyscallDesc("timer_settime", unimplementedFunc),
/* 259 */ SyscallDesc("timer_gettime", unimplementedFunc),
@@ -389,7 +393,7 @@ static SyscallDesc syscallDescs32[] = {
/* 265 */ SyscallDesc("clock_nanosleep", unimplementedFunc),
/* 266 */ SyscallDesc("statfs64", unimplementedFunc),
/* 267 */ SyscallDesc("fstatfs64", unimplementedFunc),
- /* 268 */ SyscallDesc("tgkill", unimplementedFunc),
+ /* 268 */ SyscallDesc("tgkill", tgkillFunc<ArmLinux32>),
/* 269 */ SyscallDesc("utimes", unimplementedFunc),
/* 270 */ SyscallDesc("arm_fadvise64_64", unimplementedFunc),
/* 271 */ SyscallDesc("pciconfig_iobase", unimplementedFunc),
@@ -459,7 +463,7 @@ static SyscallDesc syscallDescs32[] = {
/* 335 */ SyscallDesc("pselect6", unimplementedFunc),
/* 336 */ SyscallDesc("ppoll", unimplementedFunc),
/* 337 */ SyscallDesc("unshare", unimplementedFunc),
- /* 338 */ SyscallDesc("set_robust_list", unimplementedFunc),
+ /* 338 */ SyscallDesc("set_robust_list", ignoreFunc),
/* 339 */ SyscallDesc("get_robust_list", unimplementedFunc),
/* 340 */ SyscallDesc("splice", unimplementedFunc),
/* 341 */ SyscallDesc("arm_sync_file_range", unimplementedFunc),
@@ -586,10 +590,10 @@ static SyscallDesc syscallDescs64[] = {
/* 93 */ SyscallDesc("exit", exitFunc),
/* 94 */ SyscallDesc("exit_group", exitGroupFunc),
/* 95 */ SyscallDesc("waitid", unimplementedFunc),
- /* 96 */ SyscallDesc("set_tid_address", unimplementedFunc),
+ /* 96 */ SyscallDesc("set_tid_address", setTidAddressFunc),
/* 97 */ SyscallDesc("unshare", unimplementedFunc),
- /* 98 */ SyscallDesc("futex", unimplementedFunc),
- /* 99 */ SyscallDesc("set_robust_list", unimplementedFunc),
+ /* 98 */ SyscallDesc("futex", futexFunc<ArmLinux64>),
+ /* 99 */ SyscallDesc("set_robust_list", ignoreFunc),
/* 100 */ SyscallDesc("get_robust_list", unimplementedFunc),
/* 101 */ SyscallDesc("nanosleep", ignoreFunc, SyscallDesc::WarnOnce),
/* 102 */ SyscallDesc("getitimer", unimplementedFunc),
@@ -613,7 +617,7 @@ static SyscallDesc syscallDescs64[] = {
/* 120 */ SyscallDesc("sched_getscheduler", unimplementedFunc),
/* 121 */ SyscallDesc("sched_getparam", unimplementedFunc),
/* 122 */ SyscallDesc("sched_setaffinity", unimplementedFunc),
- /* 123 */ SyscallDesc("sched_getaffinity", unimplementedFunc),
+ /* 123 */ SyscallDesc("sched_getaffinity", ignoreFunc),
/* 124 */ SyscallDesc("sched_yield", unimplementedFunc),
/* 125 */ SyscallDesc("sched_get_priority_max", unimplementedFunc),
/* 126 */ SyscallDesc("sched_get_priority_min", unimplementedFunc),
@@ -621,7 +625,7 @@ static SyscallDesc syscallDescs64[] = {
/* 128 */ SyscallDesc("restart_syscall", unimplementedFunc),
/* 129 */ SyscallDesc("kill", ignoreFunc),
/* 130 */ SyscallDesc("tkill", unimplementedFunc),
- /* 131 */ SyscallDesc("tgkill", unimplementedFunc),
+ /* 131 */ SyscallDesc("tgkill", tgkillFunc<ArmLinux64>),
/* 132 */ SyscallDesc("sigaltstack", unimplementedFunc),
/* 133 */ SyscallDesc("rt_sigsuspend", unimplementedFunc),
/* 134 */ SyscallDesc("rt_sigaction", ignoreFunc),
@@ -668,7 +672,7 @@ static SyscallDesc syscallDescs64[] = {
/* 175 */ SyscallDesc("geteuid", geteuidFunc),
/* 176 */ SyscallDesc("getgid", getgidFunc),
/* 177 */ SyscallDesc("getegid", getegidFunc),
- /* 178 */ SyscallDesc("gettid", unimplementedFunc),
+ /* 178 */ SyscallDesc("gettid", gettidFunc),
/* 179 */ SyscallDesc("sysinfo", sysinfoFunc<ArmLinux64>),
/* 180 */ SyscallDesc("mq_open", unimplementedFunc),
/* 181 */ SyscallDesc("mq_unlink", unimplementedFunc),
@@ -710,8 +714,8 @@ static SyscallDesc syscallDescs64[] = {
/* 217 */ SyscallDesc("add_key", unimplementedFunc),
/* 218 */ SyscallDesc("request_key", unimplementedFunc),
/* 219 */ SyscallDesc("keyctl", unimplementedFunc),
- /* 220 */ SyscallDesc("clone", unimplementedFunc),
- /* 221 */ SyscallDesc("execve", unimplementedFunc),
+ /* 220 */ SyscallDesc("clone", cloneFunc<ArmLinux64>),
+ /* 221 */ SyscallDesc("execve", execveFunc<ArmLinux64>),
/* 222 */ SyscallDesc("mmap2", mmapFunc<ArmLinux64>),
/* 223 */ SyscallDesc("fadvise64_64", unimplementedFunc),
/* 224 */ SyscallDesc("swapon", unimplementedFunc),
@@ -723,7 +727,7 @@ static SyscallDesc syscallDescs64[] = {
/* 230 */ SyscallDesc("mlockall", unimplementedFunc),
/* 231 */ SyscallDesc("munlockall", unimplementedFunc),
/* 232 */ SyscallDesc("mincore", unimplementedFunc),
- /* 233 */ SyscallDesc("madvise", unimplementedFunc),
+ /* 233 */ SyscallDesc("madvise", ignoreFunc),
/* 234 */ SyscallDesc("remap_file_pages", unimplementedFunc),
/* 235 */ SyscallDesc("mbind", unimplementedFunc),
/* 236 */ SyscallDesc("get_mempolicy", unimplementedFunc),
@@ -751,7 +755,7 @@ static SyscallDesc syscallDescs64[] = {
/* 258 */ SyscallDesc("unused#258", unimplementedFunc),
/* 259 */ SyscallDesc("unused#259", unimplementedFunc),
/* 260 */ SyscallDesc("wait4", unimplementedFunc),
- /* 261 */ SyscallDesc("prlimit64", unimplementedFunc),
+ /* 261 */ SyscallDesc("prlimit64", prlimitFunc<ArmLinux64>),
/* 262 */ SyscallDesc("fanotify_init", unimplementedFunc),
/* 263 */ SyscallDesc("fanotify_mark", unimplementedFunc),
/* 264 */ SyscallDesc("name_to_handle_at", unimplementedFunc),
@@ -1555,7 +1559,11 @@ static SyscallDesc syscallDescs64[] = {
/* 1062 */ SyscallDesc("time", timeFunc<ArmLinux64>),
/* 1063 */ SyscallDesc("utime", unimplementedFunc),
/* 1064 */ SyscallDesc("creat", unimplementedFunc),
+#if defined(SYS_getdents)
+ /* 1065 */ SyscallDesc("getdents", getdentsFunc),
+#else
/* 1065 */ SyscallDesc("getdents", unimplementedFunc),
+#endif
/* 1066 */ SyscallDesc("futimesat", unimplementedFunc),
/* 1067 */ SyscallDesc("select", unimplementedFunc),
/* 1068 */ SyscallDesc("poll", unimplementedFunc),