summaryrefslogtreecommitdiff
path: root/src/arch
diff options
context:
space:
mode:
authorMarc Orr <marc.orr@gmail.com>2012-07-10 22:51:54 -0700
committerMarc Orr <marc.orr@gmail.com>2012-07-10 22:51:54 -0700
commit387f843d513dd80554cb6361da36ba805dfbcea2 (patch)
tree17c32aeac4482a5e451af779f412cd8f94ea81f7 /src/arch
parent52540b1b785aac9b307dfcc976527d94899deb94 (diff)
downloadgem5-387f843d513dd80554cb6361da36ba805dfbcea2.tar.xz
syscall emulation: Add the futex system call.
Diffstat (limited to 'src/arch')
-rw-r--r--src/arch/alpha/linux/linux.hh4
-rw-r--r--src/arch/x86/linux/syscalls.cc2
2 files changed, 5 insertions, 1 deletions
diff --git a/src/arch/alpha/linux/linux.hh b/src/arch/alpha/linux/linux.hh
index 3304816c3..6197b8d45 100644
--- a/src/arch/alpha/linux/linux.hh
+++ b/src/arch/alpha/linux/linux.hh
@@ -142,6 +142,10 @@ class AlphaLinux : public Linux
uint64_t freehigh; /* Available high memory size */
uint64_t mem_unit; /* Memory unit size in bytes */
} tgt_sysinfo;
+
+ // For futex system call
+ static const unsigned TGT_EAGAIN = 35;
+ static const unsigned TGT_EWOULDBLOCK = TGT_EAGAIN;
};
#endif // __ALPHA_ALPHA_LINUX_LINUX_HH__
diff --git a/src/arch/x86/linux/syscalls.cc b/src/arch/x86/linux/syscalls.cc
index 119152e86..e9322f5eb 100644
--- a/src/arch/x86/linux/syscalls.cc
+++ b/src/arch/x86/linux/syscalls.cc
@@ -415,7 +415,7 @@ SyscallDesc X86_64LinuxProcess::syscallDescs[] = {
/* 199 */ SyscallDesc("fremovexattr", unimplementedFunc),
/* 200 */ SyscallDesc("tkill", unimplementedFunc),
/* 201 */ SyscallDesc("time", timeFunc<X86Linux64>),
- /* 202 */ SyscallDesc("futex", ignoreFunc),
+ /* 202 */ SyscallDesc("futex", futexFunc<X86Linux64>),
/* 203 */ SyscallDesc("sched_setaffinity", unimplementedFunc),
/* 204 */ SyscallDesc("sched_getaffinity", unimplementedFunc),
/* 205 */ SyscallDesc("set_thread_area", unimplementedFunc),