Module Name: src Committed By: tls Date: Sun Aug 10 06:47:06 UTC 2014
Modified Files: src/common/lib/libc/arch/arm/atomic [tls-earlyentropy]: Makefile.inc atomic_add_16.S atomic_add_32.S atomic_add_8.S atomic_and_16.S atomic_and_32.S atomic_and_8.S atomic_or_16.S atomic_or_32.S atomic_or_8.S atomic_swap.S atomic_swap_16.S atomic_swap_64.S atomic_xor_16.S atomic_xor_32.S atomic_xor_8.S sync_fetch_and_add_8.S sync_fetch_and_and_8.S sync_fetch_and_or_8.S sync_fetch_and_sub_8.S sync_fetch_and_xor_8.S src/common/lib/libc/arch/arm/quad [tls-earlyentropy]: __aeabi_ldivmod.S __aeabi_uldivmod.S src/common/lib/libc/arch/arm/string [tls-earlyentropy]: strcat_arm.S strlcat_arm.S strlen_arm.S src/common/lib/libc/arch/i386/atomic [tls-earlyentropy]: atomic.S src/common/lib/libc/arch/i386/gen [tls-earlyentropy]: byte_swap_2.S byte_swap_4.S src/common/lib/libc/arch/i386/string [tls-earlyentropy]: memset.S src/common/lib/libc/arch/i386/string/small [tls-earlyentropy]: memcpy.S src/common/lib/libc/arch/m68k/atomic [tls-earlyentropy]: atomic_add.S atomic_and.S atomic_or.S atomic_sub.S atomic_swap.S atomic_xor.S src/common/lib/libc/arch/x86_64/atomic [tls-earlyentropy]: atomic.S src/common/lib/libc/arch/x86_64/gen [tls-earlyentropy]: byte_swap_2.S byte_swap_4.S byte_swap_8.S src/common/lib/libc/arch/x86_64/string [tls-earlyentropy]: memset.S src/common/lib/libc/atomic [tls-earlyentropy]: atomic_add_16_cas.c atomic_add_32_cas.c atomic_add_64_cas.c atomic_add_8_cas.c atomic_and_16_cas.c atomic_and_32_cas.c atomic_and_64_cas.c atomic_and_8_cas.c atomic_or_16_cas.c atomic_or_32_cas.c atomic_or_64_cas.c atomic_or_8_cas.c atomic_sub_16_cas.c atomic_sub_32_cas.c atomic_sub_64_cas.c atomic_sub_8_cas.c atomic_swap_16_cas.c atomic_swap_32_cas.c atomic_swap_64_cas.c atomic_swap_8_cas.c atomic_xor_16_cas.c atomic_xor_32_cas.c atomic_xor_64_cas.c atomic_xor_8_cas.c src/common/lib/libc/stdlib [tls-earlyentropy]: random.c src/common/lib/libc/string [tls-earlyentropy]: bcopy.c consttime_memequal.c explicit_memset.c src/common/lib/libutil [tls-earlyentropy]: snprintb.c src/common/lib/libx86emu [tls-earlyentropy]: x86emu.c Added Files: src/common/lib/libc/atomic [tls-earlyentropy]: atomic_load.c atomic_store.c src/common/lib/libc/string [tls-earlyentropy]: strcspn.c strpbrk.c strspn.c Log Message: Rebase. To generate a diff of this commit: cvs rdiff -u -r1.22 -r1.22.2.1 \ src/common/lib/libc/arch/arm/atomic/Makefile.inc cvs rdiff -u -r1.2 -r1.2.2.1 \ src/common/lib/libc/arch/arm/atomic/atomic_add_16.S \ src/common/lib/libc/arch/arm/atomic/atomic_add_8.S \ src/common/lib/libc/arch/arm/atomic/atomic_and_16.S \ src/common/lib/libc/arch/arm/atomic/atomic_and_8.S \ src/common/lib/libc/arch/arm/atomic/atomic_or_16.S \ src/common/lib/libc/arch/arm/atomic/atomic_or_8.S \ src/common/lib/libc/arch/arm/atomic/atomic_swap_16.S \ src/common/lib/libc/arch/arm/atomic/atomic_xor_16.S \ src/common/lib/libc/arch/arm/atomic/atomic_xor_32.S \ src/common/lib/libc/arch/arm/atomic/atomic_xor_8.S \ src/common/lib/libc/arch/arm/atomic/sync_fetch_and_add_8.S \ src/common/lib/libc/arch/arm/atomic/sync_fetch_and_and_8.S \ src/common/lib/libc/arch/arm/atomic/sync_fetch_and_or_8.S \ src/common/lib/libc/arch/arm/atomic/sync_fetch_and_sub_8.S \ src/common/lib/libc/arch/arm/atomic/sync_fetch_and_xor_8.S cvs rdiff -u -r1.7 -r1.7.2.1 \ src/common/lib/libc/arch/arm/atomic/atomic_add_32.S \ src/common/lib/libc/arch/arm/atomic/atomic_and_32.S \ src/common/lib/libc/arch/arm/atomic/atomic_or_32.S cvs rdiff -u -r1.10 -r1.10.2.1 \ src/common/lib/libc/arch/arm/atomic/atomic_swap.S cvs rdiff -u -r1.8 -r1.8.2.1 \ src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S cvs rdiff -u -r1.12 -r1.12.2.1 \ src/common/lib/libc/arch/arm/quad/__aeabi_ldivmod.S cvs rdiff -u -r1.8 -r1.8.2.1 \ src/common/lib/libc/arch/arm/quad/__aeabi_uldivmod.S cvs rdiff -u -r1.5 -r1.5.2.1 src/common/lib/libc/arch/arm/string/strcat_arm.S \ src/common/lib/libc/arch/arm/string/strlcat_arm.S cvs rdiff -u -r1.8 -r1.8.2.1 src/common/lib/libc/arch/arm/string/strlen_arm.S cvs rdiff -u -r1.20 -r1.20.2.1 src/common/lib/libc/arch/i386/atomic/atomic.S cvs rdiff -u -r1.3 -r1.3.48.1 src/common/lib/libc/arch/i386/gen/byte_swap_2.S \ src/common/lib/libc/arch/i386/gen/byte_swap_4.S cvs rdiff -u -r1.4 -r1.4.40.1 src/common/lib/libc/arch/i386/string/memset.S cvs rdiff -u -r1.1 -r1.1.20.1 \ src/common/lib/libc/arch/i386/string/small/memcpy.S cvs rdiff -u -r1.9 -r1.9.2.1 \ src/common/lib/libc/arch/m68k/atomic/atomic_add.S cvs rdiff -u -r1.10 -r1.10.2.1 \ src/common/lib/libc/arch/m68k/atomic/atomic_and.S \ src/common/lib/libc/arch/m68k/atomic/atomic_or.S cvs rdiff -u -r1.2 -r1.2.2.1 \ src/common/lib/libc/arch/m68k/atomic/atomic_sub.S \ src/common/lib/libc/arch/m68k/atomic/atomic_xor.S cvs rdiff -u -r1.8 -r1.8.2.1 \ src/common/lib/libc/arch/m68k/atomic/atomic_swap.S cvs rdiff -u -r1.16 -r1.16.24.1 \ src/common/lib/libc/arch/x86_64/atomic/atomic.S cvs rdiff -u -r1.2 -r1.2.70.1 \ src/common/lib/libc/arch/x86_64/gen/byte_swap_2.S \ src/common/lib/libc/arch/x86_64/gen/byte_swap_4.S cvs rdiff -u -r1.1 -r1.1.24.1 \ src/common/lib/libc/arch/x86_64/gen/byte_swap_8.S cvs rdiff -u -r1.3 -r1.3.24.1 src/common/lib/libc/arch/x86_64/string/memset.S cvs rdiff -u -r1.2 -r1.2.2.1 src/common/lib/libc/atomic/atomic_add_16_cas.c \ src/common/lib/libc/atomic/atomic_add_8_cas.c \ src/common/lib/libc/atomic/atomic_and_16_cas.c \ src/common/lib/libc/atomic/atomic_and_8_cas.c \ src/common/lib/libc/atomic/atomic_or_16_cas.c \ src/common/lib/libc/atomic/atomic_or_8_cas.c \ src/common/lib/libc/atomic/atomic_sub_16_cas.c \ src/common/lib/libc/atomic/atomic_sub_64_cas.c \ src/common/lib/libc/atomic/atomic_sub_8_cas.c \ src/common/lib/libc/atomic/atomic_swap_16_cas.c \ src/common/lib/libc/atomic/atomic_swap_8_cas.c \ src/common/lib/libc/atomic/atomic_xor_16_cas.c \ src/common/lib/libc/atomic/atomic_xor_64_cas.c \ src/common/lib/libc/atomic/atomic_xor_8_cas.c cvs rdiff -u -r1.8 -r1.8.2.1 src/common/lib/libc/atomic/atomic_add_32_cas.c \ src/common/lib/libc/atomic/atomic_add_64_cas.c \ src/common/lib/libc/atomic/atomic_swap_64_cas.c cvs rdiff -u -r1.9 -r1.9.2.1 src/common/lib/libc/atomic/atomic_and_32_cas.c \ src/common/lib/libc/atomic/atomic_and_64_cas.c \ src/common/lib/libc/atomic/atomic_or_32_cas.c \ src/common/lib/libc/atomic/atomic_or_64_cas.c cvs rdiff -u -r0 -r1.2.2.2 src/common/lib/libc/atomic/atomic_load.c \ src/common/lib/libc/atomic/atomic_store.c cvs rdiff -u -r1.1 -r1.1.2.1 src/common/lib/libc/atomic/atomic_sub_32_cas.c \ src/common/lib/libc/atomic/atomic_xor_32_cas.c cvs rdiff -u -r1.6 -r1.6.2.1 src/common/lib/libc/atomic/atomic_swap_32_cas.c cvs rdiff -u -r1.3 -r1.3.70.1 src/common/lib/libc/stdlib/random.c cvs rdiff -u -r1.9 -r1.9.24.1 src/common/lib/libc/string/bcopy.c cvs rdiff -u -r1.4 -r1.4.2.1 src/common/lib/libc/string/consttime_memequal.c cvs rdiff -u -r1.3 -r1.3.2.1 src/common/lib/libc/string/explicit_memset.c cvs rdiff -u -r0 -r1.1.2.2 src/common/lib/libc/string/strcspn.c \ src/common/lib/libc/string/strpbrk.c src/common/lib/libc/string/strspn.c cvs rdiff -u -r1.14 -r1.14.2.1 src/common/lib/libutil/snprintb.c cvs rdiff -u -r1.7 -r1.7.26.1 src/common/lib/libx86emu/x86emu.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/arch/arm/atomic/Makefile.inc diff -u src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.22 src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.22.2.1 --- src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.22 Tue Mar 4 16:15:28 2014 +++ src/common/lib/libc/arch/arm/atomic/Makefile.inc Sun Aug 10 06:47:05 2014 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.inc,v 1.22 2014/03/04 16:15:28 matt Exp $ +# $NetBSD: Makefile.inc,v 1.22.2.1 2014/08/10 06:47:05 tls Exp $ .ifnmake obj .include "${NETBSDSRCDIR}/common/lib/libc/arch/arm/features.mk" @@ -23,7 +23,8 @@ SRCS.atomic+= atomic_xor_32_cas.c atomic atomic_and_16_cas.c atomic_and_8_cas.c \ atomic_add_16_cas.c atomic_add_8_cas.c \ atomic_swap_16_cas.c atomic_swap_8_cas.c \ - atomic_cas_32_cas.c atomic_cas_16_cas.c atomic_cas_8_cas.c + atomic_cas_32_cas.c atomic_cas_16_cas.c atomic_cas_8_cas.c \ + atomic_load.c atomic_store.c .endif .else Index: src/common/lib/libc/arch/arm/atomic/atomic_add_16.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_add_16.S:1.2 src/common/lib/libc/arch/arm/atomic/atomic_add_16.S:1.2.2.1 --- src/common/lib/libc/arch/arm/atomic/atomic_add_16.S:1.2 Tue Mar 4 16:15:28 2014 +++ src/common/lib/libc/arch/arm/atomic/atomic_add_16.S Sun Aug 10 06:47:05 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_add_16.S,v 1.2 2014/03/04 16:15:28 matt Exp $ */ +/* $NetBSD: atomic_add_16.S,v 1.2.2.1 2014/08/10 06:47:05 tls Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -56,6 +56,7 @@ ATOMIC_OP_ALIAS(atomic_add_16,_atomic_ad ATOMIC_OP_ALIAS(atomic_add_short,_atomic_add_16) ATOMIC_OP_ALIAS(atomic_add_ushort,_atomic_add_16) CRT_ALIAS(__sync_fetch_and_add_2,_atomic_add_16) +CRT_ALIAS(__atomic_fetch_add_2,_atomic_add_16) STRONG_ALIAS(_atomic_add_short,_atomic_add_16) STRONG_ALIAS(_atomic_add_ushort,_atomic_add_16) @@ -63,6 +64,7 @@ ATOMIC_OP_ALIAS(atomic_sub_16,_atomic_su ATOMIC_OP_ALIAS(atomic_sub_short,_atomic_sub_16) ATOMIC_OP_ALIAS(atomic_sub_ushort,_atomic_sub_16) CRT_ALIAS(__sync_fetch_and_sub_2,_atomic_sub_16) +CRT_ALIAS(__atomic_fetch_sub_2,_atomic_sub_16) STRONG_ALIAS(_atomic_sub_short,_atomic_sub_16) STRONG_ALIAS(_atomic_sub_ushort,_atomic_sub_16) Index: src/common/lib/libc/arch/arm/atomic/atomic_add_8.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_add_8.S:1.2 src/common/lib/libc/arch/arm/atomic/atomic_add_8.S:1.2.2.1 --- src/common/lib/libc/arch/arm/atomic/atomic_add_8.S:1.2 Tue Mar 4 16:15:28 2014 +++ src/common/lib/libc/arch/arm/atomic/atomic_add_8.S Sun Aug 10 06:47:05 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_add_8.S,v 1.2 2014/03/04 16:15:28 matt Exp $ */ +/* $NetBSD: atomic_add_8.S,v 1.2.2.1 2014/08/10 06:47:05 tls Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -56,6 +56,7 @@ ATOMIC_OP_ALIAS(atomic_add_8,_atomic_add ATOMIC_OP_ALIAS(atomic_add_char,_atomic_add_8) ATOMIC_OP_ALIAS(atomic_add_uchar,_atomic_add_8) CRT_ALIAS(__sync_fetch_and_add_1,_atomic_add_8) +CRT_ALIAS(__atomic_fetch_add_1,_atomic_add_8) STRONG_ALIAS(_atomic_add_char,_atomic_add_8) STRONG_ALIAS(_atomic_add_uchar,_atomic_add_8) @@ -63,6 +64,7 @@ ATOMIC_OP_ALIAS(atomic_sub_8,_atomic_sub ATOMIC_OP_ALIAS(atomic_sub_char,_atomic_sub_8) ATOMIC_OP_ALIAS(atomic_sub_uchar,_atomic_sub_8) CRT_ALIAS(__sync_fetch_and_sub_1,_atomic_sub_8) +CRT_ALIAS(__atomic_fetch_sub_1,_atomic_sub_8) STRONG_ALIAS(_atomic_sub_char,_atomic_sub_8) STRONG_ALIAS(_atomic_sub_uchar,_atomic_sub_8) Index: src/common/lib/libc/arch/arm/atomic/atomic_and_16.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_and_16.S:1.2 src/common/lib/libc/arch/arm/atomic/atomic_and_16.S:1.2.2.1 --- src/common/lib/libc/arch/arm/atomic/atomic_and_16.S:1.2 Tue Mar 4 16:15:28 2014 +++ src/common/lib/libc/arch/arm/atomic/atomic_and_16.S Sun Aug 10 06:47:05 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_and_16.S,v 1.2 2014/03/04 16:15:28 matt Exp $ */ +/* $NetBSD: atomic_and_16.S,v 1.2.2.1 2014/08/10 06:47:05 tls Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -51,6 +51,7 @@ END(_atomic_and_16) ATOMIC_OP_ALIAS(atomic_and_16,_atomic_and_16) ATOMIC_OP_ALIAS(atomic_and_ushort,_atomic_and_16) CRT_ALIAS(__sync_fetch_and_and_2,_atomic_and_16) +CRT_ALIAS(__atomic_fetch_and_2,_atomic_and_16) STRONG_ALIAS(_atomic_and_ushort,_atomic_and_16) ENTRY_NP(_atomic_and_16_nv) Index: src/common/lib/libc/arch/arm/atomic/atomic_and_8.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_and_8.S:1.2 src/common/lib/libc/arch/arm/atomic/atomic_and_8.S:1.2.2.1 --- src/common/lib/libc/arch/arm/atomic/atomic_and_8.S:1.2 Tue Mar 4 16:15:28 2014 +++ src/common/lib/libc/arch/arm/atomic/atomic_and_8.S Sun Aug 10 06:47:05 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_and_8.S,v 1.2 2014/03/04 16:15:28 matt Exp $ */ +/* $NetBSD: atomic_and_8.S,v 1.2.2.1 2014/08/10 06:47:05 tls Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -51,6 +51,7 @@ END(_atomic_and_8) ATOMIC_OP_ALIAS(atomic_and_8,_atomic_and_8) ATOMIC_OP_ALIAS(atomic_and_uchar,_atomic_and_8) CRT_ALIAS(__sync_fetch_and_and_1,_atomic_and_8) +CRT_ALIAS(__atomic_fetch_and_1,_atomic_and_8) STRONG_ALIAS(_atomic_and_uchar,_atomic_and_8) ENTRY_NP(_atomic_and_8_nv) Index: src/common/lib/libc/arch/arm/atomic/atomic_or_16.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_or_16.S:1.2 src/common/lib/libc/arch/arm/atomic/atomic_or_16.S:1.2.2.1 --- src/common/lib/libc/arch/arm/atomic/atomic_or_16.S:1.2 Tue Mar 4 16:15:28 2014 +++ src/common/lib/libc/arch/arm/atomic/atomic_or_16.S Sun Aug 10 06:47:05 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_or_16.S,v 1.2 2014/03/04 16:15:28 matt Exp $ */ +/* $NetBSD: atomic_or_16.S,v 1.2.2.1 2014/08/10 06:47:05 tls Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. * All rights reserved. @@ -50,6 +50,7 @@ END(_atomic_or_16) ATOMIC_OP_ALIAS(atomic_or_16,_atomic_or_16) ATOMIC_OP_ALIAS(atomic_or_ushort,_atomic_or_16) CRT_ALIAS(__sync_fetch_and_or_2,_atomic_or_16) +CRT_ALIAS(__atomic_fetch_or_2,_atomic_or_16) STRONG_ALIAS(_atomic_or_ushort,_atomic_or_16) ENTRY_NP(_atomic_or_16_nv) Index: src/common/lib/libc/arch/arm/atomic/atomic_or_8.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_or_8.S:1.2 src/common/lib/libc/arch/arm/atomic/atomic_or_8.S:1.2.2.1 --- src/common/lib/libc/arch/arm/atomic/atomic_or_8.S:1.2 Tue Mar 4 16:15:28 2014 +++ src/common/lib/libc/arch/arm/atomic/atomic_or_8.S Sun Aug 10 06:47:05 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_or_8.S,v 1.2 2014/03/04 16:15:28 matt Exp $ */ +/* $NetBSD: atomic_or_8.S,v 1.2.2.1 2014/08/10 06:47:05 tls Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -51,6 +51,7 @@ END(_atomic_or_8) ATOMIC_OP_ALIAS(atomic_or_8,_atomic_or_8) ATOMIC_OP_ALIAS(atomic_or_char,_atomic_or_8) CRT_ALIAS(__sync_fetch_and_or_1,_atomic_or_8) +CRT_ALIAS(__atomic_fetch_or_1,_atomic_or_8) STRONG_ALIAS(_atomic_or_char,_atomic_or_8) ENTRY_NP(_atomic_or_8_nv) Index: src/common/lib/libc/arch/arm/atomic/atomic_swap_16.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_swap_16.S:1.2 src/common/lib/libc/arch/arm/atomic/atomic_swap_16.S:1.2.2.1 --- src/common/lib/libc/arch/arm/atomic/atomic_swap_16.S:1.2 Tue Mar 4 16:15:28 2014 +++ src/common/lib/libc/arch/arm/atomic/atomic_swap_16.S Sun Aug 10 06:47:05 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_swap_16.S,v 1.2 2014/03/04 16:15:28 matt Exp $ */ +/* $NetBSD: atomic_swap_16.S,v 1.2.2.1 2014/08/10 06:47:05 tls Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -51,6 +51,7 @@ ATOMIC_OP_ALIAS(atomic_swap_16,_atomic_s ATOMIC_OP_ALIAS(atomic_swap_short,_atomic_swap_16) ATOMIC_OP_ALIAS(atomic_swap_ushort,_atomic_swap_16) CRT_ALIAS(__sync_lock_test_and_set_2,_atomic_swap_16) +CRT_ALIAS(__atomic_exchange_2,_atomic_swap_16) STRONG_ALIAS(_atomic_swap_short,_atomic_swap_16) STRONG_ALIAS(_atomic_swap_ushort,_atomic_swap_16) Index: src/common/lib/libc/arch/arm/atomic/atomic_xor_16.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_xor_16.S:1.2 src/common/lib/libc/arch/arm/atomic/atomic_xor_16.S:1.2.2.1 --- src/common/lib/libc/arch/arm/atomic/atomic_xor_16.S:1.2 Tue Mar 4 16:15:28 2014 +++ src/common/lib/libc/arch/arm/atomic/atomic_xor_16.S Sun Aug 10 06:47:05 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_xor_16.S,v 1.2 2014/03/04 16:15:28 matt Exp $ */ +/* $NetBSD: atomic_xor_16.S,v 1.2.2.1 2014/08/10 06:47:05 tls Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -51,6 +51,7 @@ END(_atomic_xor_16) ATOMIC_OP_ALIAS(atomic_xor_16,_atomic_xor_16) ATOMIC_OP_ALIAS(atomic_xor_ushort,_atomic_xor_16) CRT_ALIAS(__sync_fetch_and_xor_2,_atomic_xor_16) +CRT_ALIAS(__atomic_fetch_xor_2,_atomic_xor_16) STRONG_ALIAS(_atomic_xor_ushort,_atomic_xor_16) ENTRY_NP(_atomic_xor_16_nv) Index: src/common/lib/libc/arch/arm/atomic/atomic_xor_32.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_xor_32.S:1.2 src/common/lib/libc/arch/arm/atomic/atomic_xor_32.S:1.2.2.1 --- src/common/lib/libc/arch/arm/atomic/atomic_xor_32.S:1.2 Tue Mar 4 16:15:28 2014 +++ src/common/lib/libc/arch/arm/atomic/atomic_xor_32.S Sun Aug 10 06:47:05 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_xor_32.S,v 1.2 2014/03/04 16:15:28 matt Exp $ */ +/* $NetBSD: atomic_xor_32.S,v 1.2.2.1 2014/08/10 06:47:05 tls Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. * All rights reserved. @@ -51,6 +51,7 @@ ATOMIC_OP_ALIAS(atomic_xor_32,_atomic_xo ATOMIC_OP_ALIAS(atomic_xor_uint,_atomic_xor_32) ATOMIC_OP_ALIAS(atomic_xor_ulong,_atomic_xor_32) CRT_ALIAS(__sync_fetch_and_xor_4,_atomic_xor_32) +CRT_ALIAS(__atomic_fetch_xor_4,_atomic_xor_32) STRONG_ALIAS(_atomic_xor_uint,_atomic_xor_32) STRONG_ALIAS(_atomic_xor_ulong,_atomic_xor_32) Index: src/common/lib/libc/arch/arm/atomic/atomic_xor_8.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_xor_8.S:1.2 src/common/lib/libc/arch/arm/atomic/atomic_xor_8.S:1.2.2.1 --- src/common/lib/libc/arch/arm/atomic/atomic_xor_8.S:1.2 Tue Mar 4 16:15:28 2014 +++ src/common/lib/libc/arch/arm/atomic/atomic_xor_8.S Sun Aug 10 06:47:05 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_xor_8.S,v 1.2 2014/03/04 16:15:28 matt Exp $ */ +/* $NetBSD: atomic_xor_8.S,v 1.2.2.1 2014/08/10 06:47:05 tls Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -51,6 +51,7 @@ END(_atomic_xor_8) ATOMIC_OP_ALIAS(atomic_xor_8,_atomic_xor_8) ATOMIC_OP_ALIAS(atomic_xor_uchar,_atomic_xor_8) CRT_ALIAS(__sync_fetch_and_xor_1,_atomic_xor_8) +CRT_ALIAS(__atomic_fetch_xor_1,_atomic_xor_8) STRONG_ALIAS(_atomic_xor_uchar,_atomic_xor_8) ENTRY_NP(_atomic_xor_8_nv) Index: src/common/lib/libc/arch/arm/atomic/sync_fetch_and_add_8.S diff -u src/common/lib/libc/arch/arm/atomic/sync_fetch_and_add_8.S:1.2 src/common/lib/libc/arch/arm/atomic/sync_fetch_and_add_8.S:1.2.2.1 --- src/common/lib/libc/arch/arm/atomic/sync_fetch_and_add_8.S:1.2 Sat Nov 30 21:09:11 2013 +++ src/common/lib/libc/arch/arm/atomic/sync_fetch_and_add_8.S Sun Aug 10 06:47:05 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: sync_fetch_and_add_8.S,v 1.2 2013/11/30 21:09:11 joerg Exp $ */ +/* $NetBSD: sync_fetch_and_add_8.S,v 1.2.2.1 2014/08/10 06:47:05 tls Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -55,4 +55,6 @@ ENTRY_NP(__sync_fetch_and_add_8) RET /* return old value */ END(__sync_fetch_and_add_8) +CRT_ALIAS(__atomic_fetch_add_8,__sync_fetch_and_add_8) + #endif /* _ARM_ARCH_6 */ Index: src/common/lib/libc/arch/arm/atomic/sync_fetch_and_and_8.S diff -u src/common/lib/libc/arch/arm/atomic/sync_fetch_and_and_8.S:1.2 src/common/lib/libc/arch/arm/atomic/sync_fetch_and_and_8.S:1.2.2.1 --- src/common/lib/libc/arch/arm/atomic/sync_fetch_and_and_8.S:1.2 Sat Nov 30 21:09:11 2013 +++ src/common/lib/libc/arch/arm/atomic/sync_fetch_and_and_8.S Sun Aug 10 06:47:05 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: sync_fetch_and_and_8.S,v 1.2 2013/11/30 21:09:11 joerg Exp $ */ +/* $NetBSD: sync_fetch_and_and_8.S,v 1.2.2.1 2014/08/10 06:47:05 tls Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -55,4 +55,6 @@ ENTRY_NP(__sync_fetch_and_and_8) RET /* return old value */ END(__sync_fetch_and_and_8) +CRT_ALIAS(__atomic_fetch_and_8,__sync_fetch_and_and_8) + #endif /* _ARM_ARCH_6 */ Index: src/common/lib/libc/arch/arm/atomic/sync_fetch_and_or_8.S diff -u src/common/lib/libc/arch/arm/atomic/sync_fetch_and_or_8.S:1.2 src/common/lib/libc/arch/arm/atomic/sync_fetch_and_or_8.S:1.2.2.1 --- src/common/lib/libc/arch/arm/atomic/sync_fetch_and_or_8.S:1.2 Sat Nov 30 21:09:11 2013 +++ src/common/lib/libc/arch/arm/atomic/sync_fetch_and_or_8.S Sun Aug 10 06:47:05 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: sync_fetch_and_or_8.S,v 1.2 2013/11/30 21:09:11 joerg Exp $ */ +/* $NetBSD: sync_fetch_and_or_8.S,v 1.2.2.1 2014/08/10 06:47:05 tls Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -55,4 +55,6 @@ ENTRY_NP(__sync_fetch_and_or_8) RET /* return old value */ END(__sync_fetch_and_or_8) +CRT_ALIAS(__atomic_fetch_or_8,__sync_fetch_and_or_8) + #endif /* _ARM_ARCH_6 */ Index: src/common/lib/libc/arch/arm/atomic/sync_fetch_and_sub_8.S diff -u src/common/lib/libc/arch/arm/atomic/sync_fetch_and_sub_8.S:1.2 src/common/lib/libc/arch/arm/atomic/sync_fetch_and_sub_8.S:1.2.2.1 --- src/common/lib/libc/arch/arm/atomic/sync_fetch_and_sub_8.S:1.2 Sat Nov 30 21:09:11 2013 +++ src/common/lib/libc/arch/arm/atomic/sync_fetch_and_sub_8.S Sun Aug 10 06:47:05 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: sync_fetch_and_sub_8.S,v 1.2 2013/11/30 21:09:11 joerg Exp $ */ +/* $NetBSD: sync_fetch_and_sub_8.S,v 1.2.2.1 2014/08/10 06:47:05 tls Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -55,4 +55,6 @@ ENTRY_NP(__sync_fetch_and_sub_8) RET /* return old value */ END(__sync_fetch_and_sub_8) +CRT_ALIAS(__atomic_fetch_sub_8,__sync_fetch_and_sub_8) + #endif /* _ARM_ARCH_6 */ Index: src/common/lib/libc/arch/arm/atomic/sync_fetch_and_xor_8.S diff -u src/common/lib/libc/arch/arm/atomic/sync_fetch_and_xor_8.S:1.2 src/common/lib/libc/arch/arm/atomic/sync_fetch_and_xor_8.S:1.2.2.1 --- src/common/lib/libc/arch/arm/atomic/sync_fetch_and_xor_8.S:1.2 Sat Nov 30 21:09:11 2013 +++ src/common/lib/libc/arch/arm/atomic/sync_fetch_and_xor_8.S Sun Aug 10 06:47:05 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: sync_fetch_and_xor_8.S,v 1.2 2013/11/30 21:09:11 joerg Exp $ */ +/* $NetBSD: sync_fetch_and_xor_8.S,v 1.2.2.1 2014/08/10 06:47:05 tls Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -55,4 +55,6 @@ ENTRY_NP(__sync_fetch_and_xor_8) RET /* return old value */ END(__sync_fetch_and_xor_8) +CRT_ALIAS(__atomic_fetch_xor_8,__sync_fetch_and_xor_8) + #endif /* _ARM_ARCH_6 */ Index: src/common/lib/libc/arch/arm/atomic/atomic_add_32.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_add_32.S:1.7 src/common/lib/libc/arch/arm/atomic/atomic_add_32.S:1.7.2.1 --- src/common/lib/libc/arch/arm/atomic/atomic_add_32.S:1.7 Sat Feb 22 17:08:30 2014 +++ src/common/lib/libc/arch/arm/atomic/atomic_add_32.S Sun Aug 10 06:47:05 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_add_32.S,v 1.7 2014/02/22 17:08:30 martin Exp $ */ +/* $NetBSD: atomic_add_32.S,v 1.7.2.1 2014/08/10 06:47:05 tls Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -57,6 +57,7 @@ ATOMIC_OP_ALIAS(atomic_add_int,_atomic_a ATOMIC_OP_ALIAS(atomic_add_long,_atomic_add_32) ATOMIC_OP_ALIAS(atomic_add_ptr,_atomic_add_32) CRT_ALIAS(__sync_fetch_and_add_4,_atomic_add_32) +CRT_ALIAS(__atomic_fetch_add_4,_atomic_add_32) STRONG_ALIAS(_atomic_add_int,_atomic_add_32) STRONG_ALIAS(_atomic_add_long,_atomic_add_32) STRONG_ALIAS(_atomic_add_ptr,_atomic_add_32) @@ -66,6 +67,7 @@ ATOMIC_OP_ALIAS(atomic_sub_int,_atomic_s ATOMIC_OP_ALIAS(atomic_sub_long,_atomic_sub_32) ATOMIC_OP_ALIAS(atomic_sub_ptr,_atomic_sub_32) CRT_ALIAS(__sync_fetch_and_sub_4,_atomic_sub_32) +CRT_ALIAS(__atomic_fetch_sub_4,_atomic_sub_32) STRONG_ALIAS(_atomic_sub_int,_atomic_sub_32) STRONG_ALIAS(_atomic_sub_long,_atomic_sub_32) STRONG_ALIAS(_atomic_sub_ptr,_atomic_sub_32) Index: src/common/lib/libc/arch/arm/atomic/atomic_and_32.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_and_32.S:1.7 src/common/lib/libc/arch/arm/atomic/atomic_and_32.S:1.7.2.1 --- src/common/lib/libc/arch/arm/atomic/atomic_and_32.S:1.7 Sat Feb 22 17:08:30 2014 +++ src/common/lib/libc/arch/arm/atomic/atomic_and_32.S Sun Aug 10 06:47:05 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_and_32.S,v 1.7 2014/02/22 17:08:30 martin Exp $ */ +/* $NetBSD: atomic_and_32.S,v 1.7.2.1 2014/08/10 06:47:05 tls Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -52,6 +52,7 @@ ATOMIC_OP_ALIAS(atomic_and_32,_atomic_an ATOMIC_OP_ALIAS(atomic_and_uint,_atomic_and_32) ATOMIC_OP_ALIAS(atomic_and_ulong,_atomic_and_32) CRT_ALIAS(__sync_fetch_and_and_4,_atomic_and_32) +CRT_ALIAS(__atomic_fetch_and_4,_atomic_and_32) STRONG_ALIAS(_atomic_and_uint,_atomic_and_32) STRONG_ALIAS(_atomic_and_ulong,_atomic_and_32) Index: src/common/lib/libc/arch/arm/atomic/atomic_or_32.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_or_32.S:1.7 src/common/lib/libc/arch/arm/atomic/atomic_or_32.S:1.7.2.1 --- src/common/lib/libc/arch/arm/atomic/atomic_or_32.S:1.7 Sat Feb 22 17:08:30 2014 +++ src/common/lib/libc/arch/arm/atomic/atomic_or_32.S Sun Aug 10 06:47:05 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_or_32.S,v 1.7 2014/02/22 17:08:30 martin Exp $ */ +/* $NetBSD: atomic_or_32.S,v 1.7.2.1 2014/08/10 06:47:05 tls Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. * All rights reserved. @@ -51,6 +51,7 @@ ATOMIC_OP_ALIAS(atomic_or_32,_atomic_or_ ATOMIC_OP_ALIAS(atomic_or_uint,_atomic_or_32) ATOMIC_OP_ALIAS(atomic_or_ulong,_atomic_or_32) CRT_ALIAS(__sync_fetch_and_or_4,_atomic_or_32) +CRT_ALIAS(__atomic_fetch_or_4,_atomic_or_32) STRONG_ALIAS(_atomic_or_uint,_atomic_or_32) STRONG_ALIAS(_atomic_or_ulong,_atomic_or_32) Index: src/common/lib/libc/arch/arm/atomic/atomic_swap.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.10 src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.10.2.1 --- src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.10 Tue Mar 4 16:15:28 2014 +++ src/common/lib/libc/arch/arm/atomic/atomic_swap.S Sun Aug 10 06:47:05 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_swap.S,v 1.10 2014/03/04 16:15:28 matt Exp $ */ +/* $NetBSD: atomic_swap.S,v 1.10.2.1 2014/08/10 06:47:05 tls Exp $ */ /*- * Copyright (c) 2007,2012 The NetBSD Foundation, Inc. @@ -79,6 +79,7 @@ ATOMIC_OP_ALIAS(atomic_swap_uint,_atomic ATOMIC_OP_ALIAS(atomic_swap_ulong,_atomic_swap_32) ATOMIC_OP_ALIAS(atomic_swap_ptr,_atomic_swap_32) CRT_ALIAS(__sync_lock_test_and_set_4,_atomic_swap_32) +CRT_ALIAS(__atomic_exchange_4,_atomic_swap_32) STRONG_ALIAS(_atomic_swap_uint,_atomic_swap_32) STRONG_ALIAS(_atomic_swap_ulong,_atomic_swap_32) STRONG_ALIAS(_atomic_swap_ptr,_atomic_swap_32) @@ -115,6 +116,7 @@ ATOMIC_OP_ALIAS(atomic_swap_8,_atomic_sw ATOMIC_OP_ALIAS(atomic_swap_char,_atomic_swap_8) ATOMIC_OP_ALIAS(atomic_swap_uchar,_atomic_swap_8) CRT_ALIAS(__sync_lock_test_and_set_1,_atomic_swap_8) +CRT_ALIAS(__atomic_exchange_1,_atomic_swap_8) STRONG_ALIAS(_atomic_swap_char,_atomic_swap_8) STRONG_ALIAS(_atomic_swap_uchar,_atomic_swap_8) Index: src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S:1.8 src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S:1.8.2.1 --- src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S:1.8 Tue Mar 4 16:15:28 2014 +++ src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S Sun Aug 10 06:47:05 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_swap_64.S,v 1.8 2014/03/04 16:15:28 matt Exp $ */ +/* $NetBSD: atomic_swap_64.S,v 1.8.2.1 2014/08/10 06:47:05 tls Exp $ */ /*- * Copyright (c) 2012 The NetBSD Foundation, Inc. * All rights reserved. @@ -51,6 +51,7 @@ ENTRY_NP(_atomic_swap_64) END(_atomic_swap_64) ATOMIC_OP_ALIAS(atomic_swap_64,_atomic_swap_64) CRT_ALIAS(__sync_lock_test_and_set_8,_atomic_swap_64) +CRT_ALIAS(__atomic_exchange_8,_atomic_swap_64) #if (!defined(_KERNEL) || defined(_RUMPKERNEL)) && !defined(_STANDALONE) ENTRY_NP(__sync_lock_release_8) Index: src/common/lib/libc/arch/arm/quad/__aeabi_ldivmod.S diff -u src/common/lib/libc/arch/arm/quad/__aeabi_ldivmod.S:1.12 src/common/lib/libc/arch/arm/quad/__aeabi_ldivmod.S:1.12.2.1 --- src/common/lib/libc/arch/arm/quad/__aeabi_ldivmod.S:1.12 Mon Aug 19 03:27:34 2013 +++ src/common/lib/libc/arch/arm/quad/__aeabi_ldivmod.S Sun Aug 10 06:47:05 2014 @@ -29,7 +29,7 @@ #include <machine/asm.h> -RCSID("$NetBSD: __aeabi_ldivmod.S,v 1.12 2013/08/19 03:27:34 matt Exp $") +RCSID("$NetBSD: __aeabi_ldivmod.S,v 1.12.2.1 2014/08/10 06:47:05 tls Exp $") #ifdef __ARMEB__ #define ALO r1 /* incoming numerator, outgoing quotient */ @@ -45,7 +45,9 @@ RCSID("$NetBSD: __aeabi_ldivmod.S,v 1.12 ENTRY(__aeabi_ldivmod) #ifdef __ARM_EABI__ +# if !defined(__ARM_DWARF_EH__) .fnstart +# endif .cfi_startproc #endif #if !defined(_KERNEL) && !defined(_STANDALONE) @@ -212,7 +214,9 @@ ENTRY(__aeabi_ldivmod) .Ldivbyzero: push {r0-r1,r4,lr} #ifdef __ARM_EABI__ +# if !defined(__ARM_DWARF_EH__) .save {r0-r1,r4,lr} +# endif .cfi_def_cfa_offset 16 .cfi_offset 14, -4 .cfi_offset 4, -8 @@ -244,6 +248,8 @@ ENTRY(__aeabi_ldivmod) #endif /* !_KERNEL && !_STANDALONE */ #ifdef __ARM_EABI__ .cfi_endproc +# if !defined(__ARM_DWARF_EH__) .fnend +# endif #endif END(__aeabi_ldivmod) Index: src/common/lib/libc/arch/arm/quad/__aeabi_uldivmod.S diff -u src/common/lib/libc/arch/arm/quad/__aeabi_uldivmod.S:1.8 src/common/lib/libc/arch/arm/quad/__aeabi_uldivmod.S:1.8.2.1 --- src/common/lib/libc/arch/arm/quad/__aeabi_uldivmod.S:1.8 Thu Dec 12 18:01:14 2013 +++ src/common/lib/libc/arch/arm/quad/__aeabi_uldivmod.S Sun Aug 10 06:47:05 2014 @@ -29,7 +29,7 @@ #include <machine/asm.h> -RCSID("$NetBSD: __aeabi_uldivmod.S,v 1.8 2013/12/12 18:01:14 matt Exp $") +RCSID("$NetBSD: __aeabi_uldivmod.S,v 1.8.2.1 2014/08/10 06:47:05 tls Exp $") /* * typedef struct { unsigned long long quo, rem } ulldiv_t; @@ -39,7 +39,9 @@ RCSID("$NetBSD: __aeabi_uldivmod.S,v 1.8 ENTRY(__aeabi_uldivmod) #ifdef __ARM_EABI__ +# if !defined(__ARM_DWARF_EH__) .fnstart +#endif .cfi_startproc #endif #if !defined(_KERNEL) && !defined(_STANDALONE) @@ -61,7 +63,9 @@ ENTRY(__aeabi_uldivmod) push {r4,lr} #ifdef __ARM_EABI__ +# if !defined(__ARM_DWARF_EH__) .save {r4,lr} +# endif .cfi_def_cfa_offset 8 .cfi_offset 14, -4 .cfi_offset 4, -8 @@ -94,7 +98,9 @@ ENTRY(__aeabi_uldivmod) .Ldivbyzero: push {r0-r1,r4,lr} #ifdef __ARM_EABI__ +# if !defined(__ARM_DWARF_EH__) .save {r0-r1,r4,lr} +# endif .cfi_def_cfa_offset 16 .cfi_offset 14, -4 .cfi_offset 4, -8 @@ -111,6 +117,8 @@ ENTRY(__aeabi_uldivmod) #endif #ifdef __ARM_EABI__ .cfi_endproc +# if !defined(__ARM_DWARF_EH__) .fnend +# endif #endif END(__aeabi_uldivmod) Index: src/common/lib/libc/arch/arm/string/strcat_arm.S diff -u src/common/lib/libc/arch/arm/string/strcat_arm.S:1.5 src/common/lib/libc/arch/arm/string/strcat_arm.S:1.5.2.1 --- src/common/lib/libc/arch/arm/string/strcat_arm.S:1.5 Thu Sep 5 05:15:47 2013 +++ src/common/lib/libc/arch/arm/string/strcat_arm.S Sun Aug 10 06:47:05 2014 @@ -34,12 +34,16 @@ */ ENTRY(strcat) #if defined(__ARM_EABI__) && defined(__UNWIND_TABLES__) +# if !defined(__ARM_DWARF_EH__) .fnstart +# endif .cfi_startproc #endif push {r3-r5, lr} /* save registers */ #if defined(__ARM_EABI__) && defined(__UNWIND_TABLES__) +# if !defined(__ARM_DWARF_EH__) .save {r3-r5, lr} +# endif .cfi_def_cfa_offset 16 .cfi_offset 14, -4 .cfi_offset 5, -8 @@ -60,6 +64,8 @@ ENTRY(strcat) pop {r3-r5, pc} /* restore registers */ #if defined(__ARM_EABI__) && defined(__UNWIND_TABLES__) .cfi_endproc +# if !defined(__ARM_DWARF_EH__) .fnend +# endif #endif END(strcat) Index: src/common/lib/libc/arch/arm/string/strlcat_arm.S diff -u src/common/lib/libc/arch/arm/string/strlcat_arm.S:1.5 src/common/lib/libc/arch/arm/string/strlcat_arm.S:1.5.2.1 --- src/common/lib/libc/arch/arm/string/strlcat_arm.S:1.5 Thu Sep 5 05:15:47 2013 +++ src/common/lib/libc/arch/arm/string/strlcat_arm.S Sun Aug 10 06:47:05 2014 @@ -29,17 +29,21 @@ #include <machine/asm.h> -RCSID("$NetBSD: strlcat_arm.S,v 1.5 2013/09/05 05:15:47 matt Exp $") +RCSID("$NetBSD: strlcat_arm.S,v 1.5.2.1 2014/08/10 06:47:05 tls Exp $") /* LINTSTUB: size_t strlcat(char *, const char *, size_t) */ ENTRY(strlcat) #if defined(__ARM_EABI__) && defined(__UNWIND_TABLES__) +# if !defined(__ARM_DWARF_EH__) .fnstart +# endif .cfi_startproc #endif push {r4-r6, lr} #if defined(__ARM_EABI__) && defined(__UNWIND_TABLES__) +# if !defined(__ARM_DWARF_EH__) .save {r4-r6, lr} +# endif .cfi_def_cfa_offset 16 .cfi_offset 14, -4 .cfi_offset 6, -8 @@ -62,6 +66,8 @@ ENTRY(strlcat) pop {r4-r6, pc} /* restore registers and return */ #if defined(__ARM_EABI__) && defined(__UNWIND_TABLES__) .cfi_endproc +# if !defined(__ARM_DWARF_EH__) .fnend +# endif #endif END(strlcat) Index: src/common/lib/libc/arch/arm/string/strlen_arm.S diff -u src/common/lib/libc/arch/arm/string/strlen_arm.S:1.8 src/common/lib/libc/arch/arm/string/strlen_arm.S:1.8.2.1 --- src/common/lib/libc/arch/arm/string/strlen_arm.S:1.8 Thu Sep 5 05:15:47 2013 +++ src/common/lib/libc/arch/arm/string/strlen_arm.S Sun Aug 10 06:47:05 2014 @@ -29,7 +29,7 @@ #include <machine/asm.h> -RCSID("$NetBSD: strlen_arm.S,v 1.8 2013/09/05 05:15:47 matt Exp $") +RCSID("$NetBSD: strlen_arm.S,v 1.8.2.1 2014/08/10 06:47:05 tls Exp $") #if defined(__thumb__) && !defined(_ARM_ARCH_T2) #error Only Thumb2 or ARM supported @@ -56,13 +56,17 @@ RCSID("$NetBSD: strlen_arm.S,v 1.8 2013/ .text ENTRY(FUNCNAME) #if defined(__ARM_EABI__) && defined(__UNWIND_TABLES__) +# if !defined(__ARM_DWARF_EH__) .fnstart +# endif .cfi_startproc #endif #ifdef STRNLEN push {r4,r5} /* save some registers */ #if defined(__ARM_EABI__) && defined(__UNWIND_TABLES__) +# if !defined(__ARM_DWARF_EH__) .save {r4,r5} +# endif .cfi_def_cfa_offset 8 .cfi_offset 5, -4 .cfi_offset 4, -8 @@ -175,6 +179,8 @@ ENTRY(FUNCNAME) #endif #if defined(__ARM_EABI__) && defined(__UNWIND_TABLES__) .cfi_endproc +# if !defined(__ARM_DWARF_EH__) .fnend +# endif #endif END(FUNCNAME) Index: src/common/lib/libc/arch/i386/atomic/atomic.S diff -u src/common/lib/libc/arch/i386/atomic/atomic.S:1.20 src/common/lib/libc/arch/i386/atomic/atomic.S:1.20.2.1 --- src/common/lib/libc/arch/i386/atomic/atomic.S:1.20 Tue Feb 18 10:16:55 2014 +++ src/common/lib/libc/arch/i386/atomic/atomic.S Sun Aug 10 06:47:05 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic.S,v 1.20 2014/02/18 10:16:55 martin Exp $ */ +/* $NetBSD: atomic.S,v 1.20.2.1 2014/08/10 06:47:05 tls Exp $ */ /*- * Copyright (c) 2007 The NetBSD Foundation, Inc. @@ -31,7 +31,11 @@ #include <sys/param.h> #include <machine/asm.h> - +/* + * __HAVE_ constants should not be in <machine/types.h> + * because we can't use them from assembly. OTOH we + * only need __HAVE_ATOMIC64_OPS here, and we don't. + */ #ifdef _KERNEL #define ALIAS(f, t) STRONG_ALIAS(f,t) #else @@ -54,6 +58,7 @@ ENTRY(_atomic_add_32) LOCK(1) addl %eax, (%edx) ret +END(_atomic_add_32) ENTRY(_atomic_add_32_nv) movl 4(%esp), %edx @@ -63,6 +68,7 @@ ENTRY(_atomic_add_32_nv) xaddl %eax, (%edx) addl %ecx, %eax ret +END(_atomic_add_32_nv) ENTRY(_atomic_and_32) movl 4(%esp), %edx @@ -70,6 +76,7 @@ ENTRY(_atomic_and_32) LOCK(3) andl %eax, (%edx) ret +END(_atomic_and_32) ENTRY(_atomic_and_32_nv) movl 4(%esp), %edx @@ -84,12 +91,14 @@ ENTRY(_atomic_and_32_nv) ret 1: jmp 0b +END(_atomic_and_32_nv) ENTRY(_atomic_dec_32) movl 4(%esp), %edx LOCK(5) decl (%edx) ret +END(_atomic_dec_32) ENTRY(_atomic_dec_32_nv) movl 4(%esp), %edx @@ -98,12 +107,14 @@ ENTRY(_atomic_dec_32_nv) xaddl %eax, (%edx) decl %eax ret +END(_atomic_dec_32_nv) ENTRY(_atomic_inc_32) movl 4(%esp), %edx LOCK(7) incl (%edx) ret +END(_atomic_inc_32) ENTRY(_atomic_inc_32_nv) movl 4(%esp), %edx @@ -112,6 +123,7 @@ ENTRY(_atomic_inc_32_nv) xaddl %eax, (%edx) incl %eax ret +END(_atomic_inc_32_nv) ENTRY(_atomic_or_32) movl 4(%esp), %edx @@ -119,6 +131,7 @@ ENTRY(_atomic_or_32) LOCK(9) orl %eax, (%edx) ret +END(_atomic_or_32) ENTRY(_atomic_or_32_nv) movl 4(%esp), %edx @@ -133,12 +146,14 @@ ENTRY(_atomic_or_32_nv) ret 1: jmp 0b +END(_atomic_or_32_nv) ENTRY(_atomic_swap_32) movl 4(%esp), %edx movl 8(%esp), %eax xchgl %eax, (%edx) ret +END(_atomic_swap_32) ENTRY(_atomic_cas_32) movl 4(%esp), %edx @@ -148,6 +163,7 @@ ENTRY(_atomic_cas_32) cmpxchgl %ecx, (%edx) /* %eax now contains the old value */ ret +END(_atomic_cas_32) ENTRY(_atomic_cas_32_ni) movl 4(%esp), %edx @@ -156,29 +172,35 @@ ENTRY(_atomic_cas_32_ni) cmpxchgl %ecx, (%edx) /* %eax now contains the old value */ ret +END(_atomic_cas_32_ni) ENTRY(_membar_consumer) LOCK(13) addl $0, -4(%esp) ret +END(_membar_consumer) ENDLABEL(membar_consumer_end) ENTRY(_membar_producer) /* A store is enough */ movl $0, -4(%esp) ret +END(_membar_producer) ENDLABEL(membar_producer_end) ENTRY(_membar_sync) LOCK(14) addl $0, -4(%esp) ret +END(_membar_sync) ENDLABEL(membar_sync_end) -#ifdef _HARDKERNEL +#if defined(__HAVE_ATOMIC64_OPS) || defined(_KERNEL) ENTRY(_atomic_cas_64) +#ifdef _HARDKERNEL pushf cli +#endif /* _HARDKERNEL */ pushl %edi pushl %ebx movl 12(%esp), %edi @@ -195,12 +217,15 @@ ENTRY(_atomic_cas_64) 1: popl %ebx popl %edi +#ifdef _HARDKERNEL popf +#endif /* _HARDKERNEL */ ret 2: movl 0(%edi), %eax movl 4(%edi), %edx jmp 1b +END(_atomic_cas_64) ENDLABEL(_atomic_cas_64_end) ENTRY(_atomic_cas_cx8) @@ -216,21 +241,28 @@ ENTRY(_atomic_cas_cx8) popl %ebx popl %edi ret +#ifdef _HARDKERNEL #ifdef GPROF .space 16, 0x90 #else .space 32, 0x90 #endif +#endif /* _HARDKERNEL */ +END(_atomic_cas_cx8) ENDLABEL(_atomic_cas_cx8_end) +#endif /* __HAVE_ATOMIC64_OPS || _KERNEL */ +#ifdef _HARDKERNEL ENTRY(sse2_lfence) lfence ret +END(sse2_lfence) ENDLABEL(sse2_lfence_end) ENTRY(sse2_mfence) mfence ret +END(sse2_mfence) ENDLABEL(sse2_mfence_end) atomic_lockpatch: @@ -238,20 +270,6 @@ atomic_lockpatch: .long .Lpatch1, .Lpatch2, .Lpatch3, .Lpatch4, .Lpatch5 .long .Lpatch6, .Lpatch7, .Lpatch8, .Lpatch9, .Lpatch10 .long .Lpatch12, .Lpatch13, .Lpatch14, .Lpatch15, 0 -#else -ENTRY(_atomic_cas_64) - pushl %edi - pushl %ebx - movl 12(%esp), %edi - movl 16(%esp), %eax - movl 20(%esp), %edx - movl 24(%esp), %ebx - movl 28(%esp), %ecx - lock - cmpxchg8b (%edi) - popl %ebx - popl %edi - ret #endif /* _HARDKERNEL */ ALIAS(atomic_add_32,_atomic_add_32) @@ -319,9 +337,11 @@ ALIAS(atomic_cas_uint_ni,_atomic_cas_32_ ALIAS(atomic_cas_ulong_ni,_atomic_cas_32_ni) ALIAS(atomic_cas_ptr_ni,_atomic_cas_32_ni) +#if defined(__HAVE_ATOMIC64_OPS) || defined(_KERNEL) ALIAS(atomic_cas_64,_atomic_cas_64) ALIAS(atomic_cas_64_ni,_atomic_cas_64) ALIAS(__sync_val_compare_and_swap_8,_atomic_cas_64) +#endif /* __HAVE_ATOMIC64_OPS || _KERNEL */ ALIAS(membar_consumer,_membar_consumer) ALIAS(membar_producer,_membar_producer) Index: src/common/lib/libc/arch/i386/gen/byte_swap_2.S diff -u src/common/lib/libc/arch/i386/gen/byte_swap_2.S:1.3 src/common/lib/libc/arch/i386/gen/byte_swap_2.S:1.3.48.1 --- src/common/lib/libc/arch/i386/gen/byte_swap_2.S:1.3 Wed Nov 28 17:03:35 2007 +++ src/common/lib/libc/arch/i386/gen/byte_swap_2.S Sun Aug 10 06:47:05 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: byte_swap_2.S,v 1.3 2007/11/28 17:03:35 ad Exp $ */ +/* $NetBSD: byte_swap_2.S,v 1.3.48.1 2014/08/10 06:47:05 tls Exp $ */ /*- * Copyright (c) 1990 The Regents of the University of California. @@ -36,7 +36,7 @@ #include <machine/asm.h> #if defined(LIBC_SCCS) - RCSID("$NetBSD: byte_swap_2.S,v 1.3 2007/11/28 17:03:35 ad Exp $") + RCSID("$NetBSD: byte_swap_2.S,v 1.3.48.1 2014/08/10 06:47:05 tls Exp $") #endif #if defined(_KERNEL) || defined(_STANDALONE) @@ -50,3 +50,10 @@ _PROF_PROLOGUE movzwl 4(%esp),%eax xchgb %al, %ah ret +#if defined(_KERNEL) || defined(_STANDALONE) +END(_C_LABEL(bswap16)) +#else /* defined(_KERNEL) || defined(_STANDALONE) */ +END(_C_LABEL(__bswap16)) +#endif /* defined(_KERNEL) || defined(_STANDALONE) */ +END(_C_LABEL(ntohs)) +END(_C_LABEL(htons)) Index: src/common/lib/libc/arch/i386/gen/byte_swap_4.S diff -u src/common/lib/libc/arch/i386/gen/byte_swap_4.S:1.3 src/common/lib/libc/arch/i386/gen/byte_swap_4.S:1.3.48.1 --- src/common/lib/libc/arch/i386/gen/byte_swap_4.S:1.3 Wed Nov 28 17:03:35 2007 +++ src/common/lib/libc/arch/i386/gen/byte_swap_4.S Sun Aug 10 06:47:05 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: byte_swap_4.S,v 1.3 2007/11/28 17:03:35 ad Exp $ */ +/* $NetBSD: byte_swap_4.S,v 1.3.48.1 2014/08/10 06:47:05 tls Exp $ */ /*- * Copyright (c) 1990 The Regents of the University of California. @@ -36,7 +36,7 @@ #include <machine/asm.h> #if defined(LIBC_SCCS) - RCSID("$NetBSD: byte_swap_4.S,v 1.3 2007/11/28 17:03:35 ad Exp $") + RCSID("$NetBSD: byte_swap_4.S,v 1.3.48.1 2014/08/10 06:47:05 tls Exp $") #endif #if defined(_KERNEL) || defined(_STANDALONE) @@ -50,3 +50,10 @@ _PROF_PROLOGUE movl 4(%esp),%eax bswap %eax ret +#if defined(_KERNEL) || defined(_STANDALONE) +END(_C_LABEL(bswap32)) +#else /* defined(_KERNEL) || defined(_STANDALONE) */ +END(_C_LABEL(__bswap32)) +#endif /* defined(_KERNEL) || defined(_STANDALONE) */ +END(_C_LABEL(ntohl)) +END(_C_LABEL(htonl)) Index: src/common/lib/libc/arch/i386/string/memset.S diff -u src/common/lib/libc/arch/i386/string/memset.S:1.4 src/common/lib/libc/arch/i386/string/memset.S:1.4.40.1 --- src/common/lib/libc/arch/i386/string/memset.S:1.4 Tue Apr 29 06:53:01 2008 +++ src/common/lib/libc/arch/i386/string/memset.S Sun Aug 10 06:47:05 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: memset.S,v 1.4 2008/04/29 06:53:01 martin Exp $ */ +/* $NetBSD: memset.S,v 1.4.40.1 2014/08/10 06:47:05 tls Exp $ */ /*- * Copyright (c) 2003 The NetBSD Foundation, Inc. @@ -32,7 +32,7 @@ #include <machine/asm.h> #if defined(LIBC_SCCS) - RCSID("$NetBSD: memset.S,v 1.4 2008/04/29 06:53:01 martin Exp $") + RCSID("$NetBSD: memset.S,v 1.4.40.1 2014/08/10 06:47:05 tls Exp $") #endif #ifdef BZERO @@ -104,3 +104,8 @@ ENTRY(memset) #endif popl %edi ret +#ifdef BZERO +END(bzero) +#else +END(memset) +#endif Index: src/common/lib/libc/arch/i386/string/small/memcpy.S diff -u src/common/lib/libc/arch/i386/string/small/memcpy.S:1.1 src/common/lib/libc/arch/i386/string/small/memcpy.S:1.1.20.1 --- src/common/lib/libc/arch/i386/string/small/memcpy.S:1.1 Thu Jun 16 16:39:14 2011 +++ src/common/lib/libc/arch/i386/string/small/memcpy.S Sun Aug 10 06:47:05 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: memcpy.S,v 1.1 2011/06/16 16:39:14 joerg Exp $ */ +/* $NetBSD: memcpy.S,v 1.1.20.1 2014/08/10 06:47:05 tls Exp $ */ /*- * Copyright (c) 2011 The NetBSD Foundation, Inc. * All rights reserved. @@ -29,7 +29,7 @@ */ #include <machine/asm.h> - RCSID("$NetBSD: memcpy.S,v 1.1 2011/06/16 16:39:14 joerg Exp $") + RCSID("$NetBSD: memcpy.S,v 1.1.20.1 2014/08/10 06:47:05 tls Exp $") # ifdef BCOPY ENTRY(bcopy) @@ -68,4 +68,9 @@ __memmove_start: popl %edi popl %esi ret +END(memcpy) +END(memmove) # endif /* MEMMOVE */ +# ifdef BCOPY +END(bcopy) +# endif Index: src/common/lib/libc/arch/m68k/atomic/atomic_add.S diff -u src/common/lib/libc/arch/m68k/atomic/atomic_add.S:1.9 src/common/lib/libc/arch/m68k/atomic/atomic_add.S:1.9.2.1 --- src/common/lib/libc/arch/m68k/atomic/atomic_add.S:1.9 Sat Feb 22 17:08:30 2014 +++ src/common/lib/libc/arch/m68k/atomic/atomic_add.S Sun Aug 10 06:47:05 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_add.S,v 1.9 2014/02/22 17:08:30 martin Exp $ */ +/* $NetBSD: atomic_add.S,v 1.9.2.1 2014/08/10 06:47:05 tls Exp $ */ /*- * Copyright (c) 2007 The NetBSD Foundation, Inc. @@ -122,3 +122,7 @@ ENTRY(__sync_fetch_and_add_1) bne 1b rts END(__sync_fetch_and_add_1) + +CRT_ALIAS(__atomic_fetch_add_1,__sync_fetch_and_add_1) +CRT_ALIAS(__atomic_fetch_add_2,__sync_fetch_and_add_2) +CRT_ALIAS(__atomic_fetch_add_4,__sync_fetch_and_add_4) Index: src/common/lib/libc/arch/m68k/atomic/atomic_and.S diff -u src/common/lib/libc/arch/m68k/atomic/atomic_and.S:1.10 src/common/lib/libc/arch/m68k/atomic/atomic_and.S:1.10.2.1 --- src/common/lib/libc/arch/m68k/atomic/atomic_and.S:1.10 Sat Feb 22 17:08:30 2014 +++ src/common/lib/libc/arch/m68k/atomic/atomic_and.S Sun Aug 10 06:47:05 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_and.S,v 1.10 2014/02/22 17:08:30 martin Exp $ */ +/* $NetBSD: atomic_and.S,v 1.10.2.1 2014/08/10 06:47:05 tls Exp $ */ /*- * Copyright (c) 2007 The NetBSD Foundation, Inc. @@ -123,4 +123,6 @@ ENTRY(__sync_fetch_and_and_1) rts END(__sync_fetch_and_and_1) - +CRT_ALIAS(__atomic_fetch_and_1,__sync_fetch_and_and_1) +CRT_ALIAS(__atomic_fetch_and_2,__sync_fetch_and_and_2) +CRT_ALIAS(__atomic_fetch_and_4,__sync_fetch_and_and_4) Index: src/common/lib/libc/arch/m68k/atomic/atomic_or.S diff -u src/common/lib/libc/arch/m68k/atomic/atomic_or.S:1.10 src/common/lib/libc/arch/m68k/atomic/atomic_or.S:1.10.2.1 --- src/common/lib/libc/arch/m68k/atomic/atomic_or.S:1.10 Sat Feb 22 17:08:30 2014 +++ src/common/lib/libc/arch/m68k/atomic/atomic_or.S Sun Aug 10 06:47:05 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_or.S,v 1.10 2014/02/22 17:08:30 martin Exp $ */ +/* $NetBSD: atomic_or.S,v 1.10.2.1 2014/08/10 06:47:05 tls Exp $ */ /*- * Copyright (c) 2007 The NetBSD Foundation, Inc. @@ -123,3 +123,7 @@ ENTRY(__sync_fetch_and_or_1) bne 1b rts END(__sync_fetch_and_or_1) + +CRT_ALIAS(__atomic_fetch_or_1,__sync_fetch_and_or_1) +CRT_ALIAS(__atomic_fetch_or_2,__sync_fetch_and_or_2) +CRT_ALIAS(__atomic_fetch_or_4,__sync_fetch_and_or_4) Index: src/common/lib/libc/arch/m68k/atomic/atomic_sub.S diff -u src/common/lib/libc/arch/m68k/atomic/atomic_sub.S:1.2 src/common/lib/libc/arch/m68k/atomic/atomic_sub.S:1.2.2.1 --- src/common/lib/libc/arch/m68k/atomic/atomic_sub.S:1.2 Sat Feb 22 17:08:30 2014 +++ src/common/lib/libc/arch/m68k/atomic/atomic_sub.S Sun Aug 10 06:47:05 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_sub.S,v 1.2 2014/02/22 17:08:30 martin Exp $ */ +/* $NetBSD: atomic_sub.S,v 1.2.2.1 2014/08/10 06:47:05 tls Exp $ */ /*- * Copyright (c) 2007 The NetBSD Foundation, Inc. @@ -122,3 +122,7 @@ ENTRY(__sync_fetch_and_sub_1) bne 1b rts END(__sync_fetch_and_sub_1) + +CRT_ALIAS(__atomic_fetch_sub_1,__sync_fetch_and_sub_1) +CRT_ALIAS(__atomic_fetch_sub_2,__sync_fetch_and_sub_2) +CRT_ALIAS(__atomic_fetch_sub_4,__sync_fetch_and_sub_4) Index: src/common/lib/libc/arch/m68k/atomic/atomic_xor.S diff -u src/common/lib/libc/arch/m68k/atomic/atomic_xor.S:1.2 src/common/lib/libc/arch/m68k/atomic/atomic_xor.S:1.2.2.1 --- src/common/lib/libc/arch/m68k/atomic/atomic_xor.S:1.2 Sat Feb 22 17:08:30 2014 +++ src/common/lib/libc/arch/m68k/atomic/atomic_xor.S Sun Aug 10 06:47:05 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_xor.S,v 1.2 2014/02/22 17:08:30 martin Exp $ */ +/* $NetBSD: atomic_xor.S,v 1.2.2.1 2014/08/10 06:47:05 tls Exp $ */ /*- * Copyright (c) 2007 The NetBSD Foundation, Inc. @@ -129,3 +129,7 @@ ENTRY(__sync_fetch_and_xor_1) bne 1b rts END(__sync_fetch_and_xor_1) + +CRT_ALIAS(__atomic_fetch_xor_1,__sync_fetch_and_xor_1) +CRT_ALIAS(__atomic_fetch_xor_2,__sync_fetch_and_xor_2) +CRT_ALIAS(__atomic_fetch_xor_4,__sync_fetch_and_xor_4) Index: src/common/lib/libc/arch/m68k/atomic/atomic_swap.S diff -u src/common/lib/libc/arch/m68k/atomic/atomic_swap.S:1.8 src/common/lib/libc/arch/m68k/atomic/atomic_swap.S:1.8.2.1 --- src/common/lib/libc/arch/m68k/atomic/atomic_swap.S:1.8 Sat Feb 22 17:08:30 2014 +++ src/common/lib/libc/arch/m68k/atomic/atomic_swap.S Sun Aug 10 06:47:05 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_swap.S,v 1.8 2014/02/22 17:08:30 martin Exp $ */ +/* $NetBSD: atomic_swap.S,v 1.8.2.1 2014/08/10 06:47:05 tls Exp $ */ /*- * Copyright (c) 2007 The NetBSD Foundation, Inc. @@ -51,6 +51,7 @@ STRONG_ALIAS(_atomic_swap_ulong,_atomic_ ATOMIC_OP_ALIAS(atomic_swap_ptr,_atomic_swap_32) STRONG_ALIAS(_atomic_swap_ptr,_atomic_swap_32) CRT_ALIAS(__sync_lock_test_and_set_4,_atomic_swap_32) +CRT_ALIAS(__atomic_exchange_4,_atomic_swap_32) ENTRY(_atomic_swap_16) @@ -64,6 +65,7 @@ ENTRY(_atomic_swap_16) END(_atomic_swap_16) ATOMIC_OP_ALIAS(atomic_swap_16,_atomic_swap_16) CRT_ALIAS(__sync_lock_test_and_set_2,_atomic_swap_16) +CRT_ALIAS(__atomic_exchange_2,_atomic_swap_16) ENTRY(_atomic_swap_8) movl 4(%sp), %a0 @@ -76,3 +78,4 @@ ENTRY(_atomic_swap_8) END(_atomic_swap_8) ATOMIC_OP_ALIAS(atomic_swap_8,_atomic_swap_8) CRT_ALIAS(__sync_lock_test_and_set_1,_atomic_swap_8) +CRT_ALIAS(__atomic_exchange_1,_atomic_swap_8) Index: src/common/lib/libc/arch/x86_64/atomic/atomic.S diff -u src/common/lib/libc/arch/x86_64/atomic/atomic.S:1.16 src/common/lib/libc/arch/x86_64/atomic/atomic.S:1.16.24.1 --- src/common/lib/libc/arch/x86_64/atomic/atomic.S:1.16 Wed Jan 12 23:12:10 2011 +++ src/common/lib/libc/arch/x86_64/atomic/atomic.S Sun Aug 10 06:47:06 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic.S,v 1.16 2011/01/12 23:12:10 joerg Exp $ */ +/* $NetBSD: atomic.S,v 1.16.24.1 2014/08/10 06:47:06 tls Exp $ */ /*- * Copyright (c) 2007 The NetBSD Foundation, Inc. @@ -54,6 +54,7 @@ ENTRY(_atomic_add_32) LOCK(1) addl %esi, (%rdi) ret +END(_atomic_add_32) ENTRY(_atomic_add_32_nv) movl %esi, %eax @@ -61,11 +62,13 @@ ENTRY(_atomic_add_32_nv) xaddl %eax, (%rdi) addl %esi, %eax ret +END(_atomic_add_32_nv) ENTRY(_atomic_and_32) LOCK(3) andl %esi, (%rdi) ret +END(_atomic_and_32) ENTRY(_atomic_and_32_nv) movl (%rdi), %eax @@ -77,11 +80,13 @@ ENTRY(_atomic_and_32_nv) jnz 1b movl %ecx, %eax ret +END(_atomic_and_32_nv) ENTRY(_atomic_dec_32) LOCK(5) decl (%rdi) ret +END(_atomic_dec_32) ENTRY(_atomic_dec_32_nv) movl $-1, %eax @@ -89,11 +94,13 @@ ENTRY(_atomic_dec_32_nv) xaddl %eax, (%rdi) decl %eax ret +END(_atomic_dec_32_nv) ENTRY(_atomic_inc_32) LOCK(7) incl (%rdi) ret +END(_atomic_inc_32) ENTRY(_atomic_inc_32_nv) movl $1, %eax @@ -101,11 +108,13 @@ ENTRY(_atomic_inc_32_nv) xaddl %eax, (%rdi) incl %eax ret +END(_atomic_inc_32_nv) ENTRY(_atomic_or_32) LOCK(9) orl %esi, (%rdi) ret +END(_atomic_or_32) ENTRY(_atomic_or_32_nv) movl (%rdi), %eax @@ -117,11 +126,13 @@ ENTRY(_atomic_or_32_nv) jnz 1b movl %ecx, %eax ret +END(_atomic_or_32_nv) ENTRY(_atomic_swap_32) movl %esi, %eax xchgl %eax, (%rdi) ret +END(_atomic_swap_32) ENTRY(_atomic_cas_32) movl %esi, %eax @@ -129,12 +140,14 @@ ENTRY(_atomic_cas_32) cmpxchgl %edx, (%rdi) /* %eax now contains the old value */ ret +END(_atomic_cas_32) ENTRY(_atomic_cas_32_ni) movl %esi, %eax cmpxchgl %edx, (%rdi) /* %eax now contains the old value */ ret +END(_atomic_cas_32_ni) /* 64-bit */ @@ -142,6 +155,7 @@ ENTRY(_atomic_add_64) LOCK(13) addq %rsi, (%rdi) ret +END(_atomic_add_64) ENTRY(_atomic_add_64_nv) movq %rsi, %rax @@ -149,11 +163,13 @@ ENTRY(_atomic_add_64_nv) xaddq %rax, (%rdi) addq %rsi, %rax ret +END(_atomic_add_64_nv) ENTRY(_atomic_and_64) LOCK(15) andq %rsi, (%rdi) ret +END(_atomic_and_64) ENTRY(_atomic_and_64_nv) movq (%rdi), %rax @@ -165,11 +181,13 @@ ENTRY(_atomic_and_64_nv) jnz 1b movq %rcx, %rax ret +END(_atomic_and_64_nv) ENTRY(_atomic_dec_64) LOCK(17) decq (%rdi) ret +END(_atomic_dec_64) ENTRY(_atomic_dec_64_nv) movq $-1, %rax @@ -177,11 +195,13 @@ ENTRY(_atomic_dec_64_nv) xaddq %rax, (%rdi) decq %rax ret +END(_atomic_dec_64_nv) ENTRY(_atomic_inc_64) LOCK(19) incq (%rdi) ret +END(_atomic_inc_64) ENTRY(_atomic_inc_64_nv) movq $1, %rax @@ -189,11 +209,13 @@ ENTRY(_atomic_inc_64_nv) xaddq %rax, (%rdi) incq %rax ret +END(_atomic_inc_64_nv) ENTRY(_atomic_or_64) LOCK(21) orq %rsi, (%rdi) ret +END(_atomic_or_64) ENTRY(_atomic_or_64_nv) movq (%rdi), %rax @@ -205,11 +227,13 @@ ENTRY(_atomic_or_64_nv) jnz 1b movq %rcx, %rax ret +END(_atomic_or_64_nv) ENTRY(_atomic_swap_64) movq %rsi, %rax xchgq %rax, (%rdi) ret +END(_atomic_swap_64) ENTRY(_atomic_cas_64) movq %rsi, %rax @@ -217,12 +241,14 @@ ENTRY(_atomic_cas_64) cmpxchgq %rdx, (%rdi) /* %eax now contains the old value */ ret +END(_atomic_cas_64) ENTRY(_atomic_cas_64_ni) movq %rsi, %rax cmpxchgq %rdx, (%rdi) /* %eax now contains the old value */ ret +END(_atomic_cas_64_ni) /* memory barriers */ @@ -230,29 +256,34 @@ ENTRY(_membar_consumer) LOCK(25) addq $0, -8(%rsp) ret +END(_membar_consumer) ENDLABEL(membar_consumer_end) ENTRY(_membar_producer) /* A store is enough */ movq $0, -8(%rsp) ret +END(_membar_producer) ENDLABEL(membar_producer_end) ENTRY(_membar_sync) LOCK(26) addq $0, -8(%rsp) ret +END(_membar_sync) ENDLABEL(membar_sync_end) #ifdef _HARDKERNEL ENTRY(sse2_lfence) lfence ret +END(sse2_lfence) ENDLABEL(sse2_lfence_end) ENTRY(sse2_mfence) mfence ret +END(sse2_mfence) ENDLABEL(sse2_mfence_end) atomic_lockpatch: Index: src/common/lib/libc/arch/x86_64/gen/byte_swap_2.S diff -u src/common/lib/libc/arch/x86_64/gen/byte_swap_2.S:1.2 src/common/lib/libc/arch/x86_64/gen/byte_swap_2.S:1.2.70.1 --- src/common/lib/libc/arch/x86_64/gen/byte_swap_2.S:1.2 Sat Feb 4 21:53:31 2006 +++ src/common/lib/libc/arch/x86_64/gen/byte_swap_2.S Sun Aug 10 06:47:06 2014 @@ -1,9 +1,9 @@ -/* $NetBSD: byte_swap_2.S,v 1.2 2006/02/04 21:53:31 uwe Exp $ */ +/* $NetBSD: byte_swap_2.S,v 1.2.70.1 2014/08/10 06:47:06 tls Exp $ */ #include <machine/asm.h> #if defined(LIBC_SCCS) - RCSID("$NetBSD: byte_swap_2.S,v 1.2 2006/02/04 21:53:31 uwe Exp $") + RCSID("$NetBSD: byte_swap_2.S,v 1.2.70.1 2014/08/10 06:47:06 tls Exp $") #endif #if defined(_KERNEL) || defined(_STANDALONE) @@ -17,3 +17,10 @@ _PROF_PROLOGUE movl %edi,%eax xchgb %ah,%al ret +#if defined(_KERNEL) || defined(_STANDALONE) +END(_C_LABEL(bswap16)) +#else +END(_C_LABEL(__bswap16)) +#endif +END(_C_LABEL(ntohs)) +END(_C_LABEL(htons)) Index: src/common/lib/libc/arch/x86_64/gen/byte_swap_4.S diff -u src/common/lib/libc/arch/x86_64/gen/byte_swap_4.S:1.2 src/common/lib/libc/arch/x86_64/gen/byte_swap_4.S:1.2.70.1 --- src/common/lib/libc/arch/x86_64/gen/byte_swap_4.S:1.2 Sat Feb 4 21:53:31 2006 +++ src/common/lib/libc/arch/x86_64/gen/byte_swap_4.S Sun Aug 10 06:47:06 2014 @@ -1,8 +1,8 @@ -/* $NetBSD: byte_swap_4.S,v 1.2 2006/02/04 21:53:31 uwe Exp $ */ +/* $NetBSD: byte_swap_4.S,v 1.2.70.1 2014/08/10 06:47:06 tls Exp $ */ #include <machine/asm.h> #if defined(LIBC_SCCS) - RCSID("$NetBSD: byte_swap_4.S,v 1.2 2006/02/04 21:53:31 uwe Exp $") + RCSID("$NetBSD: byte_swap_4.S,v 1.2.70.1 2014/08/10 06:47:06 tls Exp $") #endif #if defined(_KERNEL) || defined(_STANDALONE) @@ -16,3 +16,10 @@ _PROF_PROLOGUE movl %edi,%eax bswapl %eax ret +#if defined(_KERNEL) || defined(_STANDALONE) +END(_C_LABEL(bswap32)) +#else +END(_C_LABEL(__bswap32)) +#endif +END(_C_LABEL(ntohl)) +END(_C_LABEL(htonl)) Index: src/common/lib/libc/arch/x86_64/gen/byte_swap_8.S diff -u src/common/lib/libc/arch/x86_64/gen/byte_swap_8.S:1.1 src/common/lib/libc/arch/x86_64/gen/byte_swap_8.S:1.1.24.1 --- src/common/lib/libc/arch/x86_64/gen/byte_swap_8.S:1.1 Thu Jan 14 02:09:46 2010 +++ src/common/lib/libc/arch/x86_64/gen/byte_swap_8.S Sun Aug 10 06:47:06 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: byte_swap_8.S,v 1.1 2010/01/14 02:09:46 joerg Exp $ */ +/* $NetBSD: byte_swap_8.S,v 1.1.24.1 2014/08/10 06:47:06 tls Exp $ */ /* * Written by Frank van der Linden (f...@wasabisystems.com) @@ -8,10 +8,11 @@ #include <machine/asm.h> #if defined(LIBC_SCCS) - RCSID("$NetBSD: byte_swap_8.S,v 1.1 2010/01/14 02:09:46 joerg Exp $") + RCSID("$NetBSD: byte_swap_8.S,v 1.1.24.1 2014/08/10 06:47:06 tls Exp $") #endif ENTRY(bswap64) bswapq %rdi movq %rdi,%rax ret +END(bswap64) Index: src/common/lib/libc/arch/x86_64/string/memset.S diff -u src/common/lib/libc/arch/x86_64/string/memset.S:1.3 src/common/lib/libc/arch/x86_64/string/memset.S:1.3.24.1 --- src/common/lib/libc/arch/x86_64/string/memset.S:1.3 Sat Aug 1 20:35:45 2009 +++ src/common/lib/libc/arch/x86_64/string/memset.S Sun Aug 10 06:47:06 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: memset.S,v 1.3 2009/08/01 20:35:45 dsl Exp $ */ +/* $NetBSD: memset.S,v 1.3.24.1 2014/08/10 06:47:06 tls Exp $ */ /*- * Copyright (c) 2009 The NetBSD Foundation, Inc. @@ -32,7 +32,7 @@ #include <machine/asm.h> #if defined(LIBC_SCCS) - RCSID("$NetBSD: memset.S,v 1.3 2009/08/01 20:35:45 dsl Exp $") + RCSID("$NetBSD: memset.S,v 1.3.24.1 2014/08/10 06:47:06 tls Exp $") #endif #ifndef _KERNEL @@ -89,3 +89,8 @@ ENTRY(memset) sub %rdx,%rcx /* adjust length ... */ add %rdx,%rdi /* ... and target */ jmp 2b +END(memset) + +#ifndef _KERNEL +END(bzero) +#endif Index: src/common/lib/libc/atomic/atomic_add_16_cas.c diff -u src/common/lib/libc/atomic/atomic_add_16_cas.c:1.2 src/common/lib/libc/atomic/atomic_add_16_cas.c:1.2.2.1 --- src/common/lib/libc/atomic/atomic_add_16_cas.c:1.2 Fri Feb 21 15:51:07 2014 +++ src/common/lib/libc/atomic/atomic_add_16_cas.c Sun Aug 10 06:47:06 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_add_16_cas.c,v 1.2 2014/02/21 15:51:07 martin Exp $ */ +/* $NetBSD: atomic_add_16_cas.c,v 1.2.2.1 2014/08/10 06:47:06 tls Exp $ */ /*- * Copyright (c) 2007 The NetBSD Foundation, Inc. @@ -61,3 +61,5 @@ add_and_fetch_2(volatile uint16_t *addr, } while (atomic_cas_16(addr, old, new) != old); return new; } + +__strong_alias(__atomic_fetch_add_2,__sync_fetch_and_add_2) Index: src/common/lib/libc/atomic/atomic_add_8_cas.c diff -u src/common/lib/libc/atomic/atomic_add_8_cas.c:1.2 src/common/lib/libc/atomic/atomic_add_8_cas.c:1.2.2.1 --- src/common/lib/libc/atomic/atomic_add_8_cas.c:1.2 Fri Feb 21 15:51:07 2014 +++ src/common/lib/libc/atomic/atomic_add_8_cas.c Sun Aug 10 06:47:06 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_add_8_cas.c,v 1.2 2014/02/21 15:51:07 martin Exp $ */ +/* $NetBSD: atomic_add_8_cas.c,v 1.2.2.1 2014/08/10 06:47:06 tls Exp $ */ /*- * Copyright (c) 2007 The NetBSD Foundation, Inc. @@ -61,3 +61,5 @@ add_and_fetch_1(volatile uint8_t *addr, } while (atomic_cas_8(addr, old, new) != old); return new; } + +__strong_alias(__atomic_fetch_add_1,__sync_fetch_and_add_1) Index: src/common/lib/libc/atomic/atomic_and_16_cas.c diff -u src/common/lib/libc/atomic/atomic_and_16_cas.c:1.2 src/common/lib/libc/atomic/atomic_and_16_cas.c:1.2.2.1 --- src/common/lib/libc/atomic/atomic_and_16_cas.c:1.2 Fri Feb 21 15:51:07 2014 +++ src/common/lib/libc/atomic/atomic_and_16_cas.c Sun Aug 10 06:47:06 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_and_16_cas.c,v 1.2 2014/02/21 15:51:07 martin Exp $ */ +/* $NetBSD: atomic_and_16_cas.c,v 1.2.2.1 2014/08/10 06:47:06 tls Exp $ */ /*- * Copyright (c) 2007 The NetBSD Foundation, Inc. @@ -47,3 +47,5 @@ fetch_and_and_2(volatile uint16_t *addr, } while (atomic_cas_16(addr, old, new) != old); return old; } + +__strong_alias(__atomic_fetch_and_2,__sync_fetch_and_and_2) Index: src/common/lib/libc/atomic/atomic_and_8_cas.c diff -u src/common/lib/libc/atomic/atomic_and_8_cas.c:1.2 src/common/lib/libc/atomic/atomic_and_8_cas.c:1.2.2.1 --- src/common/lib/libc/atomic/atomic_and_8_cas.c:1.2 Fri Feb 21 15:51:07 2014 +++ src/common/lib/libc/atomic/atomic_and_8_cas.c Sun Aug 10 06:47:06 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_and_8_cas.c,v 1.2 2014/02/21 15:51:07 martin Exp $ */ +/* $NetBSD: atomic_and_8_cas.c,v 1.2.2.1 2014/08/10 06:47:06 tls Exp $ */ /*- * Copyright (c) 2007 The NetBSD Foundation, Inc. @@ -47,3 +47,5 @@ fetch_and_and_1(volatile uint8_t *addr, } while (atomic_cas_8(addr, old, new) != old); return old; } + +__strong_alias(__atomic_fetch_and_1,__sync_fetch_and_and_1) Index: src/common/lib/libc/atomic/atomic_or_16_cas.c diff -u src/common/lib/libc/atomic/atomic_or_16_cas.c:1.2 src/common/lib/libc/atomic/atomic_or_16_cas.c:1.2.2.1 --- src/common/lib/libc/atomic/atomic_or_16_cas.c:1.2 Fri Feb 21 15:51:07 2014 +++ src/common/lib/libc/atomic/atomic_or_16_cas.c Sun Aug 10 06:47:06 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_or_16_cas.c,v 1.2 2014/02/21 15:51:07 martin Exp $ */ +/* $NetBSD: atomic_or_16_cas.c,v 1.2.2.1 2014/08/10 06:47:06 tls Exp $ */ /*- * Copyright (c) 2007 The NetBSD Foundation, Inc. @@ -62,3 +62,4 @@ or_and_fetch_2(volatile uint16_t *addr, return old; } +__strong_alias(__atomic_fetch_or_2,__sync_fetch_and_or_2) Index: src/common/lib/libc/atomic/atomic_or_8_cas.c diff -u src/common/lib/libc/atomic/atomic_or_8_cas.c:1.2 src/common/lib/libc/atomic/atomic_or_8_cas.c:1.2.2.1 --- src/common/lib/libc/atomic/atomic_or_8_cas.c:1.2 Fri Feb 21 15:51:07 2014 +++ src/common/lib/libc/atomic/atomic_or_8_cas.c Sun Aug 10 06:47:06 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_or_8_cas.c,v 1.2 2014/02/21 15:51:07 martin Exp $ */ +/* $NetBSD: atomic_or_8_cas.c,v 1.2.2.1 2014/08/10 06:47:06 tls Exp $ */ /*- * Copyright (c) 2007 The NetBSD Foundation, Inc. @@ -62,3 +62,4 @@ or_and_fetch_1(volatile uint8_t *addr, u return old; } +__strong_alias(__atomic_fetch_or_1,__sync_fetch_and_or_1) Index: src/common/lib/libc/atomic/atomic_sub_16_cas.c diff -u src/common/lib/libc/atomic/atomic_sub_16_cas.c:1.2 src/common/lib/libc/atomic/atomic_sub_16_cas.c:1.2.2.1 --- src/common/lib/libc/atomic/atomic_sub_16_cas.c:1.2 Fri Feb 21 16:06:48 2014 +++ src/common/lib/libc/atomic/atomic_sub_16_cas.c Sun Aug 10 06:47:06 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_sub_16_cas.c,v 1.2 2014/02/21 16:06:48 martin Exp $ */ +/* $NetBSD: atomic_sub_16_cas.c,v 1.2.2.1 2014/08/10 06:47:06 tls Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -61,3 +61,5 @@ sub_and_fetch_2(volatile uint16_t *addr, } while (atomic_cas_16(addr, old, new) != old); return new; } + +__strong_alias(__atomic_fetch_sub_2,__sync_fetch_and_sub_2) Index: src/common/lib/libc/atomic/atomic_sub_64_cas.c diff -u src/common/lib/libc/atomic/atomic_sub_64_cas.c:1.2 src/common/lib/libc/atomic/atomic_sub_64_cas.c:1.2.2.1 --- src/common/lib/libc/atomic/atomic_sub_64_cas.c:1.2 Tue Feb 18 13:21:04 2014 +++ src/common/lib/libc/atomic/atomic_sub_64_cas.c Sun Aug 10 06:47:06 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_sub_64_cas.c,v 1.2 2014/02/18 13:21:04 martin Exp $ */ +/* $NetBSD: atomic_sub_64_cas.c,v 1.2.2.1 2014/08/10 06:47:06 tls Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -62,4 +62,6 @@ sub_and_fetch_8(volatile uint64_t *addr, return new; } +__strong_alias(__atomic_fetch_sub_8,__sync_fetch_and_sub_8) + #endif Index: src/common/lib/libc/atomic/atomic_sub_8_cas.c diff -u src/common/lib/libc/atomic/atomic_sub_8_cas.c:1.2 src/common/lib/libc/atomic/atomic_sub_8_cas.c:1.2.2.1 --- src/common/lib/libc/atomic/atomic_sub_8_cas.c:1.2 Fri Feb 21 16:06:48 2014 +++ src/common/lib/libc/atomic/atomic_sub_8_cas.c Sun Aug 10 06:47:06 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_sub_8_cas.c,v 1.2 2014/02/21 16:06:48 martin Exp $ */ +/* $NetBSD: atomic_sub_8_cas.c,v 1.2.2.1 2014/08/10 06:47:06 tls Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -61,3 +61,5 @@ sub_and_fetch_1(volatile uint8_t *addr, } while (atomic_cas_8(addr, old, new) != old); return new; } + +__strong_alias(__atomic_fetch_sub_1,__sync_fetch_and_sub_1) Index: src/common/lib/libc/atomic/atomic_swap_16_cas.c diff -u src/common/lib/libc/atomic/atomic_swap_16_cas.c:1.2 src/common/lib/libc/atomic/atomic_swap_16_cas.c:1.2.2.1 --- src/common/lib/libc/atomic/atomic_swap_16_cas.c:1.2 Fri Feb 21 15:51:07 2014 +++ src/common/lib/libc/atomic/atomic_swap_16_cas.c Sun Aug 10 06:47:06 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_swap_16_cas.c,v 1.2 2014/02/21 15:51:07 martin Exp $ */ +/* $NetBSD: atomic_swap_16_cas.c,v 1.2.2.1 2014/08/10 06:47:06 tls Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -48,3 +48,5 @@ atomic_swap_16(volatile uint16_t *addr, return old; } + +crt_alias(__atomic_exchange_2,__sync_lock_test_and_set_2) Index: src/common/lib/libc/atomic/atomic_swap_8_cas.c diff -u src/common/lib/libc/atomic/atomic_swap_8_cas.c:1.2 src/common/lib/libc/atomic/atomic_swap_8_cas.c:1.2.2.1 --- src/common/lib/libc/atomic/atomic_swap_8_cas.c:1.2 Fri Feb 21 15:51:07 2014 +++ src/common/lib/libc/atomic/atomic_swap_8_cas.c Sun Aug 10 06:47:06 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_swap_8_cas.c,v 1.2 2014/02/21 15:51:07 martin Exp $ */ +/* $NetBSD: atomic_swap_8_cas.c,v 1.2.2.1 2014/08/10 06:47:06 tls Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -48,3 +48,5 @@ atomic_swap_8(volatile uint8_t *addr, ui return old; } + +crt_alias(__atomic_exchange_1,__sync_lock_test_and_set_1) Index: src/common/lib/libc/atomic/atomic_xor_16_cas.c diff -u src/common/lib/libc/atomic/atomic_xor_16_cas.c:1.2 src/common/lib/libc/atomic/atomic_xor_16_cas.c:1.2.2.1 --- src/common/lib/libc/atomic/atomic_xor_16_cas.c:1.2 Fri Feb 21 16:06:48 2014 +++ src/common/lib/libc/atomic/atomic_xor_16_cas.c Sun Aug 10 06:47:06 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_xor_16_cas.c,v 1.2 2014/02/21 16:06:48 martin Exp $ */ +/* $NetBSD: atomic_xor_16_cas.c,v 1.2.2.1 2014/08/10 06:47:06 tls Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -61,3 +61,5 @@ xor_and_fetch_2(volatile uint16_t *addr, } while (atomic_cas_16(addr, old, new) != old); return new; } + +__strong_alias(__atomic_fetch_xor_2,__sync_fetch_and_xor_2) Index: src/common/lib/libc/atomic/atomic_xor_64_cas.c diff -u src/common/lib/libc/atomic/atomic_xor_64_cas.c:1.2 src/common/lib/libc/atomic/atomic_xor_64_cas.c:1.2.2.1 --- src/common/lib/libc/atomic/atomic_xor_64_cas.c:1.2 Tue Feb 18 13:21:04 2014 +++ src/common/lib/libc/atomic/atomic_xor_64_cas.c Sun Aug 10 06:47:06 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_xor_64_cas.c,v 1.2 2014/02/18 13:21:04 martin Exp $ */ +/* $NetBSD: atomic_xor_64_cas.c,v 1.2.2.1 2014/08/10 06:47:06 tls Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -62,4 +62,6 @@ xor_and_fetch_8(volatile uint64_t *addr, return new; } +__strong_alias(__atomic_fetch_xor_8,__sync_fetch_and_xor_8) + #endif Index: src/common/lib/libc/atomic/atomic_xor_8_cas.c diff -u src/common/lib/libc/atomic/atomic_xor_8_cas.c:1.2 src/common/lib/libc/atomic/atomic_xor_8_cas.c:1.2.2.1 --- src/common/lib/libc/atomic/atomic_xor_8_cas.c:1.2 Fri Feb 21 16:06:48 2014 +++ src/common/lib/libc/atomic/atomic_xor_8_cas.c Sun Aug 10 06:47:06 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_xor_8_cas.c,v 1.2 2014/02/21 16:06:48 martin Exp $ */ +/* $NetBSD: atomic_xor_8_cas.c,v 1.2.2.1 2014/08/10 06:47:06 tls Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -61,3 +61,5 @@ xor_and_fetch_1(volatile uint8_t *addr, } while (atomic_cas_8(addr, old, new) != old); return new; } + +__strong_alias(__atomic_fetch_xor_1,__sync_fetch_and_xor_1) Index: src/common/lib/libc/atomic/atomic_add_32_cas.c diff -u src/common/lib/libc/atomic/atomic_add_32_cas.c:1.8 src/common/lib/libc/atomic/atomic_add_32_cas.c:1.8.2.1 --- src/common/lib/libc/atomic/atomic_add_32_cas.c:1.8 Sat Feb 22 17:08:30 2014 +++ src/common/lib/libc/atomic/atomic_add_32_cas.c Sun Aug 10 06:47:06 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_add_32_cas.c,v 1.8 2014/02/22 17:08:30 martin Exp $ */ +/* $NetBSD: atomic_add_32_cas.c,v 1.8.2.1 2014/08/10 06:47:06 tls Exp $ */ /*- * Copyright (c) 2007 The NetBSD Foundation, Inc. @@ -74,3 +74,5 @@ __strong_alias(_atomic_add_long,_atomic_ atomic_op_alias(atomic_add_ptr,_atomic_add_32) __strong_alias(_atomic_add_ptr,_atomic_add_32) #endif /* _LP64 */ + +__strong_alias(__atomic_fetch_add_4,__sync_fetch_and_add_4) Index: src/common/lib/libc/atomic/atomic_add_64_cas.c diff -u src/common/lib/libc/atomic/atomic_add_64_cas.c:1.8 src/common/lib/libc/atomic/atomic_add_64_cas.c:1.8.2.1 --- src/common/lib/libc/atomic/atomic_add_64_cas.c:1.8 Tue Jan 28 21:47:48 2014 +++ src/common/lib/libc/atomic/atomic_add_64_cas.c Sun Aug 10 06:47:06 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_add_64_cas.c,v 1.8 2014/01/28 21:47:48 joerg Exp $ */ +/* $NetBSD: atomic_add_64_cas.c,v 1.8.2.1 2014/08/10 06:47:06 tls Exp $ */ /*- * Copyright (c) 2007 The NetBSD Foundation, Inc. @@ -56,6 +56,8 @@ atomic_add_64(volatile uint64_t *addr, i (void) fetch_and_add_8(addr, val); } +__strong_alias(__atomic_fetch_add_8,__sync_fetch_and_add_8) + #undef atomic_add_64 atomic_op_alias(atomic_add_64,_atomic_add_64) Index: src/common/lib/libc/atomic/atomic_swap_64_cas.c diff -u src/common/lib/libc/atomic/atomic_swap_64_cas.c:1.8 src/common/lib/libc/atomic/atomic_swap_64_cas.c:1.8.2.1 --- src/common/lib/libc/atomic/atomic_swap_64_cas.c:1.8 Sat Feb 22 17:08:30 2014 +++ src/common/lib/libc/atomic/atomic_swap_64_cas.c Sun Aug 10 06:47:06 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_swap_64_cas.c,v 1.8 2014/02/22 17:08:30 martin Exp $ */ +/* $NetBSD: atomic_swap_64_cas.c,v 1.8.2.1 2014/08/10 06:47:06 tls Exp $ */ /*- * Copyright (c) 2007 The NetBSD Foundation, Inc. @@ -47,6 +47,8 @@ atomic_swap_64(volatile uint64_t *addr, return (old); } +crt_alias(__atomic_exchange_8,_atomic_swap_8) + #undef atomic_swap_64 atomic_op_alias(atomic_swap_64,_atomic_swap_64) crt_alias(__sync_lock_test_and_set_8,_atomic_swap_64) Index: src/common/lib/libc/atomic/atomic_and_32_cas.c diff -u src/common/lib/libc/atomic/atomic_and_32_cas.c:1.9 src/common/lib/libc/atomic/atomic_and_32_cas.c:1.9.2.1 --- src/common/lib/libc/atomic/atomic_and_32_cas.c:1.9 Sat Feb 22 17:08:30 2014 +++ src/common/lib/libc/atomic/atomic_and_32_cas.c Sun Aug 10 06:47:06 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_and_32_cas.c,v 1.9 2014/02/22 17:08:30 martin Exp $ */ +/* $NetBSD: atomic_and_32_cas.c,v 1.9.2.1 2014/08/10 06:47:06 tls Exp $ */ /*- * Copyright (c) 2007 The NetBSD Foundation, Inc. @@ -58,6 +58,8 @@ atomic_and_32(volatile uint32_t *addr, u (void) fetch_and_and_4(addr, val); } +__strong_alias(__atomic_fetch_and_4,__sync_fetch_and_and_4) + #undef atomic_and_32 atomic_op_alias(atomic_and_32,_atomic_and_32) Index: src/common/lib/libc/atomic/atomic_and_64_cas.c diff -u src/common/lib/libc/atomic/atomic_and_64_cas.c:1.9 src/common/lib/libc/atomic/atomic_and_64_cas.c:1.9.2.1 --- src/common/lib/libc/atomic/atomic_and_64_cas.c:1.9 Tue Jan 28 21:47:48 2014 +++ src/common/lib/libc/atomic/atomic_and_64_cas.c Sun Aug 10 06:47:06 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_and_64_cas.c,v 1.9 2014/01/28 21:47:48 joerg Exp $ */ +/* $NetBSD: atomic_and_64_cas.c,v 1.9.2.1 2014/08/10 06:47:06 tls Exp $ */ /*- * Copyright (c) 2007 The NetBSD Foundation, Inc. @@ -56,6 +56,8 @@ atomic_and_64(volatile uint64_t *addr, u (void) fetch_and_and_8(addr, val); } +__strong_alias(__atomic_fetch_and_8,__sync_fetch_and_and_8) + #undef atomic_and_64 atomic_op_alias(atomic_and_64,_atomic_and_64) Index: src/common/lib/libc/atomic/atomic_or_32_cas.c diff -u src/common/lib/libc/atomic/atomic_or_32_cas.c:1.9 src/common/lib/libc/atomic/atomic_or_32_cas.c:1.9.2.1 --- src/common/lib/libc/atomic/atomic_or_32_cas.c:1.9 Sat Feb 22 17:08:30 2014 +++ src/common/lib/libc/atomic/atomic_or_32_cas.c Sun Aug 10 06:47:06 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_or_32_cas.c,v 1.9 2014/02/22 17:08:30 martin Exp $ */ +/* $NetBSD: atomic_or_32_cas.c,v 1.9.2.1 2014/08/10 06:47:06 tls Exp $ */ /*- * Copyright (c) 2007 The NetBSD Foundation, Inc. @@ -58,6 +58,8 @@ atomic_or_32(volatile uint32_t *addr, ui (void) fetch_and_or_4(addr, val); } +__strong_alias(__atomic_fetch_or_4,__sync_fetch_and_or_4) + #undef atomic_or_32 atomic_op_alias(atomic_or_32,_atomic_or_32) Index: src/common/lib/libc/atomic/atomic_or_64_cas.c diff -u src/common/lib/libc/atomic/atomic_or_64_cas.c:1.9 src/common/lib/libc/atomic/atomic_or_64_cas.c:1.9.2.1 --- src/common/lib/libc/atomic/atomic_or_64_cas.c:1.9 Tue Jan 28 21:47:48 2014 +++ src/common/lib/libc/atomic/atomic_or_64_cas.c Sun Aug 10 06:47:06 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_or_64_cas.c,v 1.9 2014/01/28 21:47:48 joerg Exp $ */ +/* $NetBSD: atomic_or_64_cas.c,v 1.9.2.1 2014/08/10 06:47:06 tls Exp $ */ /*- * Copyright (c) 2007 The NetBSD Foundation, Inc. @@ -56,6 +56,8 @@ atomic_or_64(volatile uint64_t *addr, ui (void) fetch_and_or_8(addr, val); } +__strong_alias(__atomic_fetch_or_8,__sync_fetch_and_or_8) + #undef atomic_or_64 atomic_op_alias(atomic_or_64,_atomic_or_64) Index: src/common/lib/libc/atomic/atomic_sub_32_cas.c diff -u src/common/lib/libc/atomic/atomic_sub_32_cas.c:1.1 src/common/lib/libc/atomic/atomic_sub_32_cas.c:1.1.2.1 --- src/common/lib/libc/atomic/atomic_sub_32_cas.c:1.1 Fri Feb 21 10:52:50 2014 +++ src/common/lib/libc/atomic/atomic_sub_32_cas.c Sun Aug 10 06:47:06 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_sub_32_cas.c,v 1.1 2014/02/21 10:52:50 martin Exp $ */ +/* $NetBSD: atomic_sub_32_cas.c,v 1.1.2.1 2014/08/10 06:47:06 tls Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -59,3 +59,5 @@ sub_and_fetch_4(volatile uint32_t *addr, } while (atomic_cas_32(addr, old, new) != old); return new; } + +__strong_alias(__atomic_fetch_sub_4,__sync_fetch_and_sub_4) Index: src/common/lib/libc/atomic/atomic_xor_32_cas.c diff -u src/common/lib/libc/atomic/atomic_xor_32_cas.c:1.1 src/common/lib/libc/atomic/atomic_xor_32_cas.c:1.1.2.1 --- src/common/lib/libc/atomic/atomic_xor_32_cas.c:1.1 Fri Feb 21 10:52:50 2014 +++ src/common/lib/libc/atomic/atomic_xor_32_cas.c Sun Aug 10 06:47:06 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_xor_32_cas.c,v 1.1 2014/02/21 10:52:50 martin Exp $ */ +/* $NetBSD: atomic_xor_32_cas.c,v 1.1.2.1 2014/08/10 06:47:06 tls Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -59,3 +59,5 @@ xor_and_fetch_4(volatile uint32_t *addr, } while (atomic_cas_32(addr, old, new) != old); return new; } + +__strong_alias(__atomic_fetch_xor_4,__sync_fetch_and_xor_4) Index: src/common/lib/libc/atomic/atomic_swap_32_cas.c diff -u src/common/lib/libc/atomic/atomic_swap_32_cas.c:1.6 src/common/lib/libc/atomic/atomic_swap_32_cas.c:1.6.2.1 --- src/common/lib/libc/atomic/atomic_swap_32_cas.c:1.6 Sat Feb 22 17:08:30 2014 +++ src/common/lib/libc/atomic/atomic_swap_32_cas.c Sun Aug 10 06:47:06 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_swap_32_cas.c,v 1.6 2014/02/22 17:08:30 martin Exp $ */ +/* $NetBSD: atomic_swap_32_cas.c,v 1.6.2.1 2014/08/10 06:47:06 tls Exp $ */ /*- * Copyright (c) 2007 The NetBSD Foundation, Inc. @@ -45,6 +45,8 @@ atomic_swap_32(volatile uint32_t *addr, return (old); } +crt_alias(__atomic_exchange_4,_atomic_swap_32) + #undef atomic_swap_32 atomic_op_alias(atomic_swap_32,_atomic_swap_32) #undef atomic_swap_uint Index: src/common/lib/libc/stdlib/random.c diff -u src/common/lib/libc/stdlib/random.c:1.3 src/common/lib/libc/stdlib/random.c:1.3.70.1 --- src/common/lib/libc/stdlib/random.c:1.3 Wed Dec 21 14:23:58 2005 +++ src/common/lib/libc/stdlib/random.c Sun Aug 10 06:47:06 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: random.c,v 1.3 2005/12/21 14:23:58 christos Exp $ */ +/* $NetBSD: random.c,v 1.3.70.1 2014/08/10 06:47:06 tls Exp $ */ /* * Copyright (c) 1983, 1993 @@ -35,7 +35,7 @@ #if 0 static char sccsid[] = "@(#)random.c 8.2 (Berkeley) 5/19/95"; #else -__RCSID("$NetBSD: random.c,v 1.3 2005/12/21 14:23:58 christos Exp $"); +__RCSID("$NetBSD: random.c,v 1.3.70.1 2014/08/10 06:47:06 tls Exp $"); #endif #endif /* LIBC_SCCS and not lint */ @@ -302,11 +302,11 @@ srandom_unlocked(unsigned int x) } void -srandom(unsigned long x) +srandom(unsigned int x) { mutex_lock(&random_mutex); - srandom_unlocked((unsigned int) x); + srandom_unlocked(x); mutex_unlock(&random_mutex); } @@ -335,7 +335,7 @@ srandom(unsigned long x) */ char * initstate( - unsigned long seed, /* seed for R.N.G. */ + unsigned int seed, /* seed for R.N.G. */ char *arg_state, /* pointer to state array */ size_t n) /* # bytes of state info */ { @@ -377,7 +377,7 @@ initstate( } state = (int *) (int_arg_state + 1); /* first location */ end_ptr = &state[rand_deg]; /* must set end_ptr before srandom */ - srandom_unlocked((unsigned int) seed); + srandom_unlocked(seed); if (rand_type == TYPE_0) int_arg_state[0] = rand_type; else Index: src/common/lib/libc/string/bcopy.c diff -u src/common/lib/libc/string/bcopy.c:1.9 src/common/lib/libc/string/bcopy.c:1.9.24.1 --- src/common/lib/libc/string/bcopy.c:1.9 Wed Mar 18 12:25:06 2009 +++ src/common/lib/libc/string/bcopy.c Sun Aug 10 06:47:06 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: bcopy.c,v 1.9 2009/03/18 12:25:06 tsutsui Exp $ */ +/* $NetBSD: bcopy.c,v 1.9.24.1 2014/08/10 06:47:06 tls Exp $ */ /*- * Copyright (c) 1990, 1993 @@ -37,7 +37,7 @@ #if 0 static char sccsid[] = "@(#)bcopy.c 8.1 (Berkeley) 6/4/93"; #else -__RCSID("$NetBSD: bcopy.c,v 1.9 2009/03/18 12:25:06 tsutsui Exp $"); +__RCSID("$NetBSD: bcopy.c,v 1.9.24.1 2014/08/10 06:47:06 tls Exp $"); #endif #endif /* LIBC_SCCS and not lint */ @@ -51,7 +51,7 @@ __RCSID("$NetBSD: bcopy.c,v 1.9 2009/03/ #endif #endif -#ifdef _FORTIFY_SOURCE +#if defined(_FORTIFY_SOURCE) || defined(_STANDALONE) || defined(_KERNEL) #undef bcopy #undef memcpy #undef memmove @@ -89,8 +89,7 @@ bcopy(const void *src0, void *dst0, size unsigned long u; #if !defined(_KERNEL) - _DIAGASSERT(dst0 != 0); - _DIAGASSERT(src0 != 0); + _DIAGASSERT((dst0 && src0) || length == 0); #endif if (length == 0 || dst == src) /* nothing to do */ Index: src/common/lib/libc/string/consttime_memequal.c diff -u src/common/lib/libc/string/consttime_memequal.c:1.4 src/common/lib/libc/string/consttime_memequal.c:1.4.2.1 --- src/common/lib/libc/string/consttime_memequal.c:1.4 Wed Aug 28 19:31:14 2013 +++ src/common/lib/libc/string/consttime_memequal.c Sun Aug 10 06:47:06 2014 @@ -1,4 +1,9 @@ -/* $NetBSD: consttime_memequal.c,v 1.4 2013/08/28 19:31:14 riastradh Exp $ */ +/* $NetBSD: consttime_memequal.c,v 1.4.2.1 2014/08/10 06:47:06 tls Exp $ */ + +/* + * Written by Matthias Drochner <droch...@netbsd.org>. + * Public domain. + */ #if !defined(_KERNEL) && !defined(_STANDALONE) #include "namespace.h" Index: src/common/lib/libc/string/explicit_memset.c diff -u src/common/lib/libc/string/explicit_memset.c:1.3 src/common/lib/libc/string/explicit_memset.c:1.3.2.1 --- src/common/lib/libc/string/explicit_memset.c:1.3 Wed Aug 28 17:47:07 2013 +++ src/common/lib/libc/string/explicit_memset.c Sun Aug 10 06:47:06 2014 @@ -1,4 +1,9 @@ -/* $NetBSD: explicit_memset.c,v 1.3 2013/08/28 17:47:07 riastradh Exp $ */ +/* $NetBSD: explicit_memset.c,v 1.3.2.1 2014/08/10 06:47:06 tls Exp $ */ + +/* + * Written by Matthias Drochner <droch...@netbsd.org>. + * Public domain. + */ #if !defined(_KERNEL) && !defined(_STANDALONE) #include "namespace.h" Index: src/common/lib/libutil/snprintb.c diff -u src/common/lib/libutil/snprintb.c:1.14 src/common/lib/libutil/snprintb.c:1.14.2.1 --- src/common/lib/libutil/snprintb.c:1.14 Thu Aug 8 22:18:20 2013 +++ src/common/lib/libutil/snprintb.c Sun Aug 10 06:47:06 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: snprintb.c,v 1.14 2013/08/08 22:18:20 pgoyette Exp $ */ +/* $NetBSD: snprintb.c,v 1.14.2.1 2014/08/10 06:47:06 tls Exp $ */ /*- * Copyright (c) 2002 The NetBSD Foundation, Inc. @@ -41,7 +41,7 @@ # include <sys/cdefs.h> # if defined(LIBC_SCCS) && !defined(lint) -__RCSID("$NetBSD: snprintb.c,v 1.14 2013/08/08 22:18:20 pgoyette Exp $"); +__RCSID("$NetBSD: snprintb.c,v 1.14.2.1 2014/08/10 06:47:06 tls Exp $"); # endif # include <sys/types.h> @@ -51,7 +51,7 @@ __RCSID("$NetBSD: snprintb.c,v 1.14 2013 # include <errno.h> # else /* ! _KERNEL */ # include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: snprintb.c,v 1.14 2013/08/08 22:18:20 pgoyette Exp $"); +__KERNEL_RCSID(0, "$NetBSD: snprintb.c,v 1.14.2.1 2014/08/10 06:47:06 tls Exp $"); # include <sys/param.h> # include <sys/inttypes.h> # include <sys/systm.h> @@ -257,7 +257,7 @@ snprintb_m(char *buf, size_t buflen, con } } l_len++; - if ((size_t)(++t_len) < buflen) + if (sep != '<' && (size_t)(++t_len) < buflen) *bp++ = '>'; terminate: *bp++ = '\0'; Index: src/common/lib/libx86emu/x86emu.c diff -u src/common/lib/libx86emu/x86emu.c:1.7 src/common/lib/libx86emu/x86emu.c:1.7.26.1 --- src/common/lib/libx86emu/x86emu.c:1.7 Tue Feb 3 19:26:29 2009 +++ src/common/lib/libx86emu/x86emu.c Sun Aug 10 06:47:06 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: x86emu.c,v 1.7 2009/02/03 19:26:29 joerg Exp $ */ +/* $NetBSD: x86emu.c,v 1.7.26.1 2014/08/10 06:47:06 tls Exp $ */ /**************************************************************************** * @@ -2091,21 +2091,24 @@ Handles opcode 0x8d static void x86emuOp_lea_word_R_M(struct X86EMU *emu) { - uint16_t *srcreg; uint32_t destoffset; -/* - * TODO: Need to handle address size prefix! - * - * lea eax,[eax+ebx*2] ?? - */ fetch_decode_modrm(emu); if (emu->cur_mod == 3) X86EMU_halt_sys(emu); - srcreg = decode_rh_word_register(emu); destoffset = decode_rl_address(emu); - *srcreg = (uint16_t) destoffset; + if (emu->x86.mode & SYSMODE_PREFIX_ADDR) { + uint32_t *srcreg; + + srcreg = decode_rh_long_register(emu); + *srcreg = (uint32_t) destoffset; + } else { + uint16_t *srcreg; + + srcreg = decode_rh_word_register(emu); + *srcreg = (uint16_t) destoffset; + } } /**************************************************************************** REMARKS: @@ -3601,12 +3604,19 @@ Handles opcode 0xe8 static void x86emuOp_call_near_IMM(struct X86EMU *emu) { - int16_t ip; - - ip = (int16_t) fetch_word_imm(emu); - ip += (int16_t) emu->x86.R_IP; /* CHECK SIGN */ - push_word(emu, emu->x86.R_IP); - emu->x86.R_IP = ip; + if (emu->x86.mode & SYSMODE_PREFIX_DATA) { + int32_t ip; + ip = (int32_t) fetch_long_imm(emu); + ip += (int32_t) emu->x86.R_EIP; + push_long(emu, emu->x86.R_EIP); + emu->x86.R_EIP = ip; + } else { + int16_t ip; + ip = (int16_t) fetch_word_imm(emu); + ip += (int16_t) emu->x86.R_IP; /* CHECK SIGN */ + push_word(emu, emu->x86.R_IP); + emu->x86.R_IP = ip; + } } /**************************************************************************** REMARKS: @@ -5419,6 +5429,7 @@ x86emuOp2_32_movsx_byte_R_RM(struct X86E { uint32_t *destreg; + fetch_decode_modrm(emu); destreg = decode_rh_long_register(emu); *destreg = (int32_t)(int8_t)decode_and_fetch_byte(emu); } Added files: Index: src/common/lib/libc/atomic/atomic_load.c diff -u /dev/null src/common/lib/libc/atomic/atomic_load.c:1.2.2.2 --- /dev/null Sun Aug 10 06:47:06 2014 +++ src/common/lib/libc/atomic/atomic_load.c Sun Aug 10 06:47:06 2014 @@ -0,0 +1,54 @@ +/* $NetBSD: atomic_load.c,v 1.2.2.2 2014/08/10 06:47:06 tls Exp $ */ + +/*- + * Copyright (c) 2014 The NetBSD Foundation, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include <sys/cdefs.h> +__RCSID("$NetBSD: atomic_load.c,v 1.2.2.2 2014/08/10 06:47:06 tls Exp $"); + +#include "atomic_op_namespace.h" + +#include <sys/types.h> +#include <sys/atomic.h> + +#define atomic_load_n(n,b) \ +uint ## b ## _t __atomic_load_ ## n(volatile uint ## b ## _t *, int); \ +uint ## b ## _t \ +__atomic_load_ ## n(volatile uint ## b ## _t *ptr, int memmodel) \ +{ \ + uint## b ##_t val; \ + membar_enter(); \ + val = *ptr; \ + membar_exit(); \ + return val; \ +} + +atomic_load_n(1, 8) +atomic_load_n(2, 16) +atomic_load_n(4, 32) +#ifdef __HAVE_ATOMIC_CAS_64_UP +atomic_load_n(8, 64) +#endif Index: src/common/lib/libc/atomic/atomic_store.c diff -u /dev/null src/common/lib/libc/atomic/atomic_store.c:1.2.2.2 --- /dev/null Sun Aug 10 06:47:06 2014 +++ src/common/lib/libc/atomic/atomic_store.c Sun Aug 10 06:47:06 2014 @@ -0,0 +1,53 @@ +/* $NetBSD: atomic_store.c,v 1.2.2.2 2014/08/10 06:47:06 tls Exp $ */ + +/*- + * Copyright (c) 2014 The NetBSD Foundation, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include <sys/cdefs.h> +__RCSID("$NetBSD: atomic_store.c,v 1.2.2.2 2014/08/10 06:47:06 tls Exp $"); + +#include "atomic_op_namespace.h" + +#include <sys/types.h> +#include <sys/atomic.h> + +#define atomic_store_n(n,b) \ +void __atomic_store_ ## n(volatile uint ## b ## _t *, uint ## b ## _t, int); \ +void \ +__atomic_store_ ## n(volatile uint ## b ## _t *ptr, uint ## b ## _t val, \ + int memmodel) \ +{ \ + membar_enter(); \ + *ptr = val; \ + membar_exit(); \ +} + +atomic_store_n(1, 8) +atomic_store_n(2, 16) +atomic_store_n(4, 32) +#ifdef __HAVE_ATOMIC_CAS_64_UP +atomic_store_n(8, 64) +#endif Index: src/common/lib/libc/string/strcspn.c diff -u /dev/null src/common/lib/libc/string/strcspn.c:1.1.2.2 --- /dev/null Sun Aug 10 06:47:06 2014 +++ src/common/lib/libc/string/strcspn.c Sun Aug 10 06:47:06 2014 @@ -0,0 +1,74 @@ +/* $NetBSD: strcspn.c,v 1.1.2.2 2014/08/10 06:47:06 tls Exp $ */ + +/*- + * Copyright (c) 2008 Joerg Sonnenberger + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include <sys/cdefs.h> +__RCSID("$NetBSD: strcspn.c,v 1.1.2.2 2014/08/10 06:47:06 tls Exp $"); + +#if !defined(_KERNEL) && !defined(_STANDALONE) +#include <assert.h> +#include <inttypes.h> +#include <limits.h> +#include <string.h> +#else +#include <lib/libkern/libkern.h> +#endif + +/* 64bit version is in strspn.c */ +#if ULONG_MAX != 0xffffffffffffffffull + +size_t +strcspn(const char *s, const char *charset) +{ + static const uint8_t idx[8] = { 1, 2, 4, 8, 16, 32, 64, 128 }; + const char *t; + uint8_t set[32]; +#define UC(a) ((unsigned int)(unsigned char)(a)) + + _DIAGASSERT(s != NULL); + _DIAGASSERT(charset != NULL); + + if (charset[0] == '\0') + return strlen(s); + if (charset[1] == '\0') { + for (t = s; *t != '\0'; ++t) + if (*t == *charset) + break; + return t - s; + } + + (void)memset(set, 0, sizeof(set)); + + for (; *charset != '\0'; ++charset) + set[UC(*charset) >> 3] |= idx[UC(*charset) & 7]; + + for (t = s; *t != '\0'; ++t) + if (set[UC(*t) >> 3] & idx[UC(*t) & 7]) + break; + return t - s; +} + +#endif Index: src/common/lib/libc/string/strpbrk.c diff -u /dev/null src/common/lib/libc/string/strpbrk.c:1.1.2.2 --- /dev/null Sun Aug 10 06:47:06 2014 +++ src/common/lib/libc/string/strpbrk.c Sun Aug 10 06:47:06 2014 @@ -0,0 +1,79 @@ +/* $NetBSD: strpbrk.c,v 1.1.2.2 2014/08/10 06:47:06 tls Exp $ */ + +/*- + * Copyright (c) 2008 Joerg Sonnenberger + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include <sys/cdefs.h> +__RCSID("$NetBSD: strpbrk.c,v 1.1.2.2 2014/08/10 06:47:06 tls Exp $"); + +#if !defined(_KERNEL) && !defined(_STANDALONE) +#include <assert.h> +#include <inttypes.h> +#include <limits.h> +#include <string.h> +#else +#include <lib/libkern/libkern.h> +#endif + +#define FAST_STRPBRK 1 +#define UC(a) ((unsigned int)(unsigned char)(a)) + +#ifdef FAST_STRPBRK +#define ADD_NEW_TO_SET(i) (set[inv[i] = idx++] = (i)) +#define IS_IN_SET(i) (inv[i] < idx && set[inv[i]] == (i)) +#define ADD_TO_SET(i) (void)(IS_IN_SET(i) || /*LINTED no effect*/ADD_NEW_TO_SET(i)) +#else +#define IS_IN_SET(i) (set[(i) >> 3] & idx[(i) & 7]) +#define ADD_TO_SET(i) (void)(set[(i) >> 3] |= idx[(i) & 7]) +#endif + +char * +strpbrk(const char *s, const char *charset) +{ +#ifdef FAST_STRPBRK + uint8_t set[256], inv[256], idx = 0; +#else + static const size_t idx[8] = { 1, 2, 4, 8, 16, 32, 64, 128 }; + uint8_t set[32]; + + (void)memset(set, 0, sizeof(set)); +#endif + + _DIAGASSERT(s != NULL); + _DIAGASSERT(charset != NULL); + + if (charset[0] == '\0') + return NULL; + if (charset[1] == '\0') + return strchr(s, charset[0]); + + for (; *charset != '\0'; ++charset) + ADD_TO_SET(UC(*charset)); + + for (; *s != '\0'; ++s) + if (IS_IN_SET(UC(*s))) + return __UNCONST(s); + return NULL; +} Index: src/common/lib/libc/string/strspn.c diff -u /dev/null src/common/lib/libc/string/strspn.c:1.1.2.2 --- /dev/null Sun Aug 10 06:47:06 2014 +++ src/common/lib/libc/string/strspn.c Sun Aug 10 06:47:06 2014 @@ -0,0 +1,155 @@ +/* $NetBSD: strspn.c,v 1.1.2.2 2014/08/10 06:47:06 tls Exp $ */ + +/*- + * Copyright (c) 2008 Joerg Sonnenberger + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include <sys/cdefs.h> +__RCSID("$NetBSD: strspn.c,v 1.1.2.2 2014/08/10 06:47:06 tls Exp $"); + +#if !defined(_KERNEL) && !defined(_STANDALONE) +#include <assert.h> +#include <inttypes.h> +#include <limits.h> +#include <string.h> +#else +#include <lib/libkern/libkern.h> +#endif + +#if ULONG_MAX != 0xffffffffffffffffull + +size_t +strspn(const char *s, const char *charset) +{ + static const uint8_t idx[8] = { 1, 2, 4, 8, 16, 32, 64, 128 }; + uint8_t set[32]; + const char *t; +#define UC(a) ((unsigned int)(unsigned char)(a)) + + _DIAGASSERT(s != NULL); + _DIAGASSERT(charset != NULL); + + if (charset[0] == '\0') + return 0; + if (charset[1] == '\0') { + for (t = s; *t != '\0'; ++t) { + if (*t != *charset) + break; + } + return t - s; + } + + (void)memset(set, 0, sizeof(set)); + + for (; *charset != '\0'; ++charset) + set[UC(*charset) >> 3] |= idx[UC(*charset) & 7]; + + for (t = s; *t != '\0'; ++t) + if ((set[UC(*t) >> 3] & idx[UC(*t) & 7]) == 0) + break; + return t - s; +} + +#else + +/* 64 bit system, use four 64 bits registers for bitmask */ + +static size_t +strspn_x(const char *s_s, const char *charset_s, unsigned long invert) +{ + const unsigned char *s = (const unsigned char *)s_s; + const unsigned char *charset = (const unsigned char *)charset_s; + unsigned long m_0, m_4, m_8, m_c; + unsigned char ch, next_ch; + unsigned long bit; + unsigned long check; + size_t count; + + /* Four 64bit registers have one bit for each character value */ + m_0 = 0; + m_4 = 0; + m_8 = 0; + m_c = 0; + + for (ch = *charset; ch != 0; ch = next_ch) { + next_ch = *++charset; + bit = 1ul << (ch & 0x3f); + if (__predict_true(ch < 0x80)) { + if (ch < 0x40) + m_0 |= bit; + else + m_4 |= bit; + } else { + if (ch < 0xc0) + m_8 |= bit; + else + m_c |= bit; + } + } + + /* For strcspn() we just invert the validity set */ + m_0 ^= invert; + m_4 ^= invert; + m_8 ^= invert; + m_c ^= invert; + + /* + * We could do remove the lsb from m_0 to terminate at the + * end of the input string. + * However prefetching the next char is benifitial and we must + * not read the byte after the \0 - as it might fault! + * So we take the 'hit' of the compare against 0. + */ + + ch = *s++; + for (count = 0; ch != 0; ch = next_ch) { + next_ch = s[count]; + if (__predict_true(ch < 0x80)) { + check = m_0; + if (ch >= 0x40) + check = m_4; + } else { + check = m_8; + if (ch >= 0xc0) + check = m_c; + } + if (!((check >> (ch & 0x3f)) & 1)) + break; + count++; + } + return count; +} + +size_t +strspn(const char *s, const char *charset) +{ + return strspn_x(s, charset, 0); +} + +size_t +strcspn(const char *s, const char *charset) +{ + return strspn_x(s, charset, ~0ul); +} +#endif