summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/kern/linux/linux.hh1
-rw-r--r--src/sim/syscall_emul.hh3
2 files changed, 3 insertions, 1 deletions
diff --git a/src/kern/linux/linux.hh b/src/kern/linux/linux.hh
index 1d52ff323..1fcd80444 100644
--- a/src/kern/linux/linux.hh
+++ b/src/kern/linux/linux.hh
@@ -225,6 +225,7 @@ class Linux : public OperatingSystem
static const unsigned TGT_FUTEX_WAKE = 1;
static const unsigned TGT_EAGAIN = 11;
static const unsigned TGT_EWOULDBLOCK = TGT_EAGAIN;
+ static const unsigned TGT_FUTEX_PRIVATE_FLAG = 128;
}; // class Linux
diff --git a/src/sim/syscall_emul.hh b/src/sim/syscall_emul.hh
index aec159838..e98e771d5 100644
--- a/src/sim/syscall_emul.hh
+++ b/src/sim/syscall_emul.hh
@@ -359,6 +359,7 @@ futexFunc(SyscallDesc *desc, int callnum, LiveProcess *process,
DPRINTF(SyscallVerbose, "In sys_futex: Address=%llx, op=%d, val=%d\n",
uaddr, op, val);
+ op &= ~OS::TGT_FUTEX_PRIVATE_FLAG;
if (op == OS::TGT_FUTEX_WAIT) {
if (timeout != 0) {
@@ -410,7 +411,7 @@ futexFunc(SyscallDesc *desc, int callnum, LiveProcess *process,
"thread contexts\n", wokenUp);
return wokenUp;
} else {
- warn("sys_futex: op %d is not implemented, just returning...");
+ warn("sys_futex: op %d is not implemented, just returning...", op);
return 0;
}