diff options
author | Marc Orr <marc.orr@gmail.com> | 2012-07-10 22:51:54 -0700 |
---|---|---|
committer | Marc Orr <marc.orr@gmail.com> | 2012-07-10 22:51:54 -0700 |
commit | 387f843d513dd80554cb6361da36ba805dfbcea2 (patch) | |
tree | 17c32aeac4482a5e451af779f412cd8f94ea81f7 /src/arch | |
parent | 52540b1b785aac9b307dfcc976527d94899deb94 (diff) | |
download | gem5-387f843d513dd80554cb6361da36ba805dfbcea2.tar.xz |
syscall emulation: Add the futex system call.
Diffstat (limited to 'src/arch')
-rw-r--r-- | src/arch/alpha/linux/linux.hh | 4 | ||||
-rw-r--r-- | src/arch/x86/linux/syscalls.cc | 2 |
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), |