linux-user: Implement membarrier syscall

Signed-off-by: Andreas Schwab <schwab@suse.de>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Message-Id: <mvmpnomohfm.fsf@suse.de>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
This commit is contained in:
Andreas Schwab 2019-05-13 11:02:53 +02:00 committed by Laurent Vivier
parent 6c599282f8
commit 8500476f3c
1 changed files with 7 additions and 0 deletions

View File

@ -334,6 +334,9 @@ _syscall5(int, kcmp, pid_t, pid1, pid_t, pid2, int, type,
_syscall5(int, sys_statx, int, dirfd, const char *, pathname, int, flags,
unsigned int, mask, struct target_statx *, statxbuf)
#endif
#if defined(TARGET_NR_membarrier) && defined(__NR_membarrier)
_syscall2(int, membarrier, int, cmd, int, flags)
#endif
static bitmask_transtbl fcntl_flags_tbl[] = {
{ TARGET_O_ACCMODE, TARGET_O_WRONLY, O_ACCMODE, O_WRONLY, },
@ -12090,6 +12093,10 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
unlock_user(p, arg1, 0);
return ret;
#endif
#if defined TARGET_NR_membarrier && defined __NR_membarrier
case TARGET_NR_membarrier:
return get_errno(membarrier(arg1, arg2));
#endif
default:
qemu_log_mask(LOG_UNIMP, "Unsupported syscall: %d\n", num);