diff mbox

linux-user: Implement atomic_barrier system call

Message ID 1440962985-17972-1-git-send-email-T.E.Baldwin99@members.leeds.ac.uk
State New
Headers show

Commit Message

Timothy Baldwin Aug. 30, 2015, 7:29 p.m. UTC
Implemented atomic_barrier system call using GCC/clang
builtin __sync_synchronize().

Signed-off-by: Timothy Edward Baldwin <T.E.Baldwin99@members.leeds.ac.uk>
---
 linux-user/syscall.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Peter Maydell Aug. 30, 2015, 9:49 p.m. UTC | #1
On 30 August 2015 at 20:29, Timothy E Baldwin
<T.E.Baldwin99@members.leeds.ac.uk> wrote:
> Implemented atomic_barrier system call using GCC/clang
> builtin __sync_synchronize().
>
> Signed-off-by: Timothy Edward Baldwin <T.E.Baldwin99@members.leeds.ac.uk>
> ---
>  linux-user/syscall.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
> index bca3424..72d107a 100644
> --- a/linux-user/syscall.c
> +++ b/linux-user/syscall.c
> @@ -9679,7 +9679,7 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
>  #ifdef TARGET_NR_atomic_barrier
>      case TARGET_NR_atomic_barrier:
>      {
> -        /* Like the kernel implementation and the qemu arm barrier, no-op this? */
> +        __sync_synchronize();
>          ret = 0;
>          break;

Again, I think this needs to be handled as part of a wider examination
of what barrier/atomic ops need to do in a multi-threaded-guest
supporting QEMU linux-user mode.

thanks
-- PMM
diff mbox

Patch

diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index bca3424..72d107a 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -9679,7 +9679,7 @@  abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
 #ifdef TARGET_NR_atomic_barrier
     case TARGET_NR_atomic_barrier:
     {
-        /* Like the kernel implementation and the qemu arm barrier, no-op this? */
+        __sync_synchronize();
         ret = 0;
         break;
     }