diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2016-07-11 16:48:11 +0100 |
---|---|---|
committer | Riku Voipio <riku.voipio@linaro.org> | 2016-09-21 14:28:52 +0300 |
commit | ee8e76141b4dd00f8e97fda274876a17f9a46bbe (patch) | |
tree | 97fad83fed31bae2f164c1a525e13b468e12cfbc /linux-user/arm | |
parent | 0ef9ea290ed9319cb788ea40be06dd18b32ba05a (diff) | |
download | qemu-ee8e76141b4dd00f8e97fda274876a17f9a46bbe.zip qemu-ee8e76141b4dd00f8e97fda274876a17f9a46bbe.tar.gz qemu-ee8e76141b4dd00f8e97fda274876a17f9a46bbe.tar.bz2 |
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/arm')
-rw-r--r-- | linux-user/arm/target_syscall.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/linux-user/arm/target_syscall.h b/linux-user/arm/target_syscall.h index cd021ff..0879b4d 100644 --- a/linux-user/arm/target_syscall.h +++ b/linux-user/arm/target_syscall.h @@ -33,4 +33,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(CPUARMState *env) +{ + return 4 * 4096; +} + #endif /* ARM_TARGET_SYSCALL_H */ |