aboutsummaryrefslogtreecommitdiff
path: root/linux-user/mips
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2016-07-11 16:48:11 +0100
committerRiku Voipio <riku.voipio@linaro.org>2016-09-21 14:28:52 +0300
commitee8e76141b4dd00f8e97fda274876a17f9a46bbe (patch)
tree97fad83fed31bae2f164c1a525e13b468e12cfbc /linux-user/mips
parent0ef9ea290ed9319cb788ea40be06dd18b32ba05a (diff)
linux-user: Use correct target SHMLBA in shmat()
The shmat() handling needs to do target-specific handling of the attach address for shmat(): * if the SHM_RND flag is passed, the address is rounded down to a SHMLBA boundary * if SHM_RND is not passed, then the call is failed EINVAL if the address is not a multiple of SHMLBA Since SHMLBA is target-specific, we need to do this checking and rounding in QEMU and can't leave it up to the host syscall. Allow targets to define TARGET_FORCE_SHMLBA and provide a target_shmlba() function if appropriate, and update do_shmat() to honour them. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
Diffstat (limited to 'linux-user/mips')
-rw-r--r--linux-user/mips/target_syscall.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/linux-user/mips/target_syscall.h b/linux-user/mips/target_syscall.h
index 2b4f390729..6c666dcb73 100644
--- a/linux-user/mips/target_syscall.h
+++ b/linux-user/mips/target_syscall.h
@@ -230,4 +230,11 @@ struct target_pt_regs {
#define TARGET_MLOCKALL_MCL_CURRENT 1
#define TARGET_MLOCKALL_MCL_FUTURE 2
+#define TARGET_FORCE_SHMLBA
+
+static inline abi_ulong target_shmlba(CPUMIPSState *env)
+{
+ return 0x40000;
+}
+
#endif /* MIPS_TARGET_SYSCALL_H */