Module Name: src Committed By: joerg Date: Tue Jan 28 21:47:48 UTC 2014
Modified Files: src/common/lib/libc/atomic: atomic_add_64_cas.c atomic_and_64_cas.c atomic_or_64_cas.c Log Message: Allow building with clang. XXX __RENAME is currently not allowed for the kernel, so use plain asm. Clang rejects definitions of builtins, so it doesn't work without. To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/atomic/atomic_add_64_cas.c cvs rdiff -u -r1.8 -r1.9 src/common/lib/libc/atomic/atomic_and_64_cas.c \ src/common/lib/libc/atomic/atomic_or_64_cas.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/common/lib/libc/atomic/atomic_add_64_cas.c diff -u src/common/lib/libc/atomic/atomic_add_64_cas.c:1.7 src/common/lib/libc/atomic/atomic_add_64_cas.c:1.8 --- src/common/lib/libc/atomic/atomic_add_64_cas.c:1.7 Mon Jan 27 18:29:47 2014 +++ src/common/lib/libc/atomic/atomic_add_64_cas.c Tue Jan 28 21:47:48 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_add_64_cas.c,v 1.7 2014/01/27 18:29:47 matt Exp $ */ +/* $NetBSD: atomic_add_64_cas.c,v 1.8 2014/01/28 21:47:48 joerg Exp $ */ /*- * Copyright (c) 2007 The NetBSD Foundation, Inc. @@ -35,10 +35,11 @@ #ifdef __HAVE_ATOMIC64_OPS -uint64_t __sync_fetch_and_add_8(volatile uint64_t *, int64_t); +uint64_t fetch_and_add_8(volatile uint64_t *, uint64_t, ...) + asm("__sync_fetch_and_add_8"); uint64_t -__sync_fetch_and_add_8(volatile uint64_t *addr, int64_t val) +fetch_and_add_8(volatile uint64_t *addr, uint64_t val, ...) { uint64_t old, new; @@ -52,7 +53,7 @@ __sync_fetch_and_add_8(volatile uint64_t void atomic_add_64(volatile uint64_t *addr, int64_t val) { - (void) __sync_fetch_and_add_8(addr, val); + (void) fetch_and_add_8(addr, val); } #undef atomic_add_64 Index: src/common/lib/libc/atomic/atomic_and_64_cas.c diff -u src/common/lib/libc/atomic/atomic_and_64_cas.c:1.8 src/common/lib/libc/atomic/atomic_and_64_cas.c:1.9 --- src/common/lib/libc/atomic/atomic_and_64_cas.c:1.8 Mon Jan 27 20:01:50 2014 +++ src/common/lib/libc/atomic/atomic_and_64_cas.c Tue Jan 28 21:47:48 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_and_64_cas.c,v 1.8 2014/01/27 20:01:50 matt Exp $ */ +/* $NetBSD: atomic_and_64_cas.c,v 1.9 2014/01/28 21:47:48 joerg Exp $ */ /*- * Copyright (c) 2007 The NetBSD Foundation, Inc. @@ -35,10 +35,11 @@ #ifdef __HAVE_ATOMIC64_OPS -uint64_t __sync_fetch_and_and_8(volatile uint64_t *, uint64_t); +uint64_t fetch_and_and_8(volatile uint64_t *, uint64_t, ...) + asm("__sync_fetch_and_and_8"); uint64_t -__sync_fetch_and_and_8(volatile uint64_t *addr, uint64_t val) +fetch_and_and_8(volatile uint64_t *addr, uint64_t val, ...) { uint64_t old, new; @@ -52,7 +53,7 @@ __sync_fetch_and_and_8(volatile uint64_t void atomic_and_64(volatile uint64_t *addr, uint64_t val) { - (void) __sync_fetch_and_and_8(addr, val); + (void) fetch_and_and_8(addr, val); } #undef atomic_and_64 Index: src/common/lib/libc/atomic/atomic_or_64_cas.c diff -u src/common/lib/libc/atomic/atomic_or_64_cas.c:1.8 src/common/lib/libc/atomic/atomic_or_64_cas.c:1.9 --- src/common/lib/libc/atomic/atomic_or_64_cas.c:1.8 Mon Jan 27 20:44:29 2014 +++ src/common/lib/libc/atomic/atomic_or_64_cas.c Tue Jan 28 21:47:48 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_or_64_cas.c,v 1.8 2014/01/27 20:44:29 matt Exp $ */ +/* $NetBSD: atomic_or_64_cas.c,v 1.9 2014/01/28 21:47:48 joerg Exp $ */ /*- * Copyright (c) 2007 The NetBSD Foundation, Inc. @@ -35,10 +35,11 @@ #ifdef __HAVE_ATOMIC64_OPS -uint64_t __sync_fetch_and_or_8(volatile uint64_t *addr, uint64_t val); +uint64_t fetch_and_or_8(volatile uint64_t *addr, uint64_t val, ...) + asm("__sync_fetch_and_or_8"); uint64_t -__sync_fetch_and_or_8(volatile uint64_t *addr, uint64_t val) +fetch_and_or_8(volatile uint64_t *addr, uint64_t val, ...) { uint64_t old, new; @@ -52,7 +53,7 @@ __sync_fetch_and_or_8(volatile uint64_t void atomic_or_64(volatile uint64_t *addr, uint64_t val) { - (void) __sync_fetch_and_or_8(addr, val); + (void) fetch_and_or_8(addr, val); } #undef atomic_or_64