CVS commit: src/common/lib/libc/arch/aarch64/atomic
Module Name:src Committed By: skrll Date: Sun Aug 8 07:17:18 UTC 2021 Modified Files: src/common/lib/libc/arch/aarch64/atomic: __aarch64_lse.S Log Message: Whitespace To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 \ src/common/lib/libc/arch/aarch64/atomic/__aarch64_lse.S 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/aarch64/atomic/__aarch64_lse.S diff -u src/common/lib/libc/arch/aarch64/atomic/__aarch64_lse.S:1.1 src/common/lib/libc/arch/aarch64/atomic/__aarch64_lse.S:1.2 --- src/common/lib/libc/arch/aarch64/atomic/__aarch64_lse.S:1.1 Tue Apr 27 09:14:24 2021 +++ src/common/lib/libc/arch/aarch64/atomic/__aarch64_lse.S Sun Aug 8 07:17:18 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: __aarch64_lse.S,v 1.1 2021/04/27 09:14:24 skrll Exp $ */ +/* $NetBSD: __aarch64_lse.S,v 1.2 2021/08/08 07:17:18 skrll Exp $ */ /*- * Copyright (c) 2021 The NetBSD Foundation, Inc. @@ -204,4 +204,3 @@ ENTRY_NP(INSN_FUNC) 2: b 1b END(INSN_FUNC) #endif -
CVS commit: src/common/lib/libc/arch/aarch64/atomic
Module Name:src Committed By: skrll Date: Thu Jul 29 10:29:05 UTC 2021 Modified Files: src/common/lib/libc/arch/aarch64/atomic: atomic_add_16.S atomic_add_32.S atomic_add_64.S atomic_add_8.S atomic_and_16.S atomic_and_32.S atomic_and_64.S atomic_and_8.S atomic_cas_16.S atomic_cas_32.S atomic_cas_64.S atomic_cas_8.S atomic_nand_16.S atomic_nand_32.S atomic_nand_64.S atomic_nand_8.S atomic_op_asm.h atomic_or_16.S atomic_or_32.S atomic_or_64.S atomic_or_8.S atomic_sub_16.S atomic_sub_32.S atomic_sub_64.S atomic_sub_8.S atomic_swap_16.S atomic_swap_32.S atomic_swap_64.S atomic_swap_8.S atomic_xor_16.S atomic_xor_32.S atomic_xor_64.S atomic_xor_8.S Log Message: As we're providing the legacy gcc __sync built-in functions for atomic memory access we might as well get the memory barriers right... >From the gcc documentation: In most cases, these built-in functions are considered a full barrier. That is, no memory operand is moved across the operation, either forward or backward. Further, instructions are issued as necessary to prevent the processor from speculating loads across the operation and from queuing stores after the operation. type __sync_lock_test_and_set (type *ptr, type value, ...) This built-in function is not a full barrier, but rather an acquire barrier. This means that references after the operation cannot move to (or be speculated to) before the operation, but previous memory stores may not be globally visible yet, and previous memory loads may not yet be satisfied. void __sync_lock_release (type *ptr, ...) This built-in function is not a full barrier, but rather a release barrier. This means that all previous memory stores are globally visible, and all previous memory loads have been satisfied, but following memory reads are not prevented from being speculated to before the barrier. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 \ src/common/lib/libc/arch/aarch64/atomic/atomic_add_16.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_add_32.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_add_64.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_add_8.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_and_16.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_and_32.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_and_64.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_and_8.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_or_16.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_or_32.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_or_8.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_sub_16.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_sub_32.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_sub_64.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_sub_8.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_xor_16.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_xor_32.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_xor_64.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_xor_8.S cvs rdiff -u -r1.3 -r1.4 \ src/common/lib/libc/arch/aarch64/atomic/atomic_cas_16.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_cas_32.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_cas_8.S cvs rdiff -u -r1.5 -r1.6 \ src/common/lib/libc/arch/aarch64/atomic/atomic_cas_64.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h cvs rdiff -u -r1.4 -r1.5 \ src/common/lib/libc/arch/aarch64/atomic/atomic_nand_16.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_nand_32.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_nand_64.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_nand_8.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_16.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_32.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_64.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_8.S cvs rdiff -u -r1.2 -r1.3 \ src/common/lib/libc/arch/aarch64/atomic/atomic_or_64.S 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/aarch64/atomic/atomic_add_16.S diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_add_16.S:1.1 src/common/lib/libc/arch/aarch64/atomic/atomic_add_16.S:1.2 --- src/common/lib/libc/arch/aarch64/atomic/atomic_add_16.S:1.1 Sun Aug 10 05:47:35 2014 +++ src/common/lib/libc/arch/aarch64/atomic/atomic_add_16.S Thu Jul 29 10:29:05 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_add_16.S,v 1.1 2014/08/10 05:47:35 matt Exp $ */ +/* $NetBSD: atomic_add_16.S,v 1.2 2021/07/29 10:29:05 skrll Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -33,14 +33,16 @@ ATOMIC_OP16(add, add) +SYNC_FETCH_OP16(add, add) +
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: simonb Date: Wed Jul 28 08:01:10 UTC 2021 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_op_asm.h Log Message: #define consistency. To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/common/lib/libc/arch/arm/atomic/atomic_op_asm.h 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/atomic_op_asm.h diff -u src/common/lib/libc/arch/arm/atomic/atomic_op_asm.h:1.9 src/common/lib/libc/arch/arm/atomic/atomic_op_asm.h:1.10 --- src/common/lib/libc/arch/arm/atomic/atomic_op_asm.h:1.9 Wed Jul 28 07:32:20 2021 +++ src/common/lib/libc/arch/arm/atomic/atomic_op_asm.h Wed Jul 28 08:01:10 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_op_asm.h,v 1.9 2021/07/28 07:32:20 skrll Exp $ */ +/* $NetBSD: atomic_op_asm.h,v 1.10 2021/07/28 08:01:10 simonb Exp $ */ /*- * Copyright (c) 2007 The NetBSD Foundation, Inc. @@ -75,11 +75,11 @@ #endif #ifdef _ARM_ARCH_7 -#define DMB dmb ish +#define DMB dmb ish #define DMBST dmb ishst #else -#define DMB mcr p15, 0, r0, c7, c10, 5 /* Data Memory Barrier */ -#define DMBST DMB +#define DMB mcr p15, 0, r0, c7, c10, 5 /* Data Memory Barrier */ +#define DMBST DMB #endif #endif /* _ATOMIC_OP_ASM_H_ */
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: skrll Date: Wed Jul 28 07:32:20 UTC 2021 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_add_16.S atomic_add_32.S atomic_add_64.S atomic_add_8.S atomic_and_16.S atomic_and_32.S atomic_and_64.S atomic_and_8.S atomic_cas_16.S atomic_cas_32.S atomic_cas_64.S atomic_cas_8.S atomic_dec_32.S atomic_dec_64.S atomic_inc_32.S atomic_inc_64.S atomic_nand_16.S atomic_nand_32.S atomic_nand_64.S atomic_nand_8.S atomic_op_asm.h atomic_or_16.S atomic_or_32.S atomic_or_64.S atomic_or_8.S atomic_sub_64.S atomic_swap.S atomic_swap_16.S atomic_swap_64.S atomic_xor_16.S atomic_xor_32.S atomic_xor_64.S atomic_xor_8.S membar_ops.S sync_bool_compare_and_swap_1.S sync_bool_compare_and_swap_2.S sync_bool_compare_and_swap_4.S sync_bool_compare_and_swap_8.S sync_fetch_and_add_8.S sync_fetch_and_and_8.S sync_fetch_and_nand_8.S sync_fetch_and_or_8.S sync_fetch_and_sub_8.S sync_fetch_and_xor_8.S Log Message: Remove memory barriers from the atomic_ops(3) atomic operations. They're not needed for correctness. Add the correct memory barriers to the gcc legacy __sync built-in functions for atomic memory access. From the gcc documentation: In most cases, these built-in functions are considered a full barrier. That is, no memory operand is moved across the operation, either forward or backward. Further, instructions are issued as necessary to prevent the processor from speculating loads across the operation and from queuing stores after the operation. type __sync_lock_test_and_set (type *ptr, type value, ...) This built-in function is not a full barrier, but rather an acquire barrier. This means that references after the operation cannot move to (or be speculated to) before the operation, but previous memory stores may not be globally visible yet, and previous memory loads may not yet be satisfied. void __sync_lock_release (type *ptr, ...) This built-in function is not a full barrier, but rather a release barrier. This means that all previous memory stores are globally visible, and all previous memory loads have been satisfied, but following memory reads are not prevented from being speculated to before the barrier. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 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_nand_16.S \ src/common/lib/libc/arch/arm/atomic/atomic_nand_32.S \ src/common/lib/libc/arch/arm/atomic/atomic_nand_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_sub_64.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_bool_compare_and_swap_8.S cvs rdiff -u -r1.9 -r1.10 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.13 -r1.14 \ src/common/lib/libc/arch/arm/atomic/atomic_add_64.S \ src/common/lib/libc/arch/arm/atomic/atomic_or_64.S \ src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S cvs rdiff -u -r1.12 -r1.13 \ src/common/lib/libc/arch/arm/atomic/atomic_and_64.S cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/arm/atomic/atomic_cas_16.S cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/arm/atomic/atomic_cas_32.S cvs rdiff -u -r1.11 -r1.12 \ src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S cvs rdiff -u -r1.8 -r1.9 src/common/lib/libc/arch/arm/atomic/atomic_cas_8.S \ src/common/lib/libc/arch/arm/atomic/atomic_dec_64.S \ src/common/lib/libc/arch/arm/atomic/atomic_inc_32.S \ src/common/lib/libc/arch/arm/atomic/atomic_op_asm.h \ src/common/lib/libc/arch/arm/atomic/membar_ops.S cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/arm/atomic/atomic_dec_32.S \ src/common/lib/libc/arch/arm/atomic/atomic_nand_64.S \ src/common/lib/libc/arch/arm/atomic/atomic_swap_16.S \ src/common/lib/libc/arch/arm/atomic/atomic_xor_64.S cvs rdiff -u -r1.10 -r1.11 \ src/common/lib/libc/arch/arm/atomic/atomic_inc_64.S cvs rdiff -u -r1.18 -r1.19 src/common/lib/libc/arch/arm/atomic/atomic_swap.S cvs rdiff -u -r1.3 -r1.4 \ src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_1.S \ src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_2.S \ src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_4.S cvs rdiff -u -r1.5 -r1.6 \
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: skrll Date: Sat Jul 10 06:53:40 UTC 2021 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_add_16.S atomic_add_32.S atomic_add_64.S atomic_add_8.S atomic_and_16.S atomic_and_32.S atomic_and_64.S atomic_and_8.S atomic_dec_32.S atomic_dec_64.S atomic_inc_32.S atomic_inc_64.S atomic_nand_16.S atomic_nand_32.S atomic_nand_64.S atomic_nand_8.S atomic_or_16.S atomic_or_32.S atomic_or_64.S atomic_or_8.S atomic_sub_64.S atomic_swap.S atomic_swap_16.S atomic_xor_16.S atomic_xor_32.S atomic_xor_64.S atomic_xor_8.S membar_ops.S Log Message: s/ifdef _ARM_ARCH_6/if defined(_ARM_ARCH_6)/ for consistency. NFCI. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 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_nand_16.S \ src/common/lib/libc/arch/arm/atomic/atomic_nand_32.S \ src/common/lib/libc/arch/arm/atomic/atomic_nand_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_sub_64.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 cvs rdiff -u -r1.8 -r1.9 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.12 -r1.13 \ src/common/lib/libc/arch/arm/atomic/atomic_add_64.S \ src/common/lib/libc/arch/arm/atomic/atomic_or_64.S cvs rdiff -u -r1.11 -r1.12 \ src/common/lib/libc/arch/arm/atomic/atomic_and_64.S cvs rdiff -u -r1.5 -r1.6 src/common/lib/libc/arch/arm/atomic/atomic_dec_32.S \ src/common/lib/libc/arch/arm/atomic/atomic_nand_64.S \ src/common/lib/libc/arch/arm/atomic/atomic_swap_16.S \ src/common/lib/libc/arch/arm/atomic/atomic_xor_64.S cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/arm/atomic/atomic_dec_64.S \ src/common/lib/libc/arch/arm/atomic/atomic_inc_32.S \ src/common/lib/libc/arch/arm/atomic/membar_ops.S cvs rdiff -u -r1.9 -r1.10 src/common/lib/libc/arch/arm/atomic/atomic_inc_64.S cvs rdiff -u -r1.17 -r1.18 src/common/lib/libc/arch/arm/atomic/atomic_swap.S 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/atomic_add_16.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_add_16.S:1.3 src/common/lib/libc/arch/arm/atomic/atomic_add_16.S:1.4 --- src/common/lib/libc/arch/arm/atomic/atomic_add_16.S:1.3 Mon Jun 23 21:53:45 2014 +++ src/common/lib/libc/arch/arm/atomic/atomic_add_16.S Sat Jul 10 06:53:40 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_add_16.S,v 1.3 2014/06/23 21:53:45 joerg Exp $ */ +/* $NetBSD: atomic_add_16.S,v 1.4 2021/07/10 06:53:40 skrll Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include "atomic_op_asm.h" -#ifdef _ARM_ARCH_6 +#if defined(_ARM_ARCH_6) ENTRY_NP(_atomic_sub_16) negs r1, r1 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.3 src/common/lib/libc/arch/arm/atomic/atomic_add_8.S:1.4 --- src/common/lib/libc/arch/arm/atomic/atomic_add_8.S:1.3 Mon Jun 23 21:53:45 2014 +++ src/common/lib/libc/arch/arm/atomic/atomic_add_8.S Sat Jul 10 06:53:40 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_add_8.S,v 1.3 2014/06/23 21:53:45 joerg Exp $ */ +/* $NetBSD: atomic_add_8.S,v 1.4 2021/07/10 06:53:40 skrll Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include "atomic_op_asm.h" -#ifdef _ARM_ARCH_6 +#if defined(_ARM_ARCH_6) ENTRY_NP(_atomic_sub_8) negs r1, r1 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.3 src/common/lib/libc/arch/arm/atomic/atomic_and_16.S:1.4 --- src/common/lib/libc/arch/arm/atomic/atomic_and_16.S:1.3 Mon Jun 23 21:53:45 2014 +++ src/common/lib/libc/arch/arm/atomic/atomic_and_16.S Sat Jul 10 06:53:40 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_and_16.S,v 1.3 2014/06/23 21:53:45 joerg Exp $ */ +/* $NetBSD: atomic_and_16.S,v 1.4 2021/07/10 06:53:40 skrll Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include "atomic_op_asm.h" -#ifdef _ARM_ARCH_6 +#if defined(_ARM_ARCH_6) ENTRY_NP(_atomic_and_16) mov ip, r0 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.3 src/common/lib/libc/arch/arm/atomic/atomic_and_8.S:1.4 ---
CVS commit: src/common/lib/libc/arch/aarch64/atomic
Module Name:src Committed By: skrll Date: Tue Jul 6 08:31:41 UTC 2021 Modified Files: src/common/lib/libc/arch/aarch64/atomic: atomic_nand_16.S Log Message: One more s/pte/ptr/ To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 \ src/common/lib/libc/arch/aarch64/atomic/atomic_nand_16.S 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/aarch64/atomic/atomic_nand_16.S diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_nand_16.S:1.3 src/common/lib/libc/arch/aarch64/atomic/atomic_nand_16.S:1.4 --- src/common/lib/libc/arch/aarch64/atomic/atomic_nand_16.S:1.3 Sun Jul 4 06:55:47 2021 +++ src/common/lib/libc/arch/aarch64/atomic/atomic_nand_16.S Tue Jul 6 08:31:41 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_nand_16.S,v 1.3 2021/07/04 06:55:47 skrll Exp $ */ +/* $NetBSD: atomic_nand_16.S,v 1.4 2021/07/06 08:31:41 skrll Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -38,7 +38,7 @@ ENTRY_NP(_atomic_nand_16) mov x4, x0 1: ldxrh w0, [x4] /* load old value (*ptr) */ and w3, w0, w1 /* w3 = (*ptr & value) */ - mvn w3, w3 /* w3 = ~(*pte & value) */ + mvn w3, w3 /* w3 = ~(*ptr & value) */ stxrh w2, w3, [x4] /* try to store */ cbnz w2, 2f /* succeed? no, try again */ ret/* return old value */ @@ -58,7 +58,7 @@ ENTRY_NP(_atomic_nand_16_nv) mov x4, x0 /* need r0 for return value */ 1: ldxrh w0, [x4] /* load old value (*ptr) */ and w0, w0, w1 /* w0 = (*ptr & value) */ - mvn w0, w0 /* w0 = ~(*pte & value), return value */ + mvn w0, w0 /* w0 = ~(*ptr & value), return value */ stxrh w2, w0, [x4] /* try to store */ cbnz w2, 2f /* succeed? no, try again? */ ret/* return new value */
CVS commit: src/common/lib/libc/arch/aarch64/atomic
Module Name:src Committed By: skrll Date: Mon Jul 5 08:50:31 UTC 2021 Modified Files: src/common/lib/libc/arch/aarch64/atomic: atomic_nand_32.S atomic_nand_64.S atomic_nand_8.S Log Message: typo in comment s/pte/ptr/ To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 \ src/common/lib/libc/arch/aarch64/atomic/atomic_nand_32.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_nand_64.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_nand_8.S 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/aarch64/atomic/atomic_nand_32.S diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_nand_32.S:1.3 src/common/lib/libc/arch/aarch64/atomic/atomic_nand_32.S:1.4 --- src/common/lib/libc/arch/aarch64/atomic/atomic_nand_32.S:1.3 Sun Jul 4 06:55:47 2021 +++ src/common/lib/libc/arch/aarch64/atomic/atomic_nand_32.S Mon Jul 5 08:50:31 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_nand_32.S,v 1.3 2021/07/04 06:55:47 skrll Exp $ */ +/* $NetBSD: atomic_nand_32.S,v 1.4 2021/07/05 08:50:31 skrll Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -38,7 +38,7 @@ ENTRY_NP(_atomic_nand_32) mov x4, x0 1: ldxr w0, [x4] /* load old value (to be returned) */ and w3, w0, w1 /* w3 = (*ptr & value) */ - mvn w3, w3 /* x3 = ~(*pte & value) */ + mvn w3, w3 /* x3 = ~(*ptr & value) */ stxr w2, w3, [x4] /* try to store */ cbnz w2, 2f /* succeed? no, try again */ ret/* return old value */ @@ -58,7 +58,7 @@ ENTRY_NP(_atomic_nand_32_nv) mov x4, x0 /* need r0 for return value */ 1: ldxr w0, [x4] /* load old value (*ptr) */ and w0, w0, w1 /* x0 = (*ptr & value) */ - mvn w0, w0 /* x0 = ~(*pte & value), return value */ + mvn w0, w0 /* x0 = ~(*ptr & value), return value */ stxr w2, w0, [x4] /* try to store */ cbnz w2, 2f /* succeed? no, try again? */ ret/* return new value */ Index: src/common/lib/libc/arch/aarch64/atomic/atomic_nand_64.S diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_nand_64.S:1.3 src/common/lib/libc/arch/aarch64/atomic/atomic_nand_64.S:1.4 --- src/common/lib/libc/arch/aarch64/atomic/atomic_nand_64.S:1.3 Sun Jul 4 06:55:47 2021 +++ src/common/lib/libc/arch/aarch64/atomic/atomic_nand_64.S Mon Jul 5 08:50:31 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_nand_64.S,v 1.3 2021/07/04 06:55:47 skrll Exp $ */ +/* $NetBSD: atomic_nand_64.S,v 1.4 2021/07/05 08:50:31 skrll Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -38,7 +38,7 @@ ENTRY_NP(_atomic_nand_64) mov x4, x0 1: ldxr x0, [x4] /* load old value (*ptr) */ and x2, x0, x1 /* x2 = (*ptr & value) */ - mvn x2, x2 /* x2 = ~(*pte & value) */ + mvn x2, x2 /* x2 = ~(*ptr & value) */ stxr w3, x2, [x4] /* try to store */ cbnz w3, 2f /* succeed? no, try again */ ret/* return old value */ @@ -58,7 +58,7 @@ ENTRY_NP(_atomic_nand_64_nv) mov x4, x0 /* need r0 for return value */ 1: ldxr x0, [x4] /* load old value (*ptr) */ and x0, x0, x1 /* x0 = (*ptr & value) */ - mvn x0, x0 /* x0 = ~(*pte & value), return value */ + mvn x0, x0 /* x0 = ~(*ptr & value), return value */ stxr w3, x0, [x4] /* try to store */ cbnz w3, 2f /* succeed? no, try again? */ ret/* return new value */ Index: src/common/lib/libc/arch/aarch64/atomic/atomic_nand_8.S diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_nand_8.S:1.3 src/common/lib/libc/arch/aarch64/atomic/atomic_nand_8.S:1.4 --- src/common/lib/libc/arch/aarch64/atomic/atomic_nand_8.S:1.3 Sun Jul 4 06:55:47 2021 +++ src/common/lib/libc/arch/aarch64/atomic/atomic_nand_8.S Mon Jul 5 08:50:31 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_nand_8.S,v 1.3 2021/07/04 06:55:47 skrll Exp $ */ +/* $NetBSD: atomic_nand_8.S,v 1.4 2021/07/05 08:50:31 skrll Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -38,7 +38,7 @@ ENTRY_NP(_atomic_nand_8) mov x4, x0 1: ldxrb w0, [x4] /* load old value (*ptr) */ and w3, w0, w1 /* w3 = (*ptr & value) */ - mvn w3, w3 /* w3 = ~(*pte & value) */ + mvn w3, w3 /* w3 = ~(*ptr & value) */ stxrb w2, w3, [x4] /* try to store */ cbnz w2, 2f /* succeed? no, try again */ ret/* return old value */ @@ -57,7 +57,7 @@ ENTRY_NP(_atomic_nand_8_nv) mov x4, x0 /* need r0 for return value */ 1: ldxrb w0, [x4] /* load old value (*ptr) */ and w0, w0, w1 /* w0 = (*ptr & value) */ - mvn w0, w0 /* w0 = ~(*pte & value), return value */ + mvn w0, w0 /* w0 = ~(*ptr & value), return value */ stxrb w2, w0, [x4] /* try to store */ cbnz w2, 2f /* succeed? no, try again? */ ret/* return new value */
CVS commit: src/common/lib/libc/arch/aarch64/atomic
Module Name:src Committed By: skrll Date: Sun Jul 4 06:55:47 UTC 2021 Modified Files: src/common/lib/libc/arch/aarch64/atomic: atomic_nand_16.S atomic_nand_32.S atomic_nand_64.S atomic_nand_8.S Log Message: Fix the logic operation for atomic_nand_{8,16,32,64} >From the gcc docs the operations are as follows { tmp = *ptr; *ptr = ~(tmp & value); return tmp; } // nand { tmp = ~(*ptr & value); *ptr = tmp; return *ptr; } // nand yes, this is really rather strange. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 \ src/common/lib/libc/arch/aarch64/atomic/atomic_nand_16.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_nand_32.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_nand_64.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_nand_8.S 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/aarch64/atomic/atomic_nand_16.S diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_nand_16.S:1.2 src/common/lib/libc/arch/aarch64/atomic/atomic_nand_16.S:1.3 --- src/common/lib/libc/arch/aarch64/atomic/atomic_nand_16.S:1.2 Wed Aug 12 12:59:57 2020 +++ src/common/lib/libc/arch/aarch64/atomic/atomic_nand_16.S Sun Jul 4 06:55:47 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_nand_16.S,v 1.2 2020/08/12 12:59:57 skrll Exp $ */ +/* $NetBSD: atomic_nand_16.S,v 1.3 2021/07/04 06:55:47 skrll Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -31,11 +31,14 @@ #include "atomic_op_asm.h" +/* + * { tmp = *ptr; *ptr = ~(tmp & value); return tmp; } // nand + */ ENTRY_NP(_atomic_nand_16) mov x4, x0 -1: ldxrh w0, [x4] /* load old value (to be returned) */ - mvn w3, w0 /* complement source */ - and w3, w3, w1 /* calculate new value */ +1: ldxrh w0, [x4] /* load old value (*ptr) */ + and w3, w0, w1 /* w3 = (*ptr & value) */ + mvn w3, w3 /* w3 = ~(*pte & value) */ stxrh w2, w3, [x4] /* try to store */ cbnz w2, 2f /* succeed? no, try again */ ret/* return old value */ @@ -47,11 +50,15 @@ ATOMIC_OP_ALIAS(atomic_nand_ushort,_atom STRONG_ALIAS(__sync_fetch_and_nand_2,_atomic_nand_16) STRONG_ALIAS(_atomic_nand_ushort,_atomic_nand_16) + +/* + * { tmp = ~(*ptr & value); *ptr = tmp; return *ptr; } // nand + */ ENTRY_NP(_atomic_nand_16_nv) mov x4, x0 /* need r0 for return value */ -1: ldxrh w0, [x4] /* load old value */ - mvn w0, w0 /* complement source */ - and w0, w0, w1 /* calculate new value (return value) */ +1: ldxrh w0, [x4] /* load old value (*ptr) */ + and w0, w0, w1 /* w0 = (*ptr & value) */ + mvn w0, w0 /* w0 = ~(*pte & value), return value */ stxrh w2, w0, [x4] /* try to store */ cbnz w2, 2f /* succeed? no, try again? */ ret/* return new value */ Index: src/common/lib/libc/arch/aarch64/atomic/atomic_nand_32.S diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_nand_32.S:1.2 src/common/lib/libc/arch/aarch64/atomic/atomic_nand_32.S:1.3 --- src/common/lib/libc/arch/aarch64/atomic/atomic_nand_32.S:1.2 Wed Aug 12 12:59:57 2020 +++ src/common/lib/libc/arch/aarch64/atomic/atomic_nand_32.S Sun Jul 4 06:55:47 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_nand_32.S,v 1.2 2020/08/12 12:59:57 skrll Exp $ */ +/* $NetBSD: atomic_nand_32.S,v 1.3 2021/07/04 06:55:47 skrll Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -31,11 +31,14 @@ #include "atomic_op_asm.h" +/* + * { tmp = *ptr; *ptr = ~(tmp & value); return tmp; } // nand + */ ENTRY_NP(_atomic_nand_32) mov x4, x0 1: ldxr w0, [x4] /* load old value (to be returned) */ - mvn w3, w0 /* complement source */ - and w3, w3, w1 /* calculate new value */ + and w3, w0, w1 /* w3 = (*ptr & value) */ + mvn w3, w3 /* x3 = ~(*pte & value) */ stxr w2, w3, [x4] /* try to store */ cbnz w2, 2f /* succeed? no, try again */ ret/* return old value */ @@ -47,11 +50,15 @@ ATOMIC_OP_ALIAS(atomic_nand_uint,_atomic STRONG_ALIAS(__sync_fetch_and_nand_4,_atomic_nand_32) STRONG_ALIAS(_atomic_nand_uint,_atomic_nand_32) + +/* + * { tmp = ~(*ptr & value); *ptr = tmp; return *ptr; } // nand + */ ENTRY_NP(_atomic_nand_32_nv) mov x4, x0 /* need r0 for return value */ -1: ldxr w0, [x4] /* load old value */ - mvn w0, w0 /* complement source */ - and w0, w0, w1 /* calculate new value (return value) */ +1: ldxr w0, [x4] /* load old value (*ptr) */ + and w0, w0, w1 /* x0 = (*ptr & value) */ + mvn w0, w0 /* x0 = ~(*pte & value), return value */ stxr w2, w0, [x4] /* try to store */ cbnz w2, 2f /* succeed? no, try again? */ ret/* return new value */ Index: src/common/lib/libc/arch/aarch64/atomic/atomic_nand_64.S diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_nand_64.S:1.2 src/common/lib/libc/arch/aarch64/atomic/atomic_nand_64.S:1.3 --- src/common/lib/libc/arch/aarch64/atomic/atomic_nand_64.S:1.2 Wed Aug 12 12:59:57 2020 +++
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: skrll Date: Tue Jun 29 06:28:07 UTC 2021 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_cas_8.S Log Message: Whitespace To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/arm/atomic/atomic_cas_8.S 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/atomic_cas_8.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_cas_8.S:1.7 src/common/lib/libc/arch/arm/atomic/atomic_cas_8.S:1.8 --- src/common/lib/libc/arch/arm/atomic/atomic_cas_8.S:1.7 Tue Mar 4 16:15:28 2014 +++ src/common/lib/libc/arch/arm/atomic/atomic_cas_8.S Tue Jun 29 06:28:07 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_cas_8.S,v 1.7 2014/03/04 16:15:28 matt Exp $ */ +/* $NetBSD: atomic_cas_8.S,v 1.8 2021/06/29 06:28:07 skrll Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -55,7 +55,7 @@ ENTRY_NP(_atomic_cas_8) mcr p15, 0, r3, c7, c10, 4 /* data synchronization barrier */ #endif 2: RET/* return. */ - END(_atomic_cas_8) +END(_atomic_cas_8) ATOMIC_OP_ALIAS(atomic_cas_8,_atomic_cas_8) STRONG_ALIAS(_atomic_cas_char,_atomic_cas_8)
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: skrll Date: Mon Jun 28 09:00:45 UTC 2021 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_add_64.S atomic_and_64.S atomic_nand_64.S atomic_or_64.S atomic_sub_64.S atomic_swap_64.S atomic_xor_64.S Log Message: Whitespace To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 \ src/common/lib/libc/arch/arm/atomic/atomic_add_64.S \ src/common/lib/libc/arch/arm/atomic/atomic_or_64.S cvs rdiff -u -r1.10 -r1.11 \ src/common/lib/libc/arch/arm/atomic/atomic_and_64.S cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/arm/atomic/atomic_nand_64.S \ src/common/lib/libc/arch/arm/atomic/atomic_xor_64.S cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/arm/atomic/atomic_sub_64.S cvs rdiff -u -r1.12 -r1.13 \ src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S 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/atomic_add_64.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_add_64.S:1.11 src/common/lib/libc/arch/arm/atomic/atomic_add_64.S:1.12 --- src/common/lib/libc/arch/arm/atomic/atomic_add_64.S:1.11 Tue Mar 4 16:15:28 2014 +++ src/common/lib/libc/arch/arm/atomic/atomic_add_64.S Mon Jun 28 09:00:45 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_add_64.S,v 1.11 2014/03/04 16:15:28 matt Exp $ */ +/* $NetBSD: atomic_add_64.S,v 1.12 2021/06/28 09:00:45 skrll Exp $ */ /*- * Copyright (c) 2012 The NetBSD Foundation, Inc. * All rights reserved. @@ -33,7 +33,7 @@ #ifdef _ARM_ARCH_6 ENTRY_NP(_atomic_add_64_nv) - push {r3,r4} /* save temporary */ + push {r3, r4} /* save temporary */ mov ip, r0 /* need r0 for return value */ #ifndef __ARM_EABI__ mov r3, r2 @@ -50,7 +50,7 @@ ENTRY_NP(_atomic_add_64_nv) #else mcr p15, 0, r4, c7, c10, 5 /* data memory barrier */ #endif - pop {r3,r4} /* restore temporary */ + pop {r3, r4} /* restore temporary */ RET/* return new value */ END(_atomic_add_64_nv) Index: src/common/lib/libc/arch/arm/atomic/atomic_or_64.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_or_64.S:1.11 src/common/lib/libc/arch/arm/atomic/atomic_or_64.S:1.12 --- src/common/lib/libc/arch/arm/atomic/atomic_or_64.S:1.11 Sun Sep 15 14:55:04 2019 +++ src/common/lib/libc/arch/arm/atomic/atomic_or_64.S Mon Jun 28 09:00:45 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_or_64.S,v 1.11 2019/09/15 14:55:04 skrll Exp $ */ +/* $NetBSD: atomic_or_64.S,v 1.12 2021/06/28 09:00:45 skrll Exp $ */ /*- * Copyright (c) 2012 The NetBSD Foundation, Inc. * All rights reserved. @@ -33,7 +33,7 @@ #ifdef _ARM_ARCH_6 ENTRY_NP(_atomic_or_64_nv) - push {r3,r4} /* save temporary */ + push {r3, r4} /* save temporary */ #ifndef __ARM_EABI__ mov r3, r2 mov r2, r1 @@ -50,7 +50,7 @@ ENTRY_NP(_atomic_or_64_nv) #else mcr p15, 0, r4, c7, c10, 5 /* data memory barrier */ #endif - pop {r3,r4} /* restore temporary */ + pop {r3, r4} /* restore temporary */ RET/* return new value */ END(_atomic_or_64_nv) Index: src/common/lib/libc/arch/arm/atomic/atomic_and_64.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_and_64.S:1.10 src/common/lib/libc/arch/arm/atomic/atomic_and_64.S:1.11 --- src/common/lib/libc/arch/arm/atomic/atomic_and_64.S:1.10 Tue Mar 4 16:15:28 2014 +++ src/common/lib/libc/arch/arm/atomic/atomic_and_64.S Mon Jun 28 09:00:45 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_and_64.S,v 1.10 2014/03/04 16:15:28 matt Exp $ */ +/* $NetBSD: atomic_and_64.S,v 1.11 2021/06/28 09:00:45 skrll Exp $ */ /*- * Copyright (c) 2012 The NetBSD Foundation, Inc. * All rights reserved. @@ -33,7 +33,7 @@ #ifdef _ARM_ARCH_6 ENTRY_NP(_atomic_and_64_nv) - push {r3,r4} /* save temporary */ + push {r3, r4} /* save temporary */ #ifndef __ARM_EABI__ mov r3, r2 mov r2, r1 @@ -50,7 +50,7 @@ ENTRY_NP(_atomic_and_64_nv) #else mcr p15, 0, r4, c7, c10, 5 /* data memory barrier */ #endif - pop {r3,r4} /* restore temporary */ + pop {r3, r4} /* restore temporary */ RET/* return new value */ END(_atomic_and_64_nv) Index: src/common/lib/libc/arch/arm/atomic/atomic_nand_64.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_nand_64.S:1.4 src/common/lib/libc/arch/arm/atomic/atomic_nand_64.S:1.5 --- src/common/lib/libc/arch/arm/atomic/atomic_nand_64.S:1.4 Fri Dec 11 12:41:10 2015 +++ src/common/lib/libc/arch/arm/atomic/atomic_nand_64.S Mon Jun 28 09:00:45 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_nand_64.S,v 1.4 2015/12/11 12:41:10 skrll Exp $ */ +/* $NetBSD: atomic_nand_64.S,v 1.5 2021/06/28 09:00:45 skrll Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. * All rights reserved. @@ -33,7 +33,7 @@ #ifdef _ARM_ARCH_6 ENTRY_NP(_atomic_nand_64_nv) - push {r3,r4} /* save temporary */ + push {r3, r4} /* save temporary */ #ifndef __ARM_EABI__ mov r3, r2 mov r2, r1 @@ -52,7 +52,7 @@ ENTRY_NP(_atomic_nand_64_nv) #else mcr p15, 0, r4, c7, c10, 5 /*
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: skrll Date: Tue Apr 27 05:40:29 UTC 2021 Modified Files: src/common/lib/libc/arch/arm/atomic: membar_ops.S Log Message: Improve the membar_ops barriers - no need to use dsb and wait for completion. Also, we only to act on the inner shareability domain. To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/arm/atomic/membar_ops.S 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/membar_ops.S diff -u src/common/lib/libc/arch/arm/atomic/membar_ops.S:1.6 src/common/lib/libc/arch/arm/atomic/membar_ops.S:1.7 --- src/common/lib/libc/arch/arm/atomic/membar_ops.S:1.6 Fri Mar 28 21:32:41 2014 +++ src/common/lib/libc/arch/arm/atomic/membar_ops.S Tue Apr 27 05:40:29 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: membar_ops.S,v 1.6 2014/03/28 21:32:41 skrll Exp $ */ +/* $NetBSD: membar_ops.S,v 1.7 2021/04/27 05:40:29 skrll Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. * All rights reserved. @@ -34,10 +34,10 @@ ENTRY_NP(_membar_producer) #ifdef _ARM_ARCH_7 - dsb + dmb ishst #else mov r0, #0 - mcr p15, 0, r0, c7, c10, 4 /* Data Synchronization Barrier */ + mcr p15, 0, r0, c7, c10, 5 /* Data Memory Barrier */ #endif RET END(_membar_producer) @@ -47,7 +47,7 @@ STRONG_ALIAS(_membar_write,_membar_produ ENTRY_NP(_membar_sync) #ifdef _ARM_ARCH_7 - dmb + dmb ish #else mov r0, #0 mcr p15, 0, r0, c7, c10, 5 /* Data Memory Barrier */
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: skrll Date: Mon Apr 26 21:40:21 UTC 2021 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_swap.S atomic_swap_16.S atomic_swap_64.S Log Message: Add the appropriate memory barrier before the lock is cleared in __sync_lock_release_{1,2,4,8}. That is, all reads and write for in inner shareability domain before the lock clear store. To generate a diff of this commit: cvs rdiff -u -r1.16 -r1.17 src/common/lib/libc/arch/arm/atomic/atomic_swap.S cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/arm/atomic/atomic_swap_16.S cvs rdiff -u -r1.11 -r1.12 \ src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S 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/atomic_swap.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.16 src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.17 --- src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.16 Sat Apr 24 20:34:34 2021 +++ src/common/lib/libc/arch/arm/atomic/atomic_swap.S Mon Apr 26 21:40:21 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_swap.S,v 1.16 2021/04/24 20:34:34 skrll Exp $ */ +/* $NetBSD: atomic_swap.S,v 1.17 2021/04/26 21:40:21 skrll Exp $ */ /*- * Copyright (c) 2007,2012 The NetBSD Foundation, Inc. @@ -88,7 +88,7 @@ STRONG_ALIAS(_atomic_swap_ptr,_atomic_sw ENTRY_NP(__sync_lock_release_4) mov r1, #0 #ifdef _ARM_ARCH_7 - dmb + dmb ishst #else mcr p15, 0, r1, c7, c10, 5 /* data memory barrier */ #endif @@ -129,7 +129,7 @@ STRONG_ALIAS(_atomic_swap_uchar,_atomic_ ENTRY_NP(__sync_lock_release_1) mov r1, #0 #ifdef _ARM_ARCH_7 - dmb + dmb ishst #else mcr p15, 0, r1, c7, c10, 5 /* data memory barrier */ #endif 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.4 src/common/lib/libc/arch/arm/atomic/atomic_swap_16.S:1.5 --- src/common/lib/libc/arch/arm/atomic/atomic_swap_16.S:1.4 Sun May 17 20:57:11 2015 +++ src/common/lib/libc/arch/arm/atomic/atomic_swap_16.S Mon Apr 26 21:40:21 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_swap_16.S,v 1.4 2015/05/17 20:57:11 justin Exp $ */ +/* $NetBSD: atomic_swap_16.S,v 1.5 2021/04/26 21:40:21 skrll Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -58,6 +58,11 @@ STRONG_ALIAS(_atomic_swap_ushort,_atomic #if (!defined(_KERNEL) || !defined(_RUMPKERNEL)) && !defined(_STANDALONE) ENTRY_NP(__sync_lock_release_2) mov r1, #0 +#ifdef _ARM_ARCH_7 + dmb ishst +#else + mcr p15, 0, r1, c7, c10, 5 /* data memory barrier */ +#endif strh r1, [r0] RET END(__sync_lock_release_2) 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.11 src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S:1.12 --- src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S:1.11 Sat Apr 24 20:34:34 2021 +++ src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S Mon Apr 26 21:40:21 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_swap_64.S,v 1.11 2021/04/24 20:34:34 skrll Exp $ */ +/* $NetBSD: atomic_swap_64.S,v 1.12 2021/04/26 21:40:21 skrll Exp $ */ /*- * Copyright (c) 2012 The NetBSD Foundation, Inc. * All rights reserved. @@ -57,6 +57,11 @@ CRT_ALIAS(__atomic_exchange_8,_atomic_sw ENTRY_NP(__sync_lock_release_8) mov r2, #0 mov r3, #0 +#ifdef _ARM_ARCH_7 + dmb ishst +#else + mcr p15, 0, r2, c7, c10, 5 /* data memory barrier */ +#endif strd r2, r3, [r0] RET END(__sync_lock_release_8)
CVS commit: src/common/lib/libc/arch/mips/atomic
Module Name:src Committed By: christos Date: Sun Apr 25 22:45:16 UTC 2021 Modified Files: src/common/lib/libc/arch/mips/atomic: Makefile.inc Log Message: use ${MACHINE_MIPS64} To generate a diff of this commit: cvs rdiff -u -r1.14 -r1.15 src/common/lib/libc/arch/mips/atomic/Makefile.inc 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/mips/atomic/Makefile.inc diff -u src/common/lib/libc/arch/mips/atomic/Makefile.inc:1.14 src/common/lib/libc/arch/mips/atomic/Makefile.inc:1.15 --- src/common/lib/libc/arch/mips/atomic/Makefile.inc:1.14 Wed Feb 27 21:35:37 2019 +++ src/common/lib/libc/arch/mips/atomic/Makefile.inc Sun Apr 25 18:45:16 2021 @@ -1,9 +1,9 @@ -# $NetBSD: Makefile.inc,v 1.14 2019/02/28 02:35:37 isaki Exp $ +# $NetBSD: Makefile.inc,v 1.15 2021/04/25 22:45:16 christos Exp $ .if defined(LIB) && (${LIB} == "kern" || ${LIB} == "c" || ${LIB} == "pthread" \ || ${LIB} == "rump") -.if ${MACHINE_ARCH:Mmips64*} == "" +.if !${MACHINE_MIPS64} SRCS+= atomic_add_32_cas.c atomic_add_32_nv_cas.c \ atomic_and_32_cas.c atomic_and_32_nv_cas.c \ atomic_dec_32_cas.c atomic_dec_32_nv_cas.c \ @@ -30,7 +30,7 @@ SRCS+= membar_ops.S .if defined(LIB) && (${LIB} == "c" || ${LIB} == "pthread") -.if ${MACHINE_ARCH:Mmips64*} == "" +.if !${MACHINE_MIPS64} SRCS+= atomic_init_testset.c atomic_cas_up.S .else SRCS+= atomic_cas.S atomic_init_cas.c atomic_cas_by_cas32.c
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: skrll Date: Sat Apr 24 20:34:34 UTC 2021 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_swap.S atomic_swap_64.S Log Message: Trailing whitespace To generate a diff of this commit: cvs rdiff -u -r1.15 -r1.16 src/common/lib/libc/arch/arm/atomic/atomic_swap.S cvs rdiff -u -r1.10 -r1.11 \ src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S 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/atomic_swap.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.15 src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.16 --- src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.15 Sat Apr 24 20:29:04 2021 +++ src/common/lib/libc/arch/arm/atomic/atomic_swap.S Sat Apr 24 20:34:34 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_swap.S,v 1.15 2021/04/24 20:29:04 skrll Exp $ */ +/* $NetBSD: atomic_swap.S,v 1.16 2021/04/24 20:34:34 skrll Exp $ */ /*- * Copyright (c) 2007,2012 The NetBSD Foundation, Inc. @@ -15,7 +15,7 @@ * 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 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.10 src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S:1.11 --- src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S:1.10 Sun May 17 20:57:11 2015 +++ src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S Sat Apr 24 20:34:34 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_swap_64.S,v 1.10 2015/05/17 20:57:11 justin Exp $ */ +/* $NetBSD: atomic_swap_64.S,v 1.11 2021/04/24 20:34:34 skrll Exp $ */ /*- * Copyright (c) 2012 The NetBSD Foundation, Inc. * All rights reserved. @@ -14,7 +14,7 @@ * 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
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: skrll Date: Sat Apr 24 20:29:04 UTC 2021 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_swap.S Log Message: Fix __sync_lock_release_4 to actually zeroise the whole 4bytes/32bits. To generate a diff of this commit: cvs rdiff -u -r1.14 -r1.15 src/common/lib/libc/arch/arm/atomic/atomic_swap.S 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/atomic_swap.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.14 src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.15 --- src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.14 Sun May 17 20:57:11 2015 +++ src/common/lib/libc/arch/arm/atomic/atomic_swap.S Sat Apr 24 20:29:04 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_swap.S,v 1.14 2015/05/17 20:57:11 justin Exp $ */ +/* $NetBSD: atomic_swap.S,v 1.15 2021/04/24 20:29:04 skrll Exp $ */ /*- * Copyright (c) 2007,2012 The NetBSD Foundation, Inc. @@ -92,7 +92,7 @@ ENTRY_NP(__sync_lock_release_4) #else mcr p15, 0, r1, c7, c10, 5 /* data memory barrier */ #endif - strb r1, [r0] + str r1, [r0] RET END(__sync_lock_release_4) #endif
CVS commit: src/common/lib/libc/arch/aarch64/atomic
Module Name:src Committed By: skrll Date: Wed Apr 21 16:23:47 UTC 2021 Modified Files: src/common/lib/libc/arch/aarch64/atomic: Makefile.inc atomic_swap_16.S atomic_swap_32.S atomic_swap_64.S atomic_swap_8.S Added Files: src/common/lib/libc/arch/aarch64/atomic: __aarch64_swp1_acq.S __aarch64_swp1_acq_rel.S __aarch64_swp1_rel.S __aarch64_swp1_relax.S __aarch64_swp2_acq.S __aarch64_swp2_acq_rel.S __aarch64_swp2_rel.S __aarch64_swp2_relax.S __aarch64_swp4_acq.S __aarch64_swp4_acq_rel.S __aarch64_swp4_rel.S __aarch64_swp4_relax.S __aarch64_swp8_acq.S __aarch64_swp8_acq_rel.S __aarch64_swp8_rel.S __aarch64_swp8_relax.S Removed Files: src/common/lib/libc/arch/aarch64/atomic: atomic_swap_acq_16.S atomic_swap_acq_32.S atomic_swap_acq_64.S atomic_swap_acq_8.S atomic_swap_acq_rel_16.S atomic_swap_acq_rel_32.S atomic_swap_acq_rel_64.S atomic_swap_acq_rel_8.S atomic_swap_rel_16.S atomic_swap_rel_32.S atomic_swap_rel_64.S atomic_swap_rel_8.S Log Message: Do previous differently as the API is different. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/aarch64/atomic/Makefile.inc cvs rdiff -u -r0 -r1.1 \ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp1_acq.S \ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp1_acq_rel.S \ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp1_rel.S \ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp1_relax.S \ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp2_acq.S \ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp2_acq_rel.S \ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp2_rel.S \ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp2_relax.S \ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp4_acq.S \ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp4_acq_rel.S \ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp4_rel.S \ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp4_relax.S \ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp8_acq.S \ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp8_acq_rel.S \ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp8_rel.S \ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp8_relax.S cvs rdiff -u -r1.3 -r1.4 \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_16.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_32.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_64.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_8.S cvs rdiff -u -r1.1 -r0 \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_acq_16.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_acq_32.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_acq_64.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_acq_8.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_acq_rel_16.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_acq_rel_32.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_acq_rel_64.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_acq_rel_8.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_rel_16.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_rel_32.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_rel_64.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_rel_8.S 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/aarch64/atomic/Makefile.inc diff -u src/common/lib/libc/arch/aarch64/atomic/Makefile.inc:1.2 src/common/lib/libc/arch/aarch64/atomic/Makefile.inc:1.3 --- src/common/lib/libc/arch/aarch64/atomic/Makefile.inc:1.2 Wed Apr 21 07:31:37 2021 +++ src/common/lib/libc/arch/aarch64/atomic/Makefile.inc Wed Apr 21 16:23:47 2021 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.inc,v 1.2 2021/04/21 07:31:37 skrll Exp $ +# $NetBSD: Makefile.inc,v 1.3 2021/04/21 16:23:47 skrll Exp $ .if defined(LIB) && (${LIB} == "kern" || ${LIB} == "c" || ${LIB} == "pthread" \ || ${LIB} == "rump") @@ -12,10 +12,10 @@ SRCS.atomic+= atomic_dec_32.S atomic_dec SRCS.atomic+= atomic_inc_32.S atomic_inc_64.S SRCS.atomic+= membar_ops.S #and cas nand or sub swap xor -.for op in swap -.for sz in 8 16 32 64 -.for ar in acq rel acq_rel -SRCS.atomic+= atomic_${op}_${ar}_${sz}.S +.for op in swp +.for sz in 1 2 4 8 +.for ar in relax acq rel acq_rel +SRCS.atomic+= __aarch64_${op}${sz}_${ar}.S .endfor .endfor .endfor Index: src/common/lib/libc/arch/aarch64/atomic/atomic_swap_16.S diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_swap_16.S:1.3 src/common/lib/libc/arch/aarch64/atomic/atomic_swap_16.S:1.4 --- src/common/lib/libc/arch/aarch64/atomic/atomic_swap_16.S:1.3 Wed Apr 21 07:31:37 2021
CVS commit: src/common/lib/libc/arch/aarch64/atomic
Module Name:src Committed By: skrll Date: Wed Apr 21 07:31:38 UTC 2021 Modified Files: src/common/lib/libc/arch/aarch64/atomic: Makefile.inc atomic_swap_16.S atomic_swap_32.S atomic_swap_64.S atomic_swap_8.S Added Files: src/common/lib/libc/arch/aarch64/atomic: atomic_swap_acq_16.S atomic_swap_acq_32.S atomic_swap_acq_64.S atomic_swap_acq_8.S atomic_swap_acq_rel_16.S atomic_swap_acq_rel_32.S atomic_swap_acq_rel_64.S atomic_swap_acq_rel_8.S atomic_swap_rel_16.S atomic_swap_rel_32.S atomic_swap_rel_64.S atomic_swap_rel_8.S Log Message: Provide some more operations that are part of compiler lse.S. This is incomplete, but at least covers all the atomic_swap ops and allows the aa64 kernel to link with gcc 10. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/common/lib/libc/arch/aarch64/atomic/Makefile.inc cvs rdiff -u -r1.2 -r1.3 \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_16.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_32.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_64.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_8.S cvs rdiff -u -r0 -r1.1 \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_acq_16.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_acq_32.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_acq_64.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_acq_8.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_acq_rel_16.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_acq_rel_32.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_acq_rel_64.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_acq_rel_8.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_rel_16.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_rel_32.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_rel_64.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_rel_8.S 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/aarch64/atomic/Makefile.inc diff -u src/common/lib/libc/arch/aarch64/atomic/Makefile.inc:1.1 src/common/lib/libc/arch/aarch64/atomic/Makefile.inc:1.2 --- src/common/lib/libc/arch/aarch64/atomic/Makefile.inc:1.1 Sun Aug 10 05:47:35 2014 +++ src/common/lib/libc/arch/aarch64/atomic/Makefile.inc Wed Apr 21 07:31:37 2021 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.inc,v 1.1 2014/08/10 05:47:35 matt Exp $ +# $NetBSD: Makefile.inc,v 1.2 2021/04/21 07:31:37 skrll Exp $ .if defined(LIB) && (${LIB} == "kern" || ${LIB} == "c" || ${LIB} == "pthread" \ || ${LIB} == "rump") @@ -11,6 +11,14 @@ SRCS.atomic+= atomic_${op}_${sz}.S SRCS.atomic+= atomic_dec_32.S atomic_dec_64.S SRCS.atomic+= atomic_inc_32.S atomic_inc_64.S SRCS.atomic+= membar_ops.S +#and cas nand or sub swap xor +.for op in swap +.for sz in 8 16 32 64 +.for ar in acq rel acq_rel +SRCS.atomic+= atomic_${op}_${ar}_${sz}.S +.endfor +.endfor +.endfor #.for op in add and nand or sub xor #SRCS.atomic+= sync_fetch_and_${op}_8.S #.endfor Index: src/common/lib/libc/arch/aarch64/atomic/atomic_swap_16.S diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_swap_16.S:1.2 src/common/lib/libc/arch/aarch64/atomic/atomic_swap_16.S:1.3 --- src/common/lib/libc/arch/aarch64/atomic/atomic_swap_16.S:1.2 Wed Aug 12 12:59:57 2020 +++ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_16.S Wed Apr 21 07:31:37 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_swap_16.S,v 1.2 2020/08/12 12:59:57 skrll Exp $ */ +/* $NetBSD: atomic_swap_16.S,v 1.3 2021/04/21 07:31:37 skrll Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -43,6 +43,7 @@ END(_atomic_swap_16) ATOMIC_OP_ALIAS(atomic_swap_16,_atomic_swap_16) ATOMIC_OP_ALIAS(atomic_swap_short,_atomic_swap_16) ATOMIC_OP_ALIAS(atomic_swap_ushort,_atomic_swap_16) +ATOMIC_OP_ALIAS(__aarch64_swp2_relax,_atomic_swap_16) STRONG_ALIAS(__sync_lock_test_and_set_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/aarch64/atomic/atomic_swap_32.S diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_swap_32.S:1.2 src/common/lib/libc/arch/aarch64/atomic/atomic_swap_32.S:1.3 --- src/common/lib/libc/arch/aarch64/atomic/atomic_swap_32.S:1.2 Wed Aug 12 12:59:57 2020 +++ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_32.S Wed Apr 21 07:31:37 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_swap_32.S,v 1.2 2020/08/12 12:59:57 skrll Exp $ */ +/* $NetBSD: atomic_swap_32.S,v 1.3 2021/04/21 07:31:37 skrll Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -42,6 +42,7 @@ END(_atomic_swap_32) ATOMIC_OP_ALIAS(atomic_swap_32,_atomic_swap_32) ATOMIC_OP_ALIAS(atomic_swap_uint,_atomic_swap_32) +ATOMIC_OP_ALIAS(__aarch64_swp4_relax,_atomic_swap_32)
CVS commit: src/common/lib/libc/arch/arm/gen
Module Name:src Committed By: dholland Date: Fri Dec 11 09:02:33 UTC 2020 Modified Files: src/common/lib/libc/arch/arm/gen: byte_swap_4.S Log Message: arm bswap32: fix fatal typo in thumb code (PR 55854) To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/common/lib/libc/arch/arm/gen/byte_swap_4.S 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/gen/byte_swap_4.S diff -u src/common/lib/libc/arch/arm/gen/byte_swap_4.S:1.8 src/common/lib/libc/arch/arm/gen/byte_swap_4.S:1.9 --- src/common/lib/libc/arch/arm/gen/byte_swap_4.S:1.8 Wed Dec 9 02:46:57 2020 +++ src/common/lib/libc/arch/arm/gen/byte_swap_4.S Fri Dec 11 09:02:33 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: byte_swap_4.S,v 1.8 2020/12/09 02:46:57 dholland Exp $ */ +/* $NetBSD: byte_swap_4.S,v 1.9 2020/12/11 09:02:33 dholland Exp $ */ /*- * Copyright (c) 1997 The NetBSD Foundation, Inc. @@ -46,7 +46,7 @@ ENTRY(FUNC) eor r0, r0, r1, lsr #8 /* a.d.c.b ^ 0.db.0.db -> a.b.c.d */ #else movs r3, #16 - lsls r1, r0, #8 /* d.c.b.a -> c.b.a.0 /* + lsls r1, r0, #8 /* d.c.b.a -> c.b.a.0 */ lsrs r0, r0, #8 /* d.c.b.a -> 0.d.c.b */ rors r1, r3 /* c.b.a.0 -> a.0.c.b */ rors r0, r3 /* 0.d.c.b -> c.b.0.d */
CVS commit: src/common/lib/libc/arch/arm/gen
Module Name:src Committed By: dholland Date: Wed Dec 9 02:46:57 UTC 2020 Modified Files: src/common/lib/libc/arch/arm/gen: byte_swap_4.S Log Message: arm bswap32: Improve the comments showing the byte flow. It's confusing to use 1-4 for bytes 1-4 and then 0 for literal zero, so use a-d for bytes 1-4. To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/arm/gen/byte_swap_4.S 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/gen/byte_swap_4.S diff -u src/common/lib/libc/arch/arm/gen/byte_swap_4.S:1.7 src/common/lib/libc/arch/arm/gen/byte_swap_4.S:1.8 --- src/common/lib/libc/arch/arm/gen/byte_swap_4.S:1.7 Mon Aug 19 03:44:47 2013 +++ src/common/lib/libc/arch/arm/gen/byte_swap_4.S Wed Dec 9 02:46:57 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: byte_swap_4.S,v 1.7 2013/08/19 03:44:47 matt Exp $ */ +/* $NetBSD: byte_swap_4.S,v 1.8 2020/12/09 02:46:57 dholland Exp $ */ /*- * Copyright (c) 1997 The NetBSD Foundation, Inc. @@ -40,21 +40,21 @@ ENTRY(FUNC) #ifdef _ARM_ARCH_6 rev r0, r0 #elif !defined(__thumb__) - eor r1, r0, r0, ror #16 /* 4.3.2.1 -> 42.31.42.31 */ - bic r1, r1, #0x00FF /* 42.31.42.31 -> 42.0.42.31 */ - mov r0, r0, ror #8 /* 4.3.2.1 -> 1.4.3.2 */ - eor r0, r0, r1, lsr #8 /* 1.4.3.2 ^ 0.42.0.42 -> 1.2.3.4 */ + eor r1, r0, r0, ror #16 /* d.c.b.a -> db.ca.db.ca */ + bic r1, r1, #0x00FF /* db.ca.db.ca -> db.0.db.ca */ + mov r0, r0, ror #8 /* d.c.b.a -> a.d.c.b */ + eor r0, r0, r1, lsr #8 /* a.d.c.b ^ 0.db.0.db -> a.b.c.d */ #else movs r3, #16 - lsls r1, r0, #8 /* 4.3.2.1 -> 3.2.1.0 /* - lsrs r0, r0, #8 /* 4.3.2.1 -> 0.4.3.2 */ - rors r1, r3 /* 3.2.1.0 -> 1.0.3.2 */ - rors r0, r3 /* 0.4.3.2 -> 3.2.0.4 */ - lsrs r1, r1, #8 /* 1.0.3.2 -> 0.1.0.3 */ - lsls r1, r1, #8 /* 0.1.0.3 -> 1.0.3.0 */ - lsls r0, r0, #8 /* 3.2.0.4 -> 2.0.4.0 */ - lsrs r0, r0, #8 /* 2.0.4.0 -> 0.2.0.4 */ - orrs r0, r0, r1 /* 1.0.3.0 | 0.2.0.4 -> 1.2.3.4 */ + lsls r1, r0, #8 /* d.c.b.a -> c.b.a.0 /* + lsrs r0, r0, #8 /* d.c.b.a -> 0.d.c.b */ + rors r1, r3 /* c.b.a.0 -> a.0.c.b */ + rors r0, r3 /* 0.d.c.b -> c.b.0.d */ + lsrs r1, r1, #8 /* a.0.c.b -> 0.a.0.c */ + lsls r1, r1, #8 /* 0.a.0.c -> a.0.c.0 */ + lsls r0, r0, #8 /* c.b.0.d -> b.0.d.0 */ + lsrs r0, r0, #8 /* b.0.d.0 -> 0.b.0.d */ + orrs r0, r0, r1 /* a.0.c.0 | 0.b.0.d -> a.b.c.d */ #endif RET END(FUNC)
CVS commit: src/common/lib/libc/arch/aarch64/atomic
Module Name:src Committed By: skrll Date: Tue Oct 13 21:22:12 UTC 2020 Modified Files: src/common/lib/libc/arch/aarch64/atomic: membar_ops.S Log Message: Use the correct barriers - all of membar_{sync,producer,consumer} have less scope than before. LGTM from riastradh To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/common/lib/libc/arch/aarch64/atomic/membar_ops.S 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/aarch64/atomic/membar_ops.S diff -u src/common/lib/libc/arch/aarch64/atomic/membar_ops.S:1.1 src/common/lib/libc/arch/aarch64/atomic/membar_ops.S:1.2 --- src/common/lib/libc/arch/aarch64/atomic/membar_ops.S:1.1 Sun Aug 10 05:47:35 2014 +++ src/common/lib/libc/arch/aarch64/atomic/membar_ops.S Tue Oct 13 21:22:12 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: membar_ops.S,v 1.1 2014/08/10 05:47:35 matt Exp $ */ +/* $NetBSD: membar_ops.S,v 1.2 2020/10/13 21:22:12 skrll Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -32,24 +32,28 @@ #include "atomic_op_asm.h" ENTRY_NP(_membar_producer) - dsb sy + dmb ishst ret END(_membar_producer) ATOMIC_OP_ALIAS(membar_producer,_membar_producer) ATOMIC_OP_ALIAS(membar_write,_membar_producer) STRONG_ALIAS(_membar_write,_membar_producer) +ENTRY_NP(_membar_consumer) + dmb ishld + ret +END(_membar_producer) +ATOMIC_OP_ALIAS(membar_consumer,_membar_consumer) +ATOMIC_OP_ALIAS(membar_read,_membar_consumer) +STRONG_ALIAS(_membar_read,_membar_consumer) + ENTRY_NP(_membar_sync) - dmb sy + dmb ish ret END(_membar_sync) ATOMIC_OP_ALIAS(membar_sync,_membar_sync) ATOMIC_OP_ALIAS(membar_enter,_membar_sync) ATOMIC_OP_ALIAS(membar_exit,_membar_sync) -ATOMIC_OP_ALIAS(membar_consumer,_membar_sync) -ATOMIC_OP_ALIAS(membar_read,_membar_sync) STRONG_ALIAS(__sync_synchronize,_membar_sync) STRONG_ALIAS(_membar_enter,_membar_sync) STRONG_ALIAS(_membar_exit,_membar_sync) -STRONG_ALIAS(_membar_consumer,_membar_sync) -STRONG_ALIAS(_membar_read,_membar_sync)
CVS commit: src/common/lib/libc/arch/aarch64/atomic
Module Name:src Committed By: skrll Date: Tue Oct 13 21:17:35 UTC 2020 Modified Files: src/common/lib/libc/arch/aarch64/atomic: atomic_op_asm.h Log Message: Remove memory barriers from the atomic ops macros in the same way as was done for the other atomic ops earlier. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 \ src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h 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/aarch64/atomic/atomic_op_asm.h diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h:1.4 src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h:1.5 --- src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h:1.4 Wed Oct 7 07:34:29 2020 +++ src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h Tue Oct 13 21:17:35 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_op_asm.h,v 1.4 2020/10/07 07:34:29 skrll Exp $ */ +/* $NetBSD: atomic_op_asm.h,v 1.5 2020/10/13 21:17:35 skrll Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -41,7 +41,6 @@ ENTRY_NP(_atomic_##OP##_8) ;\ INSN w2, w0, w1 /* calculate new value */ ;\ stxrb w3, w2, [x4] /* try to store */ ;\ cbnz w3, 1b /* succeed? no, try again */ ;\ - dmb st ;\ ret/* return old value */ ;\ END(_atomic_##OP##_8) @@ -52,7 +51,6 @@ ENTRY_NP(_atomic_##OP##_8_nv) ;\ INSN w0, w0, w1 /* calc new (return) value */ ;\ stxrb w3, w0, [x4] /* try to store */ ;\ cbnz w3, 1b /* succeed? no, try again */ ;\ - dmb sy ;\ ret/* return new value */ ;\ END(_atomic_##OP##_8_nv) @@ -63,7 +61,6 @@ ENTRY_NP(_atomic_##OP##_16) ;\ INSN w2, w0, w1 /* calculate new value */ ;\ stxrh w3, w2, [x4] /* try to store */ ;\ cbnz w3, 1b /* succeed? no, try again */ ;\ - dmb st ;\ ret/* return old value */ ;\ END(_atomic_##OP##_16) @@ -74,7 +71,6 @@ ENTRY_NP(_atomic_##OP##_16_nv) ;\ INSN w0, w0, w1 /* calc new (return) value */ ;\ stxrh w3, w0, [x4] /* try to store */ ;\ cbnz w3, 1b /* succeed? no, try again */ ;\ - dmb sy ;\ ret/* return new value */ ;\ END(_atomic_##OP##_16_nv) @@ -85,7 +81,6 @@ ENTRY_NP(_atomic_##OP##_32) ;\ INSN w2, w0, w1 /* calculate new value */ ;\ stxr w3, w2, [x4] /* try to store */ ;\ cbnz w3, 1b /* succeed? no, try again */ ;\ - dmb st ;\ ret/* return old value */ ;\ END(_atomic_##OP##_32) @@ -96,7 +91,6 @@ ENTRY_NP(_atomic_##OP##_32_nv) ;\ INSN w0, w0, w1 /* calc new (return) value */ ;\ stxr w3, w0, [x4] /* try to store */ ;\ cbnz w3, 1b /* succeed? no, try again? */ ;\ - dmb sy ;\ ret/* return new value */ ;\ END(_atomic_##OP##_32_nv) @@ -107,7 +101,6 @@ ENTRY_NP(_atomic_##OP##_64) ;\ INSN x2, x0, x1 /* calculate new value */ ;\ stxr w3, x2, [x4] /* try to store */ ;\ cbnz w3, 1b /* succeed? no, try again */ ;\ - dmb st ;\ ret/* return old value */ ;\ END(_atomic_##OP##_64) @@ -118,7 +111,6 @@ ENTRY_NP(_atomic_##OP##_64_nv) ;\ INSN x0, x0, x1 /* calc new (return) value */ ;\ stxr w3, x0, [x4] /* try to store */ ;\ cbnz w3, 1b /* succeed? no, try again? */ ;\ - dmb sy ;\ ret/* return new value */ ;\ END(_atomic_##OP##_64_nv)
CVS commit: src/common/lib/libc/arch/aarch64/atomic
Module Name:src Committed By: skrll Date: Wed Oct 7 07:34:30 UTC 2020 Modified Files: src/common/lib/libc/arch/aarch64/atomic: atomic_op_asm.h Log Message: Comment nit To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 \ src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h 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/aarch64/atomic/atomic_op_asm.h diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h:1.3 src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h:1.4 --- src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h:1.3 Fri Feb 8 06:56:56 2019 +++ src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h Wed Oct 7 07:34:29 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_op_asm.h,v 1.3 2019/02/08 06:56:56 ryo Exp $ */ +/* $NetBSD: atomic_op_asm.h,v 1.4 2020/10/07 07:34:29 skrll Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -47,7 +47,7 @@ END(_atomic_##OP##_8) #define ATOMIC_OP8_NV(OP, INSN) \ ENTRY_NP(_atomic_##OP##_8_nv) ;\ - mov x4, x0 /* need r0 for return value */ ;\ + mov x4, x0 /* need x0 for return value */ ;\ 1: ldxrb w0, [x4] /* load old value */ ;\ INSN w0, w0, w1 /* calc new (return) value */ ;\ stxrb w3, w0, [x4] /* try to store */ ;\ @@ -69,7 +69,7 @@ END(_atomic_##OP##_16) #define ATOMIC_OP16_NV(OP, INSN) \ ENTRY_NP(_atomic_##OP##_16_nv) ;\ - mov x4, x0 /* need r0 for return value */ ;\ + mov x4, x0 /* need x0 for return value */ ;\ 1: ldxrh w0, [x4] /* load old value */ ;\ INSN w0, w0, w1 /* calc new (return) value */ ;\ stxrh w3, w0, [x4] /* try to store */ ;\ @@ -91,7 +91,7 @@ END(_atomic_##OP##_32) #define ATOMIC_OP32_NV(OP, INSN) \ ENTRY_NP(_atomic_##OP##_32_nv) ;\ - mov x4, x0 /* need r0 for return value */ ;\ + mov x4, x0 /* need x0 for return value */ ;\ 1: ldxr w0, [x4] /* load old value */ ;\ INSN w0, w0, w1 /* calc new (return) value */ ;\ stxr w3, w0, [x4] /* try to store */ ;\ @@ -113,7 +113,7 @@ END(_atomic_##OP##_64) #define ATOMIC_OP64_NV(OP, INSN) \ ENTRY_NP(_atomic_##OP##_64_nv) ;\ - mov x4, x0 /* need r0 for return value */ ;\ + mov x4, x0 /* need x0 for return value */ ;\ 1: ldxr x0, [x4] /* load old value */ ;\ INSN x0, x0, x1 /* calc new (return) value */ ;\ stxr w3, x0, [x4] /* try to store */ ;\
CVS commit: src/common/lib/libc/arch/aarch64/atomic
Module Name:src Committed By: skrll Date: Wed Oct 7 07:31:47 UTC 2020 Modified Files: src/common/lib/libc/arch/aarch64/atomic: atomic_cas_16.S atomic_cas_32.S atomic_cas_64.S atomic_cas_8.S Log Message: Comment nit To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 \ src/common/lib/libc/arch/aarch64/atomic/atomic_cas_16.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_cas_32.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_cas_8.S cvs rdiff -u -r1.4 -r1.5 \ src/common/lib/libc/arch/aarch64/atomic/atomic_cas_64.S 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/aarch64/atomic/atomic_cas_16.S diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_cas_16.S:1.2 src/common/lib/libc/arch/aarch64/atomic/atomic_cas_16.S:1.3 --- src/common/lib/libc/arch/aarch64/atomic/atomic_cas_16.S:1.2 Wed Aug 12 12:59:57 2020 +++ src/common/lib/libc/arch/aarch64/atomic/atomic_cas_16.S Wed Oct 7 07:31:47 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_cas_16.S,v 1.2 2020/08/12 12:59:57 skrll Exp $ */ +/* $NetBSD: atomic_cas_16.S,v 1.3 2020/10/07 07:31:47 skrll Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -32,7 +32,7 @@ #include "atomic_op_asm.h" ENTRY_NP(_atomic_cas_16) - mov x4, x0 /* we need r0 for return value */ + mov x4, x0 /* we need x0 for return value */ 1: ldxrh w0, [x4] /* load old value */ cmp w0, w1 /* compare? */ b.ne 2f Index: src/common/lib/libc/arch/aarch64/atomic/atomic_cas_32.S diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_cas_32.S:1.2 src/common/lib/libc/arch/aarch64/atomic/atomic_cas_32.S:1.3 --- src/common/lib/libc/arch/aarch64/atomic/atomic_cas_32.S:1.2 Wed Aug 12 12:59:57 2020 +++ src/common/lib/libc/arch/aarch64/atomic/atomic_cas_32.S Wed Oct 7 07:31:47 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_cas_32.S,v 1.2 2020/08/12 12:59:57 skrll Exp $ */ +/* $NetBSD: atomic_cas_32.S,v 1.3 2020/10/07 07:31:47 skrll Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -32,7 +32,7 @@ #include "atomic_op_asm.h" ENTRY_NP(_atomic_cas_32) - mov x4, x0 /* we need r0 for return value */ + mov x4, x0 /* we need x0 for return value */ 1: ldxr w0, [x4] /* load old value */ cmp w0, w1 /* compare? */ b.ne 2f /* return if different */ Index: src/common/lib/libc/arch/aarch64/atomic/atomic_cas_8.S diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_cas_8.S:1.2 src/common/lib/libc/arch/aarch64/atomic/atomic_cas_8.S:1.3 --- src/common/lib/libc/arch/aarch64/atomic/atomic_cas_8.S:1.2 Wed Aug 12 12:59:57 2020 +++ src/common/lib/libc/arch/aarch64/atomic/atomic_cas_8.S Wed Oct 7 07:31:47 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_cas_8.S,v 1.2 2020/08/12 12:59:57 skrll Exp $ */ +/* $NetBSD: atomic_cas_8.S,v 1.3 2020/10/07 07:31:47 skrll Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -32,7 +32,7 @@ #include "atomic_op_asm.h" ENTRY_NP(_atomic_cas_8) - mov x4, x0 /* we need r0 for return value */ + mov x4, x0 /* we need x0 for return value */ 1: ldxrb w0, [x4] /* load old value */ cmp w0, w1 /* compare? */ b.ne 2f Index: src/common/lib/libc/arch/aarch64/atomic/atomic_cas_64.S diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_cas_64.S:1.4 src/common/lib/libc/arch/aarch64/atomic/atomic_cas_64.S:1.5 --- src/common/lib/libc/arch/aarch64/atomic/atomic_cas_64.S:1.4 Wed Aug 12 12:59:57 2020 +++ src/common/lib/libc/arch/aarch64/atomic/atomic_cas_64.S Wed Oct 7 07:31:47 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_cas_64.S,v 1.4 2020/08/12 12:59:57 skrll Exp $ */ +/* $NetBSD: atomic_cas_64.S,v 1.5 2020/10/07 07:31:47 skrll Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -32,7 +32,7 @@ #include "atomic_op_asm.h" ENTRY_NP(_atomic_cas_64) - mov x4, x0 /* we need r0 for return value */ + mov x4, x0 /* we need x0 for return value */ 1: ldxr x0, [x4] /* load old value */ cmp x0, x1 /* compare? */ b.ne 2f /* return if different */
CVS commit: src/common/lib/libc/arch/aarch64/string
Module Name:src Committed By: jakllsch Date: Wed Sep 9 14:49:27 UTC 2020 Modified Files: src/common/lib/libc/arch/aarch64/string: strlen.S Log Message: Re-do previous aarch64eb strlen fix more simply and correctly. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/aarch64/string/strlen.S 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/aarch64/string/strlen.S diff -u src/common/lib/libc/arch/aarch64/string/strlen.S:1.4 src/common/lib/libc/arch/aarch64/string/strlen.S:1.5 --- src/common/lib/libc/arch/aarch64/string/strlen.S:1.4 Sat Sep 5 20:24:43 2020 +++ src/common/lib/libc/arch/aarch64/string/strlen.S Wed Sep 9 14:49:27 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: strlen.S,v 1.4 2020/09/05 20:24:43 jakllsch Exp $ */ +/* $NetBSD: strlen.S,v 1.5 2020/09/09 14:49:27 jakllsch Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include -RCSID("$NetBSD: strlen.S,v 1.4 2020/09/05 20:24:43 jakllsch Exp $") +RCSID("$NetBSD: strlen.S,v 1.5 2020/09/09 14:49:27 jakllsch Exp $") #ifdef STRNLEN #define FUNCNAME strnlen @@ -66,12 +66,11 @@ ENTRY(FUNCNAME) */ add x4, x4, x0 /* make dword aligned */ ldr x7, [x4], #8 /* load dword */ - lsl x3, x3, #3 /* convert bytes to bits */ #ifdef __AARCH64EB__ - lsr x5, x11, x3 /* make mask for BE */ -#else - lsl x5, x11, x3 /* make mask for LE */ + rev x7, x7 /* convert to LE */ #endif + lsl x3, x3, #3 /* convert bytes to bits */ + lsl x5, x11, x3 /* make mask for LE */ eor x5, x5, x11 /* invert mask */ orr x7, x7, x5 /* prevent NULs */ b .Lstrlen_dword_loop_noload @@ -82,6 +81,9 @@ ENTRY(FUNCNAME) b.hs .Lstrlen_done #endif ldr x7, [x4], #8 /* load dword */ +#ifdef __AARCH64EB__ + rev x7, x7 /* convert to LE */ +#endif .Lstrlen_dword_loop_noload: /* * Use the formula (X - 1) & ~(X | 0x7f) to find NUL bytes. @@ -96,14 +98,6 @@ ENTRY(FUNCNAME) /* * We know there is a NUL in this dword. Use clz to find it. */ -#ifdef __AARCH64EB__ - /* avoid BE problem due to carry propagation if last non-NUL is \x01 */ - ldr x7, [x4, #-8] /* reload dword */ - rev x7, x7 /* byte swap */ - sub x6, x7, x11 /* a = X - 1 */ - orr x7, x7, #MASK8_0x7f /* b = X | 0x7f */ - bic x6, x6, x7 /* a & ~b */ -#endif rev x6, x6 /* convert to BE */ clz x6, x6 /* find null byte */ add x0, x0, x6, lsr #3 /* add offset to the length */
CVS commit: src/common/lib/libc/arch/aarch64/string
Module Name:src Committed By: jakllsch Date: Sat Sep 5 20:24:43 UTC 2020 Modified Files: src/common/lib/libc/arch/aarch64/string: strlen.S Log Message: Fix a broken corner case of strlen()/strnlen() on aarch64eb Previously a string such as "\x1\x1\x1\x1\x1\x1\x1" would count as 0 instead of 7 on BE. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/aarch64/string/strlen.S 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/aarch64/string/strlen.S diff -u src/common/lib/libc/arch/aarch64/string/strlen.S:1.3 src/common/lib/libc/arch/aarch64/string/strlen.S:1.4 --- src/common/lib/libc/arch/aarch64/string/strlen.S:1.3 Wed Aug 1 17:09:26 2018 +++ src/common/lib/libc/arch/aarch64/string/strlen.S Sat Sep 5 20:24:43 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: strlen.S,v 1.3 2018/08/01 17:09:26 ryo Exp $ */ +/* $NetBSD: strlen.S,v 1.4 2020/09/05 20:24:43 jakllsch Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include -RCSID("$NetBSD: strlen.S,v 1.3 2018/08/01 17:09:26 ryo Exp $") +RCSID("$NetBSD: strlen.S,v 1.4 2020/09/05 20:24:43 jakllsch Exp $") #ifdef STRNLEN #define FUNCNAME strnlen @@ -96,9 +96,15 @@ ENTRY(FUNCNAME) /* * We know there is a NUL in this dword. Use clz to find it. */ -#ifdef __AARCH64EL__ - rev x6, x6 /* convert to BE */ +#ifdef __AARCH64EB__ + /* avoid BE problem due to carry propagation if last non-NUL is \x01 */ + ldr x7, [x4, #-8] /* reload dword */ + rev x7, x7 /* byte swap */ + sub x6, x7, x11 /* a = X - 1 */ + orr x7, x7, #MASK8_0x7f /* b = X | 0x7f */ + bic x6, x6, x7 /* a & ~b */ #endif + rev x6, x6 /* convert to BE */ clz x6, x6 /* find null byte */ add x0, x0, x6, lsr #3 /* add offset to the length */
CVS commit: src/common/lib/libc/arch/aarch64/gen
Module Name:src Committed By: jakllsch Date: Thu Sep 3 16:45:50 UTC 2020 Removed Files: src/common/lib/libc/arch/aarch64/gen: clzdi2.S ctzdi2.S ffsdi2.S Log Message: Remove unused assembly source files To generate a diff of this commit: cvs rdiff -u -r1.2 -r0 src/common/lib/libc/arch/aarch64/gen/clzdi2.S cvs rdiff -u -r1.1 -r0 src/common/lib/libc/arch/aarch64/gen/ctzdi2.S \ src/common/lib/libc/arch/aarch64/gen/ffsdi2.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/common/lib/libc/arch/aarch64/gen
Module Name:src Committed By: jakllsch Date: Wed Sep 2 15:43:06 UTC 2020 Modified Files: src/common/lib/libc/arch/aarch64/gen: clzdi2.S Log Message: Fix typo/pasteo in aarch64 clzdi2() END() To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/common/lib/libc/arch/aarch64/gen/clzdi2.S 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/aarch64/gen/clzdi2.S diff -u src/common/lib/libc/arch/aarch64/gen/clzdi2.S:1.1 src/common/lib/libc/arch/aarch64/gen/clzdi2.S:1.2 --- src/common/lib/libc/arch/aarch64/gen/clzdi2.S:1.1 Sun Aug 10 05:47:35 2014 +++ src/common/lib/libc/arch/aarch64/gen/clzdi2.S Wed Sep 2 15:43:06 2020 @@ -1,10 +1,10 @@ -/* $NetBSD: clzdi2.S,v 1.1 2014/08/10 05:47:35 matt Exp $ */ +/* $NetBSD: clzdi2.S,v 1.2 2020/09/02 15:43:06 jakllsch Exp $ */ #include -RCSID("$NetBSD: clzdi2.S,v 1.1 2014/08/10 05:47:35 matt Exp $") +RCSID("$NetBSD: clzdi2.S,v 1.2 2020/09/02 15:43:06 jakllsch Exp $") ENTRY(clzdi2) clz x0, x0 ret -END(clsdi2) +END(clzdi2)
CVS commit: src/common/lib/libc/arch/aarch64/atomic
Module Name:src Committed By: skrll Date: Wed Aug 12 12:59:57 UTC 2020 Modified Files: src/common/lib/libc/arch/aarch64/atomic: atomic_cas_16.S atomic_cas_32.S atomic_cas_64.S atomic_cas_8.S atomic_dec_32.S atomic_dec_64.S atomic_inc_32.S atomic_inc_64.S atomic_nand_16.S atomic_nand_32.S atomic_nand_64.S atomic_nand_8.S atomic_swap_16.S atomic_swap_32.S atomic_swap_64.S atomic_swap_8.S Log Message: Part I of ad@'s performance improvements for aarch64 - Remove memory barriers from the atomic ops. I don't understand why those are there. Is it some architectural thing, or for a CPU bug, or just over-caution maybe? They're not needed for correctness. - Have unlikely conditional branches go forwards to help the static branch predictor. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 \ src/common/lib/libc/arch/aarch64/atomic/atomic_cas_16.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_cas_32.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_cas_8.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_dec_32.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_dec_64.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_inc_32.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_inc_64.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_nand_16.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_nand_32.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_nand_64.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_nand_8.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_16.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_32.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_64.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_8.S cvs rdiff -u -r1.3 -r1.4 \ src/common/lib/libc/arch/aarch64/atomic/atomic_cas_64.S 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/aarch64/atomic/atomic_cas_16.S diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_cas_16.S:1.1 src/common/lib/libc/arch/aarch64/atomic/atomic_cas_16.S:1.2 --- src/common/lib/libc/arch/aarch64/atomic/atomic_cas_16.S:1.1 Sun Aug 10 05:47:35 2014 +++ src/common/lib/libc/arch/aarch64/atomic/atomic_cas_16.S Wed Aug 12 12:59:57 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_cas_16.S,v 1.1 2014/08/10 05:47:35 matt Exp $ */ +/* $NetBSD: atomic_cas_16.S,v 1.2 2020/08/12 12:59:57 skrll Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -37,9 +37,9 @@ ENTRY_NP(_atomic_cas_16) cmp w0, w1 /* compare? */ b.ne 2f stxrh w3, w2, [x4] /* store new value */ - cbnz w3, 1b /* succeed? nope, try again. */ - dmb st /* data memory barrier */ + cbnz w3, 3f /* succeed? nope, try again. */ 2: ret/* return. */ +3: b 1b END(_atomic_cas_16) ATOMIC_OP_ALIAS(atomic_cas_16,_atomic_cas_16) Index: src/common/lib/libc/arch/aarch64/atomic/atomic_cas_32.S diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_cas_32.S:1.1 src/common/lib/libc/arch/aarch64/atomic/atomic_cas_32.S:1.2 --- src/common/lib/libc/arch/aarch64/atomic/atomic_cas_32.S:1.1 Sun Aug 10 05:47:35 2014 +++ src/common/lib/libc/arch/aarch64/atomic/atomic_cas_32.S Wed Aug 12 12:59:57 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_cas_32.S,v 1.1 2014/08/10 05:47:35 matt Exp $ */ +/* $NetBSD: atomic_cas_32.S,v 1.2 2020/08/12 12:59:57 skrll Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -37,9 +37,9 @@ ENTRY_NP(_atomic_cas_32) cmp w0, w1 /* compare? */ b.ne 2f /* return if different */ stxr w3, w2, [x4] /* store new value */ - cbnz w3, 1b /* succeed? nope, try again. */ - dmb st + cbnz w3, 3f /* succeed? nope, try again. */ 2: ret/* return. */ +3: b 1b END(_atomic_cas_32) ATOMIC_OP_ALIAS(atomic_cas_32,_atomic_cas_32) Index: src/common/lib/libc/arch/aarch64/atomic/atomic_cas_8.S diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_cas_8.S:1.1 src/common/lib/libc/arch/aarch64/atomic/atomic_cas_8.S:1.2 --- src/common/lib/libc/arch/aarch64/atomic/atomic_cas_8.S:1.1 Sun Aug 10 05:47:35 2014 +++ src/common/lib/libc/arch/aarch64/atomic/atomic_cas_8.S Wed Aug 12 12:59:57 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_cas_8.S,v 1.1 2014/08/10 05:47:35 matt Exp $ */ +/* $NetBSD: atomic_cas_8.S,v 1.2 2020/08/12 12:59:57 skrll Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -37,9 +37,9 @@ ENTRY_NP(_atomic_cas_8) cmp w0, w1 /* compare? */ b.ne 2f stxrb w3, w2, [x4] /* store new value */ - cbnz w3, 1b /* succeed? nope, try again. */ - dmb st /* data memory barrier */ + cbnz w3, 3f /* succeed? nope, try again. */ 2: ret/* return. */ +3: b 1b END(_atomic_cas_8) ATOMIC_OP_ALIAS(atomic_cas_8,_atomic_cas_8) Index: src/common/lib/libc/arch/aarch64/atomic/atomic_dec_32.S diff -u
CVS commit: src/common/lib/libc/arch/mips/atomic
Module Name:src Committed By: skrll Date: Sat Aug 1 09:26:49 UTC 2020 Modified Files: src/common/lib/libc/arch/mips/atomic: atomic_add.S atomic_and.S atomic_cas.S atomic_cas_up.S atomic_dec.S atomic_inc.S atomic_op_asm.h atomic_or.S atomic_swap.S membar_ops.S Log Message: Trailing whitespace To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/common/lib/libc/arch/mips/atomic/atomic_add.S \ src/common/lib/libc/arch/mips/atomic/atomic_dec.S \ src/common/lib/libc/arch/mips/atomic/atomic_inc.S \ src/common/lib/libc/arch/mips/atomic/atomic_swap.S cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/mips/atomic/atomic_and.S \ src/common/lib/libc/arch/mips/atomic/atomic_or.S cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/mips/atomic/atomic_cas.S cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/mips/atomic/atomic_cas_up.S cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/mips/atomic/atomic_op_asm.h cvs rdiff -u -r1.8 -r1.9 src/common/lib/libc/arch/mips/atomic/membar_ops.S 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/mips/atomic/atomic_add.S diff -u src/common/lib/libc/arch/mips/atomic/atomic_add.S:1.5 src/common/lib/libc/arch/mips/atomic/atomic_add.S:1.6 --- src/common/lib/libc/arch/mips/atomic/atomic_add.S:1.5 Mon Jun 1 23:16:54 2015 +++ src/common/lib/libc/arch/mips/atomic/atomic_add.S Sat Aug 1 09:26:49 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_add.S,v 1.5 2015/06/01 23:16:54 matt Exp $ */ +/* $NetBSD: atomic_add.S,v 1.6 2020/08/01 09:26:49 skrll Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -12,7 +12,7 @@ * 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 @@ -29,7 +29,7 @@ #include #include "atomic_op_asm.h" -RCSID("$NetBSD: atomic_add.S,v 1.5 2015/06/01 23:16:54 matt Exp $") +RCSID("$NetBSD: atomic_add.S,v 1.6 2020/08/01 09:26:49 skrll Exp $") .text .set noreorder Index: src/common/lib/libc/arch/mips/atomic/atomic_dec.S diff -u src/common/lib/libc/arch/mips/atomic/atomic_dec.S:1.5 src/common/lib/libc/arch/mips/atomic/atomic_dec.S:1.6 --- src/common/lib/libc/arch/mips/atomic/atomic_dec.S:1.5 Mon Jun 1 23:16:54 2015 +++ src/common/lib/libc/arch/mips/atomic/atomic_dec.S Sat Aug 1 09:26:49 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_dec.S,v 1.5 2015/06/01 23:16:54 matt Exp $ */ +/* $NetBSD: atomic_dec.S,v 1.6 2020/08/01 09:26:49 skrll Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -12,7 +12,7 @@ * 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 @@ -29,7 +29,7 @@ #include #include "atomic_op_asm.h" -RCSID("$NetBSD: atomic_dec.S,v 1.5 2015/06/01 23:16:54 matt Exp $") +RCSID("$NetBSD: atomic_dec.S,v 1.6 2020/08/01 09:26:49 skrll Exp $") .text .set noreorder Index: src/common/lib/libc/arch/mips/atomic/atomic_inc.S diff -u src/common/lib/libc/arch/mips/atomic/atomic_inc.S:1.5 src/common/lib/libc/arch/mips/atomic/atomic_inc.S:1.6 --- src/common/lib/libc/arch/mips/atomic/atomic_inc.S:1.5 Mon Jun 1 23:16:54 2015 +++ src/common/lib/libc/arch/mips/atomic/atomic_inc.S Sat Aug 1 09:26:49 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_inc.S,v 1.5 2015/06/01 23:16:54 matt Exp $ */ +/* $NetBSD: atomic_inc.S,v 1.6 2020/08/01 09:26:49 skrll Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -12,7 +12,7 @@ * 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 @@ -29,7 +29,7 @@ #include #include "atomic_op_asm.h" -RCSID("$NetBSD: atomic_inc.S,v 1.5 2015/06/01 23:16:54 matt Exp $") +RCSID("$NetBSD: atomic_inc.S,v 1.6 2020/08/01 09:26:49 skrll Exp $") .text .set noreorder Index:
CVS commit: src/common/lib/libc/arch/m68k/gen
Module Name:src Committed By: rin Date: Sun May 31 12:37:07 UTC 2020 Modified Files: src/common/lib/libc/arch/m68k/gen: muldi3.S Log Message: Fix typo in comment. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/common/lib/libc/arch/m68k/gen/muldi3.S 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/m68k/gen/muldi3.S diff -u src/common/lib/libc/arch/m68k/gen/muldi3.S:1.1 src/common/lib/libc/arch/m68k/gen/muldi3.S:1.2 --- src/common/lib/libc/arch/m68k/gen/muldi3.S:1.1 Sun May 31 11:43:37 2020 +++ src/common/lib/libc/arch/m68k/gen/muldi3.S Sun May 31 12:37:07 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: muldi3.S,v 1.1 2020/05/31 11:43:37 rin Exp $ */ +/* $NetBSD: muldi3.S,v 1.2 2020/05/31 12:37:07 rin Exp $ */ /* * Copyright (c) 2020 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include -RCSID("$NetBSD: muldi3.S,v 1.1 2020/05/31 11:43:37 rin Exp $") +RCSID("$NetBSD: muldi3.S,v 1.2 2020/05/31 12:37:07 rin Exp $") | int64_t __muldi3(int64_t X, int64_t Y); | @@ -110,6 +110,6 @@ ENTRY(__muldi3) addl %d2, %d0 | E += C addl %d3, %d0 | %d0 = E + F - moveml (%sp)+, %d2-%d4 | pop %d2-%d6 + moveml (%sp)+, %d2-%d4 | pop %d2-%d4 rts END(__muldi3)
CVS commit: src/common/lib/libc/arch
Module Name:src Committed By: maxv Date: Sun Apr 26 13:59:44 UTC 2020 Modified Files: src/common/lib/libc/arch/i386/atomic: atomic.S src/common/lib/libc/arch/x86_64/atomic: atomic.S Log Message: Remove unused argument in macro. To generate a diff of this commit: cvs rdiff -u -r1.26 -r1.27 src/common/lib/libc/arch/i386/atomic/atomic.S cvs rdiff -u -r1.20 -r1.21 src/common/lib/libc/arch/x86_64/atomic/atomic.S 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/i386/atomic/atomic.S diff -u src/common/lib/libc/arch/i386/atomic/atomic.S:1.26 src/common/lib/libc/arch/i386/atomic/atomic.S:1.27 --- src/common/lib/libc/arch/i386/atomic/atomic.S:1.26 Sun Apr 26 13:54:02 2020 +++ src/common/lib/libc/arch/i386/atomic/atomic.S Sun Apr 26 13:59:44 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic.S,v 1.26 2020/04/26 13:54:02 maxv Exp $ */ +/* $NetBSD: atomic.S,v 1.27 2020/04/26 13:59:44 maxv Exp $ */ /*- * Copyright (c) 2007 The NetBSD Foundation, Inc. @@ -45,10 +45,10 @@ #ifdef _HARDKERNEL #include "opt_xen.h" #include -#define LOCK(n) HOTPATCH(HP_NAME_NOLOCK, 1); lock +#define LOCK HOTPATCH(HP_NAME_NOLOCK, 1); lock #define ENDLABEL(a) _ALIGN_TEXT; LABEL(a) #else -#define LOCK(n) lock +#define LOCK lock #define ENDLABEL(a) /* nothing */ #endif @@ -57,7 +57,7 @@ ENTRY(_atomic_add_32) movl 4(%esp), %edx movl 8(%esp), %eax - LOCK(1) + LOCK addl %eax, (%edx) ret END(_atomic_add_32) @@ -66,7 +66,7 @@ ENTRY(_atomic_add_32_nv) movl 4(%esp), %edx movl 8(%esp), %eax movl %eax, %ecx - LOCK(2) + LOCK xaddl %eax, (%edx) addl %ecx, %eax ret @@ -75,7 +75,7 @@ END(_atomic_add_32_nv) ENTRY(_atomic_and_32) movl 4(%esp), %edx movl 8(%esp), %eax - LOCK(3) + LOCK andl %eax, (%edx) ret END(_atomic_and_32) @@ -86,7 +86,7 @@ ENTRY(_atomic_and_32_nv) 0: movl %eax, %ecx andl 8(%esp), %ecx - LOCK(4) + LOCK cmpxchgl %ecx, (%edx) jnz 1f movl %ecx, %eax @@ -97,7 +97,7 @@ END(_atomic_and_32_nv) ENTRY(_atomic_dec_32) movl 4(%esp), %edx - LOCK(5) + LOCK decl (%edx) ret END(_atomic_dec_32) @@ -105,7 +105,7 @@ END(_atomic_dec_32) ENTRY(_atomic_dec_32_nv) movl 4(%esp), %edx movl $-1, %eax - LOCK(6) + LOCK xaddl %eax, (%edx) decl %eax ret @@ -113,7 +113,7 @@ END(_atomic_dec_32_nv) ENTRY(_atomic_inc_32) movl 4(%esp), %edx - LOCK(7) + LOCK incl (%edx) ret END(_atomic_inc_32) @@ -121,7 +121,7 @@ END(_atomic_inc_32) ENTRY(_atomic_inc_32_nv) movl 4(%esp), %edx movl $1, %eax - LOCK(8) + LOCK xaddl %eax, (%edx) incl %eax ret @@ -130,7 +130,7 @@ END(_atomic_inc_32_nv) ENTRY(_atomic_or_32) movl 4(%esp), %edx movl 8(%esp), %eax - LOCK(9) + LOCK orl %eax, (%edx) ret END(_atomic_or_32) @@ -141,7 +141,7 @@ ENTRY(_atomic_or_32_nv) 0: movl %eax, %ecx orl 8(%esp), %ecx - LOCK(10) + LOCK cmpxchgl %ecx, (%edx) jnz 1f movl %ecx, %eax @@ -161,7 +161,7 @@ ENTRY(_atomic_cas_32) movl 4(%esp), %edx movl 8(%esp), %eax movl 12(%esp), %ecx - LOCK(12) + LOCK cmpxchgl %ecx, (%edx) /* %eax now contains the old value */ ret @@ -177,7 +177,7 @@ ENTRY(_atomic_cas_32_ni) END(_atomic_cas_32_ni) ENTRY(_membar_consumer) - LOCK(13) + LOCK addl $0, -4(%esp) ret END(_membar_consumer) @@ -190,7 +190,7 @@ ENTRY(_membar_producer) END(_membar_producer) ENTRY(_membar_sync) - LOCK(14) + LOCK addl $0, -4(%esp) ret END(_membar_sync) @@ -241,7 +241,7 @@ ENTRY(_atomic_cas_cx8) movl 20(%esp), %edx movl 24(%esp), %ebx movl 28(%esp), %ecx - LOCK(15) + LOCK cmpxchg8b (%edi) popl %ebx popl %edi Index: src/common/lib/libc/arch/x86_64/atomic/atomic.S diff -u src/common/lib/libc/arch/x86_64/atomic/atomic.S:1.20 src/common/lib/libc/arch/x86_64/atomic/atomic.S:1.21 --- src/common/lib/libc/arch/x86_64/atomic/atomic.S:1.20 Sun Apr 26 13:54:03 2020 +++ src/common/lib/libc/arch/x86_64/atomic/atomic.S Sun Apr 26 13:59:44 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic.S,v 1.20 2020/04/26 13:54:03 maxv Exp $ */ +/* $NetBSD: atomic.S,v 1.21 2020/04/26 13:59:44 maxv Exp $ */ /*- * Copyright (c) 2007 The NetBSD Foundation, Inc. @@ -40,10 +40,10 @@ #ifdef _HARDKERNEL #include -#define LOCK(n) HOTPATCH(HP_NAME_NOLOCK, 1); lock +#define LOCK HOTPATCH(HP_NAME_NOLOCK, 1); lock #define ENDLABEL(a) _ALIGN_TEXT; LABEL(a) #else -#define LOCK(n) lock +#define LOCK lock #define ENDLABEL(a) /* nothing */ #endif @@ -52,21 +52,21 @@ /* 32-bit */ ENTRY(_atomic_add_32) - LOCK(1) + LOCK addl %esi, (%rdi) ret END(_atomic_add_32) ENTRY(_atomic_add_32_nv) movl %esi, %eax - LOCK(2) + LOCK xaddl %eax, (%rdi) addl %esi, %eax ret END(_atomic_add_32_nv) ENTRY(_atomic_and_32) - LOCK(3) + LOCK andl %esi, (%rdi) ret END(_atomic_and_32) @@ -76,7 +76,7 @@ ENTRY(_atomic_and_32_nv) 1: movl %eax, %ecx andl %esi, %ecx - LOCK(4) + LOCK cmpxchgl %ecx, (%rdi) jnz 1b movl %ecx, %eax @@ -84,35 +84,35 @@
CVS commit: src/common/lib/libc/arch
Module Name:src Committed By: maxv Date: Sun Apr 26 13:54:03 UTC 2020 Modified Files: src/common/lib/libc/arch/i386/atomic: atomic.S src/common/lib/libc/arch/x86_64/atomic: atomic.S Log Message: Remove unused. To generate a diff of this commit: cvs rdiff -u -r1.25 -r1.26 src/common/lib/libc/arch/i386/atomic/atomic.S cvs rdiff -u -r1.19 -r1.20 src/common/lib/libc/arch/x86_64/atomic/atomic.S 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/i386/atomic/atomic.S diff -u src/common/lib/libc/arch/i386/atomic/atomic.S:1.25 src/common/lib/libc/arch/i386/atomic/atomic.S:1.26 --- src/common/lib/libc/arch/i386/atomic/atomic.S:1.25 Sun Apr 26 13:37:14 2020 +++ src/common/lib/libc/arch/i386/atomic/atomic.S Sun Apr 26 13:54:02 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic.S,v 1.25 2020/04/26 13:37:14 maxv Exp $ */ +/* $NetBSD: atomic.S,v 1.26 2020/04/26 13:54:02 maxv Exp $ */ /*- * Copyright (c) 2007 The NetBSD Foundation, Inc. @@ -188,7 +188,6 @@ ENTRY(_membar_producer) movl $0, -4(%esp) ret END(_membar_producer) -ENDLABEL(membar_producer_end) ENTRY(_membar_sync) LOCK(14) Index: src/common/lib/libc/arch/x86_64/atomic/atomic.S diff -u src/common/lib/libc/arch/x86_64/atomic/atomic.S:1.19 src/common/lib/libc/arch/x86_64/atomic/atomic.S:1.20 --- src/common/lib/libc/arch/x86_64/atomic/atomic.S:1.19 Sun Apr 26 13:37:14 2020 +++ src/common/lib/libc/arch/x86_64/atomic/atomic.S Sun Apr 26 13:54:03 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic.S,v 1.19 2020/04/26 13:37:14 maxv Exp $ */ +/* $NetBSD: atomic.S,v 1.20 2020/04/26 13:54:03 maxv Exp $ */ /*- * Copyright (c) 2007 The NetBSD Foundation, Inc. @@ -265,7 +265,6 @@ ENTRY(_membar_producer) movq $0, -8(%rsp) ret END(_membar_producer) -ENDLABEL(membar_producer_end) ENTRY(_membar_sync) LOCK(26)
CVS commit: src/common/lib/libc/arch/aarch64/string
Module Name:src Committed By: ryo Date: Sat Apr 11 05:12:52 UTC 2020 Modified Files: src/common/lib/libc/arch/aarch64/string: bcopy.S memset.S Log Message: Fixed to not use the "br" instruction. Branch Target Identification (BTI) doesn't like "br". requested by maxv@ To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/common/lib/libc/arch/aarch64/string/bcopy.S cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/aarch64/string/memset.S 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/aarch64/string/bcopy.S diff -u src/common/lib/libc/arch/aarch64/string/bcopy.S:1.1 src/common/lib/libc/arch/aarch64/string/bcopy.S:1.2 --- src/common/lib/libc/arch/aarch64/string/bcopy.S:1.1 Sun Feb 4 21:52:16 2018 +++ src/common/lib/libc/arch/aarch64/string/bcopy.S Sat Apr 11 05:12:52 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: bcopy.S,v 1.1 2018/02/04 21:52:16 skrll Exp $ */ +/* $NetBSD: bcopy.S,v 1.2 2020/04/11 05:12:52 ryo Exp $ */ /* * Copyright (c) 2018 Ryo Shimizu @@ -29,7 +29,7 @@ #include #if defined(LIBC_SCCS) -RCSID("$NetBSD: bcopy.S,v 1.1 2018/02/04 21:52:16 skrll Exp $") +RCSID("$NetBSD: bcopy.S,v 1.2 2020/04/11 05:12:52 ryo Exp $") #endif #if defined(MEMCOPY) @@ -207,32 +207,60 @@ copy_backward: #endif /* (STP_ALIGN > 8) */ 9: +backward_copy1k: + /* while (len >= 1024) */ + /* { src -= 1024; dst -= 1024; copy1024(dst, src); len -= 1024; } */ cmp LEN, #1024 - bhs backward_copy1k -backward_less1k: - /* copy 16*n bytes */ - and TMP_D, LEN, #(1023-15) /* len &= 1023; len &= ~15; */ - adr TMP_X, 8f - sub LEN, LEN, TMP_D - sub TMP_X, TMP_X, TMP_D, lsr #1 /* jump to (8f - len/2) */ - br TMP_X -backward_copy1k: /* copy 16*64 bytes */ + blo 9f +1: sub LEN, LEN, #1024 .rept (1024 / 16) ldp DATA0, DATA1, [SRC0, #-16]! /* *--dst = *--src; */ stp DATA0, DATA1, [DST, #-16]! .endr -8: - cbz LEN, done cmp LEN, #1024 - bhs backward_copy1k - cmp LEN, #16 - bhs backward_less1k + bhs 1b +9: + /* if (len & 512) { src -= 512; dst -= 512; copy512(dst, src); } */ + tbz LEN, #9, 1f + .rept (512 / 16) + ldp DATA0, DATA1, [SRC0, #-16]! + stp DATA0, DATA1, [DST, #-16]! + .endr +1: + /* if (len & 256) { src -= 256; dst -= 256; copy256(dst, src); } */ + tbz LEN, #8, 1f + .rept (256 / 16) + ldp DATA0, DATA1, [SRC0, #-16]! + stp DATA0, DATA1, [DST, #-16]! + .endr +1: + /* if (len & 128) { src -= 128; dst -= 128; copy128(dst, src); } */ + tbz LEN, #7, 1f + .rept (128 / 16) + ldp DATA0, DATA1, [SRC0, #-16]! + stp DATA0, DATA1, [DST, #-16]! + .endr +1: + /* if (len & 64) { src -= 64; dst -= 64; copy64(dst, src); } */ + tbz LEN, #6, 1f + .rept (64 / 16) + ldp DATA0, DATA1, [SRC0, #-16]! + stp DATA0, DATA1, [DST, #-16]! + .endr +1: + /* if (len & 32) { src -= 32; dst -= 32; copy32(dst, src); } */ + tbz LEN, #5, 1f + .rept (32 / 16) + ldp DATA0, DATA1, [SRC0, #-16]! + stp DATA0, DATA1, [DST, #-16]! + .endr +1: /* if (len & 16) { *--(uint128_t *)dst = *--(uint128_t *)src; } */ tbz LEN, #4, 1f ldp DATA0, DATA1, [SRC0, #-16]! - ldp DATA0, DATA1, [DST, #-16]! + stp DATA0, DATA1, [DST, #-16]! 1: /* if (len & 8) { *--(uint64_t *)dst = *--(uint64_t *)src; } */ tbz LEN, #3, 1f @@ -271,14 +299,10 @@ backward_copy: bcs 9f backward_tiny: /* copy 1-10 bytes */ - adr TMP_X, 8f - sub TMP_X, TMP_X, LEN, lsl #3 /* jump to (8f - len*2) */ - br TMP_X - .rept 10 +1: sub LEN, LEN, #1 ldrb TMP_Xw, [SRC0, #-1]! strb TMP_Xw, [DST, #-1]! - .endr -8: + cbz LEN, 1b ret 9: /* length is small(<32), and src or dst may be unaligned */ @@ -548,14 +572,10 @@ ENTRY(FUNCTION) bcs 9f forward_tiny: /* copy 1-10 bytes */ - adr TMP_X, 8f - sub TMP_X, TMP_X, LEN, lsl #3 /* jump to (8f - len*2) */ - br TMP_X - .rept 10 +1: sub LEN, LEN, #1 ldrb TMP_Xw, [SRC0], #1 strb TMP_Xw, [DST], #1 - .endr -8: + cbz LEN, 1b ret 9: /* length is small(<32), and src or dst may be unaligned */ @@ -938,28 +958,56 @@ copy_forward: #endif /* (STP_ALIGN > 8) */ 9: +forward_copy1k: + /* while (len >= 1024) */ + /* { copy1024(dst, src); src += 1024; dst += 1024; len -= 1024; } */ cmp LEN, #1024 - bhs forward_copy1k -forward_less1k: - /* copy 16*n bytes */ - and TMP_D, LEN, #(1023-15) /* len &= 1023; len &= ~15; */ - adr TMP_X, 8f - sub LEN, LEN, TMP_D - sub TMP_X, TMP_X, TMP_D, lsr #1 /* jump to (8f - len/2) */ - br TMP_X -forward_copy1k: /* copy 16*64 bytes */ + blo 9f +1: sub LEN, LEN, #1024 .rept (1024 / 16) ldp DATA0, DATA1, [SRC0], #16 /* *dst++ = *src++; */ stp DATA0, DATA1, [DST], #16 .endr -8: - cbz LEN, done cmp LEN, #1024 - bhs forward_copy1k - cmp LEN, #16 - bhs forward_less1k + bhs 1b +9: + /* if (len & 512) { copy512(dst, src); src += 512; dst += 512; */ + tbz LEN, #9, 1f + .rept (512 / 16) + ldp DATA0, DATA1, [SRC0], #16 + stp DATA0, DATA1, [DST], #16 + .endr +1: + /* if (len & 256) { copy256(dst, src); src += 256; dst += 256; */ + tbz LEN, #8, 1f + .rept (256 /
CVS commit: src/common/lib/libc/arch/m68k/string
Module Name:src Committed By: rin Date: Tue Mar 10 08:15:44 UTC 2020 Modified Files: src/common/lib/libc/arch/m68k/string: ffs.S Log Message: For kernel, rename ffs to __ffssi2 rather than having a weak symbol. This enables us to load modules depended to __ffssi2. It is difficult to deal with weak symbols consistently in in-kernel linker. See explanation by pgoyette on tech-kern: http://mail-index.netbsd.org/tech-kern/2020/03/09/msg026148.html Also, we do not currently provide ffs(9) as a kernel routine. To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/m68k/string/ffs.S 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/m68k/string/ffs.S diff -u src/common/lib/libc/arch/m68k/string/ffs.S:1.7 src/common/lib/libc/arch/m68k/string/ffs.S:1.8 --- src/common/lib/libc/arch/m68k/string/ffs.S:1.7 Mon Mar 9 13:36:10 2020 +++ src/common/lib/libc/arch/m68k/string/ffs.S Tue Mar 10 08:15:44 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: ffs.S,v 1.7 2020/03/09 13:36:10 rin Exp $ */ +/* $NetBSD: ffs.S,v 1.8 2020/03/10 08:15:44 rin Exp $ */ /*- * Copyright (c) 1990 The Regents of the University of California. @@ -39,13 +39,22 @@ #if 0 RCSID("from: @(#)ffs.s 5.1 (Berkeley) 5/12/90") #else - RCSID("$NetBSD: ffs.S,v 1.7 2020/03/09 13:36:10 rin Exp $") + RCSID("$NetBSD: ffs.S,v 1.8 2020/03/10 08:15:44 rin Exp $") #endif #endif /* LIBC_SCCS and not lint */ /* bit = ffs(value) */ +#ifdef _LIBC WEAK_ALIAS(__ffssi2,ffs) +#else /* KERNEL */ +/* + * Our in-kernel linker does not understand weak references, which + * prevents modules depended on __ffssi2 from being loaded. Also, + * we do not provide ffs(9) as a kernel routine. Let's rename it! + */ +#define ffs __ffssi2 +#endif #if (!defined(__mc68010__) && !defined(__mcoldfire__)) || defined(__mcfisac__)
CVS commit: src/common/lib/libc/arch/m68k/string
Module Name:src Committed By: rin Date: Mon Mar 9 13:36:10 UTC 2020 Modified Files: src/common/lib/libc/arch/m68k/string: ffs.S Log Message: Add missing END() for coldfire. To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/m68k/string/ffs.S 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/m68k/string/ffs.S diff -u src/common/lib/libc/arch/m68k/string/ffs.S:1.6 src/common/lib/libc/arch/m68k/string/ffs.S:1.7 --- src/common/lib/libc/arch/m68k/string/ffs.S:1.6 Sat Sep 7 19:06:29 2013 +++ src/common/lib/libc/arch/m68k/string/ffs.S Mon Mar 9 13:36:10 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: ffs.S,v 1.6 2013/09/07 19:06:29 chs Exp $ */ +/* $NetBSD: ffs.S,v 1.7 2020/03/09 13:36:10 rin Exp $ */ /*- * Copyright (c) 1990 The Regents of the University of California. @@ -39,7 +39,7 @@ #if 0 RCSID("from: @(#)ffs.s 5.1 (Berkeley) 5/12/90") #else - RCSID("$NetBSD: ffs.S,v 1.6 2013/09/07 19:06:29 chs Exp $") + RCSID("$NetBSD: ffs.S,v 1.7 2020/03/09 13:36:10 rin Exp $") #endif #endif /* LIBC_SCCS and not lint */ @@ -76,6 +76,7 @@ ENTRY(ffs) jcc .L1 | keep looping while carry is clear. .L2: rts +END(ffs) #else /* __mc68010__ */
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: skrll Date: Mon Mar 9 11:21:54 UTC 2020 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_cas_up.S Log Message: Give the thumb atomic ops a chance of working To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/arm/atomic/atomic_cas_up.S 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/atomic_cas_up.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_cas_up.S:1.7 src/common/lib/libc/arch/arm/atomic/atomic_cas_up.S:1.8 --- src/common/lib/libc/arch/arm/atomic/atomic_cas_up.S:1.7 Tue Mar 4 03:36:24 2014 +++ src/common/lib/libc/arch/arm/atomic/atomic_cas_up.S Mon Mar 9 11:21:54 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_cas_up.S,v 1.7 2014/03/04 03:36:24 matt Exp $ */ +/* $NetBSD: atomic_cas_up.S,v 1.8 2020/03/09 11:21:54 skrll Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -41,6 +41,7 @@ RAS_START_ASM_HIDDEN(_atomic_cas) cmp r0, r1 #if defined(__thumb__) beq 1f + str r2, [r3] #else streq r2, [r3] #endif @@ -75,6 +76,7 @@ RAS_START_ASM_HIDDEN(_atomic_cas_16) cmp r0, r1 #if defined(__thumb__) beq 1f + strh r2, [r3] #else strheq r2, [r3] #endif @@ -91,6 +93,7 @@ RAS_START_ASM_HIDDEN(_atomic_cas_8) cmp r0, r1 #if defined(__thumb__) beq 1f + strb r2, [r3] #else strbeq r2, [r3] #endif
CVS commit: src/common/lib/libc/arch/m68k/gen
Module Name:src Committed By: rin Date: Mon Mar 9 08:29:12 UTC 2020 Modified Files: src/common/lib/libc/arch/m68k/gen: mulsi3.S Log Message: Remove wrong comment (copy-paste from somewhere); __mulsi3 does not depend on __udivsi3. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/m68k/gen/mulsi3.S 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/m68k/gen/mulsi3.S diff -u src/common/lib/libc/arch/m68k/gen/mulsi3.S:1.4 src/common/lib/libc/arch/m68k/gen/mulsi3.S:1.5 --- src/common/lib/libc/arch/m68k/gen/mulsi3.S:1.4 Tue Jul 16 23:24:18 2013 +++ src/common/lib/libc/arch/m68k/gen/mulsi3.S Mon Mar 9 08:29:11 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: mulsi3.S,v 1.4 2013/07/16 23:24:18 matt Exp $ */ +/* $NetBSD: mulsi3.S,v 1.5 2020/03/09 08:29:11 rin Exp $ */ /*- * Copyright (c) 1990 The Regents of the University of California. @@ -39,7 +39,7 @@ #if 0 RCSID("from: @(#)mulsi3.s 5.1 (Berkeley) 6/7/90") #else - RCSID("$NetBSD: mulsi3.S,v 1.4 2013/07/16 23:24:18 matt Exp $") + RCSID("$NetBSD: mulsi3.S,v 1.5 2020/03/09 08:29:11 rin Exp $") #endif #endif /* LIBC_SCCS and not lint */ @@ -49,8 +49,6 @@ ENTRY(__mulsi3) movel 4(%sp),%d0 mulsl 8(%sp),%d0 #else -| NB: this requires that __udivsi3 preserve %a0 and return -| the modulus in %d1: movew 6(%sp), %d0 movel %d0, %a0 | save B muluw 8(%sp), %d0 | %d0 holds B * C
CVS commit: src/common/lib/libc/arch
Module Name:src Committed By: ad Date: Mon Jan 27 22:09:21 UTC 2020 Removed Files: src/common/lib/libc/arch/i386/string: memcmp.S src/common/lib/libc/arch/x86_64/string: bcmp.S memcmp.S Log Message: x86 uses the C versions of bcmp() and memcmp() now. To generate a diff of this commit: cvs rdiff -u -r1.3 -r0 src/common/lib/libc/arch/i386/string/memcmp.S cvs rdiff -u -r1.4 -r0 src/common/lib/libc/arch/x86_64/string/bcmp.S cvs rdiff -u -r1.5 -r0 src/common/lib/libc/arch/x86_64/string/memcmp.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/common/lib/libc/arch/x86_64/string
Module Name:src Committed By: ad Date: Thu Jan 16 09:23:43 UTC 2020 Modified Files: src/common/lib/libc/arch/x86_64/string: memcmp.S Log Message: Back out previous, it's broken. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/x86_64/string/memcmp.S 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/x86_64/string/memcmp.S diff -u src/common/lib/libc/arch/x86_64/string/memcmp.S:1.4 src/common/lib/libc/arch/x86_64/string/memcmp.S:1.5 --- src/common/lib/libc/arch/x86_64/string/memcmp.S:1.4 Wed Jan 15 10:56:49 2020 +++ src/common/lib/libc/arch/x86_64/string/memcmp.S Thu Jan 16 09:23:43 2020 @@ -1,34 +1,3 @@ -/* $NetBSD: memcmp.S,v 1.4 2020/01/15 10:56:49 ad Exp $ */ - -/*- - * Copyright (c) 2020 The NetBSD Foundation, Inc. - * All rights reserved. - * - * This code is derived from software contributed to The NetBSD Foundation - * by Andrew Doran. - * - * 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. - */ - /* * Written by J.T. Conklin . * Public domain. @@ -38,39 +7,34 @@ #include #if defined(LIBC_SCCS) - RCSID("$NetBSD: memcmp.S,v 1.4 2020/01/15 10:56:49 ad Exp $") + RCSID("$NetBSD: memcmp.S,v 1.5 2020/01/16 09:23:43 ad Exp $") #endif ENTRY(memcmp) - movq %rdx, %rcx /* compare by longs, equality only */ - shrq $3, %rcx - jz 2f -1: - movq (%rdi), %rax - cmpq %rax, (%rsi) - jne 6f - decq %rcx - leaq 8(%rdi), %rdi - leaq 8(%rsi), %rsi - jnz 1b -2: - andl $7, %edx - jz 5f -3: - movb (%rdi), %al /* compare by chars, find difference */ - subb (%rsi), %al - jne 4f - decl %edx - leaq 1(%rdi), %rdi - leaq 1(%rsi), %rsi - jnz 3b -4: - movsbl %al, %eax + movq %rdx,%rcx /* compare by longs */ + shrq $3,%rcx + repe + cmpsq + jne L5 /* do we match so far? */ + + movq %rdx,%rcx /* compare remainder by bytes */ + andq $7,%rcx + repe + cmpsb + jne L6 /* do we match? */ + + xorl %eax,%eax /* we match, return zero */ ret -5: - xorl %eax, %eax + +L5: movl $8,%ecx /* We know that one of the next */ + subq %rcx,%rdi /* eight pairs of bytes do not */ + subq %rcx,%rsi /* match. */ + repe + cmpsb +L6: xorl %eax,%eax /* Perform unsigned comparison */ + movb -1(%rdi),%al + xorl %edx,%edx + movb -1(%rsi),%dl + subl%edx,%eax ret -6: - movl $8, %edx - jmp 3b END(memcmp)
CVS commit: src/common/lib/libc/arch/x86_64/string
Module Name:src Committed By: ad Date: Wed Jan 15 10:56:49 UTC 2020 Modified Files: src/common/lib/libc/arch/x86_64/string: bcmp.S memcmp.S Log Message: Rewrite bcmp() & memcmp() to not use REP CMPS. Seems about 5-10x faster for small strings on modern hardware. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/x86_64/string/bcmp.S \ src/common/lib/libc/arch/x86_64/string/memcmp.S 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/x86_64/string/bcmp.S diff -u src/common/lib/libc/arch/x86_64/string/bcmp.S:1.3 src/common/lib/libc/arch/x86_64/string/bcmp.S:1.4 --- src/common/lib/libc/arch/x86_64/string/bcmp.S:1.3 Sat Mar 22 19:16:34 2014 +++ src/common/lib/libc/arch/x86_64/string/bcmp.S Wed Jan 15 10:56:49 2020 @@ -1,24 +1,67 @@ +/* $NetBSD: bcmp.S,v 1.4 2020/01/15 10:56:49 ad Exp $ */ + +/*- + * Copyright (c) 2020 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Andrew Doran. + * + * 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 #if defined(LIBC_SCCS) - RCSID("$NetBSD: bcmp.S,v 1.3 2014/03/22 19:16:34 jakllsch Exp $") + RCSID("$NetBSD: bcmp.S,v 1.4 2020/01/15 10:56:49 ad Exp $") #endif ENTRY(bcmp) - xorl %eax,%eax /* clear return value */ - - movq %rdx,%rcx /* compare by words */ - shrq $3,%rcx - repe - cmpsq - jne L1 - - movq %rdx,%rcx /* compare remainder by bytes */ - andq $7,%rcx - repe - cmpsb - je L2 - -L1: incl %eax -L2: ret + movq %rdx, %rcx /* compare by longs, equality only */ + shrq $3, %rcx + jz 2f +1: + movq (%rdi), %rax + cmpq %rax, (%rsi) + jne 5f + decq %rcx + leaq 8(%rdi), %rdi + leaq 8(%rsi), %rsi + jnz 1b +2: + andl $7, %edx + jz 4f +3: + movb (%rdi), %al /* compare by chars, equality only */ + cmpb %al, (%rsi) + jne 5f + decl %edx + leaq 1(%rdi), %rdi + leaq 1(%rsi), %rsi + jnz 3b +4: + xorl %eax, %eax + ret +5: + movl $1, %eax + ret END(bcmp) Index: src/common/lib/libc/arch/x86_64/string/memcmp.S diff -u src/common/lib/libc/arch/x86_64/string/memcmp.S:1.3 src/common/lib/libc/arch/x86_64/string/memcmp.S:1.4 --- src/common/lib/libc/arch/x86_64/string/memcmp.S:1.3 Sat Mar 22 19:16:34 2014 +++ src/common/lib/libc/arch/x86_64/string/memcmp.S Wed Jan 15 10:56:49 2020 @@ -1,3 +1,34 @@ +/* $NetBSD: memcmp.S,v 1.4 2020/01/15 10:56:49 ad Exp $ */ + +/*- + * Copyright (c) 2020 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Andrew Doran. + * + * 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
CVS commit: src/common/lib/libc/arch/riscv/atomic
Module Name:src Committed By: mrg Date: Wed Apr 17 07:40:35 UTC 2019 Modified Files: src/common/lib/libc/arch/riscv/atomic: Makefile.inc Log Message: add missing atomic_and_16_nv_cas.c atomic_and_8_nv_cas.c. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/riscv/atomic/Makefile.inc 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/riscv/atomic/Makefile.inc diff -u src/common/lib/libc/arch/riscv/atomic/Makefile.inc:1.2 src/common/lib/libc/arch/riscv/atomic/Makefile.inc:1.3 --- src/common/lib/libc/arch/riscv/atomic/Makefile.inc:1.2 Thu Oct 16 18:52:17 2014 +++ src/common/lib/libc/arch/riscv/atomic/Makefile.inc Wed Apr 17 07:40:34 2019 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.inc,v 1.2 2014/10/16 18:52:17 dennis Exp $ +# $NetBSD: Makefile.inc,v 1.3 2019/04/17 07:40:34 mrg Exp $ .for op in add and cas nand or sub swap xor sizes=32 @@ -27,4 +27,8 @@ SRCS.atomic+= atomic_init_cas.c \ .endif #LIB +.if ${LIB} == "c" +SRCS.atomic+= atomic_and_16_nv_cas.c atomic_and_8_nv_cas.c +.endif + SRCS+= ${SRCS.atomic}
CVS commit: src/common/lib/libc/arch/riscv/atomic
Module Name:src Committed By: mrg Date: Wed Apr 17 07:35:38 UTC 2019 Modified Files: src/common/lib/libc/arch/riscv/atomic: atomic_cas_32.S Log Message: add missing aliases for _atomic_cas_32_ni and atomic_cas_uint_ni. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 \ src/common/lib/libc/arch/riscv/atomic/atomic_cas_32.S 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/riscv/atomic/atomic_cas_32.S diff -u src/common/lib/libc/arch/riscv/atomic/atomic_cas_32.S:1.2 src/common/lib/libc/arch/riscv/atomic/atomic_cas_32.S:1.3 --- src/common/lib/libc/arch/riscv/atomic/atomic_cas_32.S:1.2 Fri Mar 27 06:42:37 2015 +++ src/common/lib/libc/arch/riscv/atomic/atomic_cas_32.S Wed Apr 17 07:35:38 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_cas_32.S,v 1.2 2015/03/27 06:42:37 matt Exp $ */ +/* $NetBSD: atomic_cas_32.S,v 1.3 2019/04/17 07:35:38 mrg Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. * All rights reserved. @@ -43,6 +43,12 @@ END(_atomic_cas_32) ATOMIC_OP_ALIAS(atomic_cas_32,_atomic_cas_32) ATOMIC_OP_ALIAS(atomic_cas_uint,_atomic_cas_32) STRONG_ALIAS(_atomic_cas_uint,_atomic_cas_32) + +ATOMIC_OP_ALIAS(atomic_cas_32_ni,_atomic_cas_32) +STRONG_ALIAS(_atomic_cas_32_ni,_atomic_cas_32) +ATOMIC_OP_ALIAS(atomic_cas_uint_ni,_atomic_cas_32) +STRONG_ALIAS(_atomic_cas_uint_ni,_atomic_cas_32) + #ifndef _LP64 ATOMIC_OP_ALIAS(atomic_cas_ulong,_atomic_cas_32) STRONG_ALIAS(_atomic_cas_ulong,_atomic_cas_32)
CVS commit: src/common/lib/libc/arch
Module Name:src Committed By: isaki Date: Thu Feb 28 02:35:38 UTC 2019 Modified Files: src/common/lib/libc/arch/hppa/atomic: Makefile.inc src/common/lib/libc/arch/m68k/atomic: Makefile.inc src/common/lib/libc/arch/mips/atomic: Makefile.inc src/common/lib/libc/arch/sh3/atomic: Makefile.inc src/common/lib/libc/arch/sparc/atomic: Makefile.inc src/common/lib/libc/arch/vax/atomic: Makefile.inc Log Message: Add missing atomic_and_{8,16}_nv_cas.c for __sync_and_and_fetch_{1,2}. XXX why is not only atomic_and_* symmetric unlike the others? (in common/lib/libc/atomic/) To generate a diff of this commit: cvs rdiff -u -r1.13 -r1.14 src/common/lib/libc/arch/hppa/atomic/Makefile.inc cvs rdiff -u -r1.14 -r1.15 src/common/lib/libc/arch/m68k/atomic/Makefile.inc cvs rdiff -u -r1.13 -r1.14 src/common/lib/libc/arch/mips/atomic/Makefile.inc cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/sh3/atomic/Makefile.inc cvs rdiff -u -r1.22 -r1.23 src/common/lib/libc/arch/sparc/atomic/Makefile.inc cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/vax/atomic/Makefile.inc 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/hppa/atomic/Makefile.inc diff -u src/common/lib/libc/arch/hppa/atomic/Makefile.inc:1.13 src/common/lib/libc/arch/hppa/atomic/Makefile.inc:1.14 --- src/common/lib/libc/arch/hppa/atomic/Makefile.inc:1.13 Tue Oct 14 07:25:05 2014 +++ src/common/lib/libc/arch/hppa/atomic/Makefile.inc Thu Feb 28 02:35:37 2019 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.inc,v 1.13 2014/10/14 07:25:05 martin Exp $ +# $NetBSD: Makefile.inc,v 1.14 2019/02/28 02:35:37 isaki Exp $ .if defined(LIB) @@ -30,6 +30,7 @@ SRCS+= atomic_xor_32_cas.c atomic_xor_16 atomic_nand_32_cas.c atomic_nand_16_cas.c atomic_nand_8_cas.c \ atomic_or_16_cas.c atomic_or_8_cas.c\ atomic_and_16_cas.c atomic_and_8_cas.c\ + atomic_and_16_nv_cas.c atomic_and_8_nv_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 \ Index: src/common/lib/libc/arch/m68k/atomic/Makefile.inc diff -u src/common/lib/libc/arch/m68k/atomic/Makefile.inc:1.14 src/common/lib/libc/arch/m68k/atomic/Makefile.inc:1.15 --- src/common/lib/libc/arch/m68k/atomic/Makefile.inc:1.14 Thu Nov 20 07:07:13 2014 +++ src/common/lib/libc/arch/m68k/atomic/Makefile.inc Thu Feb 28 02:35:37 2019 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.inc,v 1.14 2014/11/20 07:07:13 matt Exp $ +# $NetBSD: Makefile.inc,v 1.15 2019/02/28 02:35:37 isaki Exp $ # # Note: The atomic operations here in these assembly files are atomic @@ -30,6 +30,7 @@ SRCS+= atomic_add_16_cas.c atomic_add_8 atomic_nand_32_cas.c atomic_nand_16_cas.c atomic_nand_8_cas.c \ atomic_xor_32_cas.c atomic_xor_16_cas.c atomic_xor_8_cas.c \ atomic_and_32_cas.c atomic_and_16_cas.c atomic_and_8_cas.c \ + atomic_and_16_nv_cas.c atomic_and_8_nv_cas.c \ atomic_or_32_cas.c atomic_or_16_cas.c atomic_or_8_cas.c \ atomic_cas_32_cas.c atomic_cas_16_cas.c atomic_cas_8_cas.c \ atomic_swap_32_cas.c atomic_swap_16_cas.c atomic_swap_8_cas.c Index: src/common/lib/libc/arch/mips/atomic/Makefile.inc diff -u src/common/lib/libc/arch/mips/atomic/Makefile.inc:1.13 src/common/lib/libc/arch/mips/atomic/Makefile.inc:1.14 --- src/common/lib/libc/arch/mips/atomic/Makefile.inc:1.13 Mon Oct 13 13:00:55 2014 +++ src/common/lib/libc/arch/mips/atomic/Makefile.inc Thu Feb 28 02:35:37 2019 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.inc,v 1.13 2014/10/13 13:00:55 martin Exp $ +# $NetBSD: Makefile.inc,v 1.14 2019/02/28 02:35:37 isaki Exp $ .if defined(LIB) && (${LIB} == "kern" || ${LIB} == "c" || ${LIB} == "pthread" \ || ${LIB} == "rump") @@ -44,6 +44,7 @@ SRCS+= atomic_xor_32_cas.c atomic_xor_16 atomic_nand_32_cas.c atomic_nand_16_cas.c atomic_nand_8_cas.c \ atomic_or_16_cas.c atomic_or_8_cas.c\ atomic_and_16_cas.c atomic_and_8_cas.c\ + atomic_and_16_nv_cas.c atomic_and_8_nv_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 \ Index: src/common/lib/libc/arch/sh3/atomic/Makefile.inc diff -u src/common/lib/libc/arch/sh3/atomic/Makefile.inc:1.7 src/common/lib/libc/arch/sh3/atomic/Makefile.inc:1.8 --- src/common/lib/libc/arch/sh3/atomic/Makefile.inc:1.7 Mon Oct 13 13:00:55 2014 +++ src/common/lib/libc/arch/sh3/atomic/Makefile.inc Thu Feb 28 02:35:37 2019 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.inc,v 1.7 2014/10/13 13:00:55 martin Exp $ +# $NetBSD: Makefile.inc,v 1.8 2019/02/28 02:35:37 isaki Exp $ .if defined(LIB) && (${LIB} == "kern" || ${LIB} == "c" || ${LIB} == "pthread" \ || ${LIB} == "rump") @@ -12,6 +12,7 @@ SRCS+= atomic_add_32_cas.c atomic_add_32 SRCS+= atomic_add_16_cas.c atomic_add_8_cas.c \ atomic_sub_32_cas.c atomic_sub_16_cas.c atomic_sub_8_cas.c \
CVS commit: src/common/lib/libc/arch/mips/atomic
Module Name:src Committed By: rin Date: Wed Feb 20 05:25:12 UTC 2019 Modified Files: src/common/lib/libc/arch/mips/atomic: atomic_cas.S Log Message: Export atomic_cas_32_ni in a similar manner to its 64-bit counterpart. Compile test only, but seems trivial enough for me. Fix build error due to test/lib/libc/atomic/t_atomic_cas. Note that mips32 does not use atomic_cas.S. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/common/lib/libc/arch/mips/atomic/atomic_cas.S 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/mips/atomic/atomic_cas.S diff -u src/common/lib/libc/arch/mips/atomic/atomic_cas.S:1.5 src/common/lib/libc/arch/mips/atomic/atomic_cas.S:1.6 --- src/common/lib/libc/arch/mips/atomic/atomic_cas.S:1.5 Tue Feb 19 18:17:45 2019 +++ src/common/lib/libc/arch/mips/atomic/atomic_cas.S Wed Feb 20 05:25:12 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_cas.S,v 1.5 2019/02/19 18:17:45 martin Exp $ */ +/* $NetBSD: atomic_cas.S,v 1.6 2019/02/20 05:25:12 rin Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -29,7 +29,7 @@ #include #include "atomic_op_asm.h" -RCSID("$NetBSD: atomic_cas.S,v 1.5 2019/02/19 18:17:45 martin Exp $") +RCSID("$NetBSD: atomic_cas.S,v 1.6 2019/02/20 05:25:12 rin Exp $") .text .set noat @@ -54,6 +54,7 @@ LEAF(_atomic_cas_32) nop END(_atomic_cas_32) ATOMIC_OP_ALIAS(atomic_cas_32, _atomic_cas_32) +ATOMIC_OP_ALIAS(atomic_cas_32_ni, _atomic_cas_32) #if !defined(__mips_o32) LEAF(_atomic_cas_64)
CVS commit: src/common/lib/libc/arch/mips/atomic
Module Name:src Committed By: martin Date: Tue Feb 19 18:17:46 UTC 2019 Modified Files: src/common/lib/libc/arch/mips/atomic: atomic_cas.S Log Message: Add atomic_cas_64_ni alias To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/mips/atomic/atomic_cas.S 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/mips/atomic/atomic_cas.S diff -u src/common/lib/libc/arch/mips/atomic/atomic_cas.S:1.4 src/common/lib/libc/arch/mips/atomic/atomic_cas.S:1.5 --- src/common/lib/libc/arch/mips/atomic/atomic_cas.S:1.4 Mon Jun 1 23:16:54 2015 +++ src/common/lib/libc/arch/mips/atomic/atomic_cas.S Tue Feb 19 18:17:45 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_cas.S,v 1.4 2015/06/01 23:16:54 matt Exp $ */ +/* $NetBSD: atomic_cas.S,v 1.5 2019/02/19 18:17:45 martin Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -29,7 +29,7 @@ #include #include "atomic_op_asm.h" -RCSID("$NetBSD: atomic_cas.S,v 1.4 2015/06/01 23:16:54 matt Exp $") +RCSID("$NetBSD: atomic_cas.S,v 1.5 2019/02/19 18:17:45 martin Exp $") .text .set noat @@ -74,6 +74,7 @@ LEAF(_atomic_cas_64) nop END(_atomic_cas_64) ATOMIC_OP_ALIAS(atomic_cas_64, _atomic_cas_64) +ATOMIC_OP_ALIAS(atomic_cas_64_ni, _atomic_cas_64) #endif #ifdef _LP64
CVS commit: src/common/lib/libc/arch/aarch64/atomic
Module Name:src Committed By: rin Date: Tue Feb 19 12:51:44 UTC 2019 Modified Files: src/common/lib/libc/arch/aarch64/atomic: atomic_cas_64.S Log Message: Sort STRONG_ALIAS's in the same manner as ATOMIC_OP_ALIAS's. No functional changes. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 \ src/common/lib/libc/arch/aarch64/atomic/atomic_cas_64.S 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/aarch64/atomic/atomic_cas_64.S diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_cas_64.S:1.2 src/common/lib/libc/arch/aarch64/atomic/atomic_cas_64.S:1.3 --- src/common/lib/libc/arch/aarch64/atomic/atomic_cas_64.S:1.2 Tue Feb 19 12:47:36 2019 +++ src/common/lib/libc/arch/aarch64/atomic/atomic_cas_64.S Tue Feb 19 12:51:44 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_cas_64.S,v 1.2 2019/02/19 12:47:36 rin Exp $ */ +/* $NetBSD: atomic_cas_64.S,v 1.3 2019/02/19 12:51:44 rin Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -50,7 +50,7 @@ ATOMIC_OP_ALIAS(atomic_cas_ulong_ni,_ato ATOMIC_OP_ALIAS(atomic_cas_ptr_ni,_atomic_cas_64) STRONG_ALIAS(__sync_val_compare_and_swap_8,_atomic_cas_64) STRONG_ALIAS(_atomic_cas_ulong,_atomic_cas_64) +STRONG_ALIAS(_atomic_cas_ptr,_atomic_cas_64) STRONG_ALIAS(_atomic_cas_64_ni,_atomic_cas_64) -STRONG_ALIAS(_atomic_cas_ptr_ni,_atomic_cas_64) STRONG_ALIAS(_atomic_cas_ulong_ni,_atomic_cas_64) -STRONG_ALIAS(_atomic_cas_ptr,_atomic_cas_64) +STRONG_ALIAS(_atomic_cas_ptr_ni,_atomic_cas_64)
CVS commit: src/common/lib/libc/arch/aarch64/atomic
Module Name:src Committed By: rin Date: Tue Feb 19 12:47:36 UTC 2019 Modified Files: src/common/lib/libc/arch/aarch64/atomic: atomic_cas_64.S Log Message: Export _atomic_cas_64 as atomic_cas_64_ni. Note that _atomic_cas_64 is already exported as atomic_cas_{ulong,prt}_ni. Fix build error of test/lib/atomic/t_atomic_cas, which is successfully passed on RPI3B+ now. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 \ src/common/lib/libc/arch/aarch64/atomic/atomic_cas_64.S 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/aarch64/atomic/atomic_cas_64.S diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_cas_64.S:1.1 src/common/lib/libc/arch/aarch64/atomic/atomic_cas_64.S:1.2 --- src/common/lib/libc/arch/aarch64/atomic/atomic_cas_64.S:1.1 Sun Aug 10 05:47:35 2014 +++ src/common/lib/libc/arch/aarch64/atomic/atomic_cas_64.S Tue Feb 19 12:47:36 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_cas_64.S,v 1.1 2014/08/10 05:47:35 matt Exp $ */ +/* $NetBSD: atomic_cas_64.S,v 1.2 2019/02/19 12:47:36 rin Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -45,6 +45,7 @@ END(_atomic_cas_64) ATOMIC_OP_ALIAS(atomic_cas_64,_atomic_cas_64) ATOMIC_OP_ALIAS(atomic_cas_ulong,_atomic_cas_64) ATOMIC_OP_ALIAS(atomic_cas_ptr,_atomic_cas_64) +ATOMIC_OP_ALIAS(atomic_cas_64_ni,_atomic_cas_64) ATOMIC_OP_ALIAS(atomic_cas_ulong_ni,_atomic_cas_64) ATOMIC_OP_ALIAS(atomic_cas_ptr_ni,_atomic_cas_64) STRONG_ALIAS(__sync_val_compare_and_swap_8,_atomic_cas_64)
CVS commit: src/common/lib/libc/arch/x86_64/atomic
Module Name:src Committed By: isaki Date: Sun Feb 17 07:34:44 UTC 2019 Modified Files: src/common/lib/libc/arch/x86_64/atomic: atomic.S Log Message: Add missing export of atomic_or_64 (since rev1.1). To generate a diff of this commit: cvs rdiff -u -r1.17 -r1.18 src/common/lib/libc/arch/x86_64/atomic/atomic.S 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/x86_64/atomic/atomic.S diff -u src/common/lib/libc/arch/x86_64/atomic/atomic.S:1.17 src/common/lib/libc/arch/x86_64/atomic/atomic.S:1.18 --- src/common/lib/libc/arch/x86_64/atomic/atomic.S:1.17 Thu May 22 15:23:11 2014 +++ src/common/lib/libc/arch/x86_64/atomic/atomic.S Sun Feb 17 07:34:44 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic.S,v 1.17 2014/05/22 15:23:11 uebayasi Exp $ */ +/* $NetBSD: atomic.S,v 1.18 2019/02/17 07:34:44 isaki Exp $ */ /*- * Copyright (c) 2007 The NetBSD Foundation, Inc. @@ -345,6 +345,7 @@ ALIAS(atomic_inc_ulong_nv,_atomic_inc_64 ALIAS(atomic_inc_ptr_nv,_atomic_inc_64_nv) ALIAS(atomic_or_32,_atomic_or_32) +ALIAS(atomic_or_64,_atomic_or_64) ALIAS(atomic_or_uint,_atomic_or_32) ALIAS(atomic_or_ulong,_atomic_or_64) ALIAS(atomic_or_ptr,_atomic_or_64)
CVS commit: src/common/lib/libc/arch/aarch64/atomic
Module Name:src Committed By: ryo Date: Fri Feb 8 06:56:56 UTC 2019 Modified Files: src/common/lib/libc/arch/aarch64/atomic: atomic_op_asm.h Log Message: - atomic_*_{8,16}_nv() must return a new value, not an old value. - use "dmb sy" for atomic_*{8,16}_nv() in the same way as atomic_*{32,64}_nv(). To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 \ src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h 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/aarch64/atomic/atomic_op_asm.h diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h:1.2 src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h:1.3 --- src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h:1.2 Wed Feb 6 05:33:14 2019 +++ src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h Fri Feb 8 06:56:56 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_op_asm.h,v 1.2 2019/02/06 05:33:14 ryo Exp $ */ +/* $NetBSD: atomic_op_asm.h,v 1.3 2019/02/08 06:56:56 ryo Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -49,10 +49,10 @@ END(_atomic_##OP##_8) ENTRY_NP(_atomic_##OP##_8_nv) ;\ mov x4, x0 /* need r0 for return value */ ;\ 1: ldxrb w0, [x4] /* load old value */ ;\ - INSN w2, w0, w1 /* calc new (return) value */ ;\ - stxrb w3, w2, [x4] /* try to store */ ;\ + INSN w0, w0, w1 /* calc new (return) value */ ;\ + stxrb w3, w0, [x4] /* try to store */ ;\ cbnz w3, 1b /* succeed? no, try again */ ;\ - dmb st ;\ + dmb sy ;\ ret/* return new value */ ;\ END(_atomic_##OP##_8_nv) @@ -71,10 +71,10 @@ END(_atomic_##OP##_16) ENTRY_NP(_atomic_##OP##_16_nv) ;\ mov x4, x0 /* need r0 for return value */ ;\ 1: ldxrh w0, [x4] /* load old value */ ;\ - INSN w2, w0, w1 /* calc new (return) value */ ;\ - stxrh w3, w2, [x4] /* try to store */ ;\ + INSN w0, w0, w1 /* calc new (return) value */ ;\ + stxrh w3, w0, [x4] /* try to store */ ;\ cbnz w3, 1b /* succeed? no, try again */ ;\ - dmb st ;\ + dmb sy ;\ ret/* return new value */ ;\ END(_atomic_##OP##_16_nv)
CVS commit: src/common/lib/libc/arch/aarch64/atomic
Module Name:src Committed By: ryo Date: Wed Feb 6 05:33:14 UTC 2019 Modified Files: src/common/lib/libc/arch/aarch64/atomic: atomic_op_asm.h Log Message: fix atomic_sub_*(). it was (delta - *ptr), should be (*ptr - delta). changing shared macro doesn't effect other atomic_ops because (*ptr [+|^] delta) and (delta [+|^] *ptr) have same result. atomic_sub_*() haven't used because non standard API? To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 \ src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h 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/aarch64/atomic/atomic_op_asm.h diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h:1.1 src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h:1.2 --- src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h:1.1 Sun Aug 10 05:47:35 2014 +++ src/common/lib/libc/arch/aarch64/atomic/atomic_op_asm.h Wed Feb 6 05:33:14 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_op_asm.h,v 1.1 2014/08/10 05:47:35 matt Exp $ */ +/* $NetBSD: atomic_op_asm.h,v 1.2 2019/02/06 05:33:14 ryo Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -38,7 +38,7 @@ ENTRY_NP(_atomic_##OP##_8) ;\ mov x4, x0 ;\ 1: ldxrb w0, [x4] /* load old value */ ;\ - INSN w2, w1, w0 /* calculate new value */ ;\ + INSN w2, w0, w1 /* calculate new value */ ;\ stxrb w3, w2, [x4] /* try to store */ ;\ cbnz w3, 1b /* succeed? no, try again */ ;\ dmb st ;\ @@ -49,7 +49,7 @@ END(_atomic_##OP##_8) ENTRY_NP(_atomic_##OP##_8_nv) ;\ mov x4, x0 /* need r0 for return value */ ;\ 1: ldxrb w0, [x4] /* load old value */ ;\ - INSN w2, w1, w0 /* calc new (return) value */ ;\ + INSN w2, w0, w1 /* calc new (return) value */ ;\ stxrb w3, w2, [x4] /* try to store */ ;\ cbnz w3, 1b /* succeed? no, try again */ ;\ dmb st ;\ @@ -60,7 +60,7 @@ END(_atomic_##OP##_8_nv) ENTRY_NP(_atomic_##OP##_16) ;\ mov x4, x0 ;\ 1: ldxrh w0, [x4] /* load old value */ ;\ - INSN w2, w1, w0 /* calculate new value */ ;\ + INSN w2, w0, w1 /* calculate new value */ ;\ stxrh w3, w2, [x4] /* try to store */ ;\ cbnz w3, 1b /* succeed? no, try again */ ;\ dmb st ;\ @@ -71,7 +71,7 @@ END(_atomic_##OP##_16) ENTRY_NP(_atomic_##OP##_16_nv) ;\ mov x4, x0 /* need r0 for return value */ ;\ 1: ldxrh w0, [x4] /* load old value */ ;\ - INSN w2, w1, w0 /* calc new (return) value */ ;\ + INSN w2, w0, w1 /* calc new (return) value */ ;\ stxrh w3, w2, [x4] /* try to store */ ;\ cbnz w3, 1b /* succeed? no, try again */ ;\ dmb st ;\ @@ -82,7 +82,7 @@ END(_atomic_##OP##_16_nv) ENTRY_NP(_atomic_##OP##_32) ;\ mov x4, x0 ;\ 1: ldxr w0, [x4] /* load old value */ ;\ - INSN w2, w1, w0 /* calculate new value */ ;\ + INSN w2, w0, w1 /* calculate new value */ ;\ stxr w3, w2, [x4] /* try to store */ ;\ cbnz w3, 1b /* succeed? no, try again */ ;\ dmb st ;\ @@ -104,7 +104,7 @@ END(_atomic_##OP##_32_nv) ENTRY_NP(_atomic_##OP##_64) ;\ mov x4, x0 ;\ 1: ldxr x0, [x4] /* load old value */ ;\ - INSN x2, x1, x0 /* calculate new value */ ;\ + INSN x2, x0, x1 /* calculate new value */ ;\ stxr w3, x2, [x4] /* try to store */ ;\ cbnz w3, 1b /* succeed? no, try again */ ;\ dmb st ;\
CVS commit: src/common/lib/libc/arch/aarch64/string
Module Name:src Committed By: ryo Date: Wed Aug 1 17:09:26 UTC 2018 Modified Files: src/common/lib/libc/arch/aarch64/string: strlen.S Log Message: strnlen(s, (size_t)-1) returned -1. it must return the length of s. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/aarch64/string/strlen.S 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/aarch64/string/strlen.S diff -u src/common/lib/libc/arch/aarch64/string/strlen.S:1.2 src/common/lib/libc/arch/aarch64/string/strlen.S:1.3 --- src/common/lib/libc/arch/aarch64/string/strlen.S:1.2 Tue Aug 22 06:45:07 2017 +++ src/common/lib/libc/arch/aarch64/string/strlen.S Wed Aug 1 17:09:26 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: strlen.S,v 1.2 2017/08/22 06:45:07 ryo Exp $ */ +/* $NetBSD: strlen.S,v 1.3 2018/08/01 17:09:26 ryo Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include -RCSID("$NetBSD: strlen.S,v 1.2 2017/08/22 06:45:07 ryo Exp $") +RCSID("$NetBSD: strlen.S,v 1.3 2018/08/01 17:09:26 ryo Exp $") #ifdef STRNLEN #define FUNCNAME strnlen @@ -49,7 +49,10 @@ ENTRY(FUNCNAME) add x9, x0, #8 /* start + dword */ bic x9, x9, #7 /* and aligned */ #ifdef STRNLEN - add x10, x0, x1 /* don't go past here */ + adds x10, x0, x1 /* x10 = s + maxlen */ + b.cc 1f /* if go past, */ + mvn x10, xzr /* set limit 0x */ +1: #endif mov x11, #MASK8_0x01 /* test mask */ @@ -76,7 +79,7 @@ ENTRY(FUNCNAME) .Lstrlen_dword_loop: #ifdef STRNLEN cmp x4, x10 - b.ge .Lstrlen_done + b.hs .Lstrlen_done #endif ldr x7, [x4], #8 /* load dword */ .Lstrlen_dword_loop_noload: @@ -103,7 +106,7 @@ ENTRY(FUNCNAME) sub x0, x0, x9 /* subtract start from the length */ #ifdef STRNLEN cmp x0, x1 /* did we go too far? */ - csel x0, x0, x1, lt /* yes, return max length */ + csel x0, x0, x1, lo /* yes, return max length */ #endif ret #ifdef STRNLEN
CVS commit: src/common/lib/libc/arch/i386/atomic
Module Name:src Committed By: bouyer Date: Wed Jul 18 13:39:36 UTC 2018 Modified Files: src/common/lib/libc/arch/i386/atomic: atomic.S Log Message: On Xen, always alias _atomic_cas_64 to _atomic_cas_cx8. AFAIK Xen doesn't support CPUs that don't support cx8. i386 XENPAE_DOMU boots again. To generate a diff of this commit: cvs rdiff -u -r1.22 -r1.23 src/common/lib/libc/arch/i386/atomic/atomic.S 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/i386/atomic/atomic.S diff -u src/common/lib/libc/arch/i386/atomic/atomic.S:1.22 src/common/lib/libc/arch/i386/atomic/atomic.S:1.23 --- src/common/lib/libc/arch/i386/atomic/atomic.S:1.22 Fri May 23 03:17:31 2014 +++ src/common/lib/libc/arch/i386/atomic/atomic.S Wed Jul 18 13:39:36 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic.S,v 1.22 2014/05/23 03:17:31 uebayasi Exp $ */ +/* $NetBSD: atomic.S,v 1.23 2018/07/18 13:39:36 bouyer Exp $ */ /*- * Copyright (c) 2007 The NetBSD Foundation, Inc. @@ -43,6 +43,7 @@ #endif #ifdef _HARDKERNEL +#include "opt_xen.h" #define LOCK(n) .Lpatch ## n: lock #define ENDLABEL(a) _ALIGN_TEXT; LABEL(a) #else @@ -196,6 +197,9 @@ END(_membar_sync) ENDLABEL(membar_sync_end) #if defined(__HAVE_ATOMIC64_OPS) || defined(_KERNEL) +#ifdef XEN +STRONG_ALIAS(_atomic_cas_64,_atomic_cas_cx8) +#else ENTRY(_atomic_cas_64) #ifdef _HARDKERNEL pushf @@ -227,6 +231,7 @@ ENTRY(_atomic_cas_64) jmp 1b END(_atomic_cas_64) ENDLABEL(_atomic_cas_64_end) +#endif /* !XEN */ ENTRY(_atomic_cas_cx8) pushl %edi
CVS commit: src/common/lib/libc/arch/aarch64/string
Module Name:src Committed By: ryo Date: Mon Jul 9 06:07:06 UTC 2018 Modified Files: src/common/lib/libc/arch/aarch64/string: memcmp.S Log Message: avoid reading from out of range that may cause access fault. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/aarch64/string/memcmp.S 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/aarch64/string/memcmp.S diff -u src/common/lib/libc/arch/aarch64/string/memcmp.S:1.2 src/common/lib/libc/arch/aarch64/string/memcmp.S:1.3 --- src/common/lib/libc/arch/aarch64/string/memcmp.S:1.2 Sun Feb 4 21:52:16 2018 +++ src/common/lib/libc/arch/aarch64/string/memcmp.S Mon Jul 9 06:07:06 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: memcmp.S,v 1.2 2018/02/04 21:52:16 skrll Exp $ */ +/* $NetBSD: memcmp.S,v 1.3 2018/07/09 06:07:06 ryo Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include -RCSID("$NetBSD: memcmp.S,v 1.2 2018/02/04 21:52:16 skrll Exp $") +RCSID("$NetBSD: memcmp.S,v 1.3 2018/07/09 06:07:06 ryo Exp $") ENTRY(memcmp) mov x9, x0 @@ -55,17 +55,19 @@ ENTRY(memcmp) sub x2, x2, #8 /* now subtract a dword */ sub x9, x9, x3 /* dword align src1 */ - sub x10, x10, x3 /* adjust src2 */ + ldr x6, [x10], #8 /* load dword from src2 */ + sub x10, x10, x3 /* src2 -= x3 */ lsl x3, x3, #3 /* convert bytes to bits */ ldr x4, [x9], #8 /* load dword from src1 */ - ldr x6, [x10], #8 /* load dword from src2 */ #ifdef __AARCH64EB__ lsl x4, x4, x3 /* discard leading bytes from data1 */ - lsl x6, x6, x3 /* discard leading bytes from data2 */ + lsr x6, x6, x3 /* discard leading bytes from data2 */ + lsl x6, x6, x3 /* get back bit position */ #else lsr x4, x4, x3 /* discard leading bytes from data1 */ - lsr x6, x6, x3 /* discard leading bytes from data2 */ + lsl x6, x6, x3 /* discard leading bytes from data2 */ + lsr x6, x6, x3 /* get back bit position */ #endif subs x0, x4, x6 /* compare data */ b.ne .Lmemcmp_last_compare /* difference. find it */
CVS commit: src/common/lib/libc/arch/aarch64/string
Module Name:src Committed By: skrll Date: Sun Feb 4 21:52:17 UTC 2018 Modified Files: src/common/lib/libc/arch/aarch64/string: memcmp.S memcpy.S Added Files: src/common/lib/libc/arch/aarch64/string: bcopy.S memmove.S Log Message: Working / new versions from Ryo Shimizu To generate a diff of this commit: cvs rdiff -u -r0 -r1.1 src/common/lib/libc/arch/aarch64/string/bcopy.S \ src/common/lib/libc/arch/aarch64/string/memmove.S cvs rdiff -u -r1.1 -r1.2 src/common/lib/libc/arch/aarch64/string/memcmp.S \ src/common/lib/libc/arch/aarch64/string/memcpy.S 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/aarch64/string/memcmp.S diff -u src/common/lib/libc/arch/aarch64/string/memcmp.S:1.1 src/common/lib/libc/arch/aarch64/string/memcmp.S:1.2 --- src/common/lib/libc/arch/aarch64/string/memcmp.S:1.1 Sun Aug 10 05:47:35 2014 +++ src/common/lib/libc/arch/aarch64/string/memcmp.S Sun Feb 4 21:52:16 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: memcmp.S,v 1.1 2014/08/10 05:47:35 matt Exp $ */ +/* $NetBSD: memcmp.S,v 1.2 2018/02/04 21:52:16 skrll Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include -RCSID("$NetBSD: memcmp.S,v 1.1 2014/08/10 05:47:35 matt Exp $") +RCSID("$NetBSD: memcmp.S,v 1.2 2018/02/04 21:52:16 skrll Exp $") ENTRY(memcmp) mov x9, x0 @@ -42,14 +42,14 @@ ENTRY(memcmp) cmp x2, #6 b.eq .Lmemcmp_6bytes #endif - cmp x2, #7 + cmp x2, #8 b.ls .Lmemcmp_lessthan8 ands x3, x9, #7 b.eq .Lmemcmp_dword_loop /* - * The two addresses have identical alignment but are not yet dword aligned. + * The src1 address is not dword aligned. */ add x2, x2, x3 /* add unalignment to length */ sub x2, x2, #8 /* now subtract a dword */ @@ -68,14 +68,7 @@ ENTRY(memcmp) lsr x6, x6, x3 /* discard leading bytes from data2 */ #endif subs x0, x4, x6 /* compare data */ -#ifdef __AARCH64EL__ b.ne .Lmemcmp_last_compare /* difference. find it */ -#else - b.eq .Lmemcmp_dword_loop /* no difference. go to loop */ - rev x4, x4 /* byte swap data1 */ - rev x6, x6 /* byte swap data2 */ - b .Lmemcmp_last_compare /* go find the difference. */ -#endif .Lmemcmp_dword_loop: subs x2, x2, #8 @@ -84,10 +77,6 @@ ENTRY(memcmp) ldr x6, [x10], #8 subs x0, x4, x6 b.eq .Lmemcmp_dword_loop /* no difference. go to loop */ -#ifdef __AARCH64EB__ - rev x4, x4 /* byte swap data1 */ - rev x6, x6 /* byte swap data2 */ -#endif b .Lmemcmp_last_compare /* go find the difference. */ .Lmemcmp_finish_dword: @@ -96,6 +85,8 @@ ENTRY(memcmp) */ tst x2, #7 b.eq .Lmemcmp_ret + mov x4, xzr + mov x6, xzr /* * */ @@ -120,16 +111,18 @@ ENTRY(memcmp) #endif .Lmemcmp_finish_hword: -#ifdef __AARCH64EB__ - rev x4, x4 /* byte swap data1 */ - rev x6, x6 /* byte swap data1 */ -#endif - tbz x2, #0, .Lmemcmp_last_compare + tbz x2, #0, .Lmemcmp_last_compare0 + ldrb w5, [x9] ldrb w7, [x10] +#ifdef __AARCH64EB__ + orr x4, x4, x5, lsl #8 + orr x6, x6, x7, lsl #8 +#else orr x4, x4, x5, lsl #48 orr x6, x6, x7, lsl #48 - b .Lmemcmp_last_compare /* go find the difference. */ +#endif + b .Lmemcmp_last_compare0 /* go find the difference. */ /* * D @@ -167,7 +160,7 @@ ENTRY(memcmp) #endif /* _KERNEL */ /* - * We have loaded the final bytes in x4 and x6 in LE format. Now we have + * We have loaded the final bytes in x4 and x6 in host-endian. Now we have * to figure what the difference is (if any). First we subtract. Any bytes * that are the same will be 0. So to find the first non-zero byte we byterev * and then use clz to find that byte. @@ -175,13 +168,25 @@ ENTRY(memcmp) * data dwords left to remove the equal part. Then we shift right to discard * the trailing bytes. Then we subtract and return. */ +.Lmemcmp_last_compare0: subs x0, x4, x6 b.eq .Lmemcmp_ret .Lmemcmp_last_compare: - rev x1, x0 /* byte reverse */ +#if __AARCH64EB__ + clz x1, x0 /* find first non-zero byte */ + rev x0, x0 +#else + rev x1, x0 clz x1, x1 /* find first non-zero byte */ - bfi x1, xzr, #0, #3 /* make it byte aligned */ - lsr x0, x0, x1 /* shift to LSB */ - sxtb w0, w0 /* sign extend */ +#endif + bfi x1, xzr, #0, #3 /* make it byte aligned */ + lsr x1, x0, x1 /* shift to LSB */ +#if __AARCH64EL__ + rev x4, x4 /* byte reverse */ + rev x6, x6 /* byte reverse */ +#endif + subs x0, x4, x6 + csetm x0, cc /* set mask bits as sign */ + bfm x0, x1, #0, #7 /* extend with sign bit */ ret END(memcmp) Index: src/common/lib/libc/arch/aarch64/string/memcpy.S diff -u src/common/lib/libc/arch/aarch64/string/memcpy.S:1.1 src/common/lib/libc/arch/aarch64/string/memcpy.S:1.2 --- src/common/lib/libc/arch/aarch64/string/memcpy.S:1.1 Sun Aug 10 05:47:35 2014 +++ src/common/lib/libc/arch/aarch64/string/memcpy.S Sun Feb 4 21:52:16 2018 @@ -1,126 +1,4 @@ -/* $NetBSD: memcpy.S,v 1.1 2014/08/10 05:47:35 matt Exp $ */ +/* $NetBSD:
CVS commit: src/common/lib/libc/arch/aarch64/string
Module Name:src Committed By: ryo Date: Tue Aug 29 15:00:23 UTC 2017 Modified Files: src/common/lib/libc/arch/aarch64/string: memset.S Log Message: * aarch64/memset.S didn't work! fixed some bugs. * maximum size of DCZID_EL0:BS (2048) supported. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/common/lib/libc/arch/aarch64/string/memset.S 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/aarch64/string/memset.S diff -u src/common/lib/libc/arch/aarch64/string/memset.S:1.1 src/common/lib/libc/arch/aarch64/string/memset.S:1.2 --- src/common/lib/libc/arch/aarch64/string/memset.S:1.1 Sun Aug 10 05:47:35 2014 +++ src/common/lib/libc/arch/aarch64/string/memset.S Tue Aug 29 15:00:23 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: memset.S,v 1.1 2014/08/10 05:47:35 matt Exp $ */ +/* $NetBSD: memset.S,v 1.2 2017/08/29 15:00:23 ryo Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -133,7 +133,7 @@ ENTRY(memset) add x13, x15, x2 /* get ending address */ asr x13, x13, x9 /* "ending" block numebr */ cmp x13, x12 /* how many blocks? */ - b.eq .Lfilled /* none, do it 16 bytes at a time */ + b.ls .Lfilled /* none, do it 16 bytes at a time */ /* * Now we have one or more blocks to deal with. First now we need @@ -144,7 +144,7 @@ ENTRY(memset) sub x7, x10, x7 /* subtract offset from block length */ sub x2, x2, x7 /* subtract that from length */ - asr x7, x7, #2 /* qword -> word */ + asr x7, x7, #4 /* length -> N*16 */ tbz x15, #0, .Lzero_hword_aligned strb wzr, [x15], #1 @@ -158,28 +158,18 @@ ENTRY(memset) tbz x15, #3, .Lzero_qword_aligned str xzr, [x15], #8 .Lzero_qword_aligned: - cbz x7, .Lblock_aligned /* no qwords? just branch */ - adr x6, .Lblock_aligned - sub x6, x6, x7 /* backup to write the last N qwords */ - br x6 /* and do it */ + cbz x7, .Lblock_aligned /* less than 16 bytes? just branch */ + adr x6, .Lunrolled_end + sub x6, x6, x7, lsl #2 /* backup to write the last N insn */ + br x6 /* and do it */ + /* - * This is valid for cache lines <= 256 bytes. + * The maximum size of DCZID_EL0:BS supported is 2048 bytes. */ + .rept (2048 / 16) - 1 stp xzr, xzr, [x15], #16 - stp xzr, xzr, [x15], #16 - stp xzr, xzr, [x15], #16 - stp xzr, xzr, [x15], #16 - stp xzr, xzr, [x15], #16 - stp xzr, xzr, [x15], #16 - stp xzr, xzr, [x15], #16 - stp xzr, xzr, [x15], #16 - stp xzr, xzr, [x15], #16 - stp xzr, xzr, [x15], #16 - stp xzr, xzr, [x15], #16 - stp xzr, xzr, [x15], #16 - stp xzr, xzr, [x15], #16 - stp xzr, xzr, [x15], #16 - stp xzr, xzr, [x15], #16 + .endr +.Lunrolled_end: /* * Now we are block aligned. @@ -193,7 +183,7 @@ ENTRY(memset) ret .Lblock_done: - and x2, x2, x12 /* make positive again */ + and x2, x2, x11 /* make positive again */ mov x6, xzr /* fill 2nd xword */ b .Lqword_loop /* and finish filling */
CVS commit: src/common/lib/libc/arch/aarch64/string
Module Name:src Committed By: ryo Date: Tue Aug 22 06:45:08 UTC 2017 Modified Files: src/common/lib/libc/arch/aarch64/string: strlen.S Log Message: aarch64/strlen.S didn't work. fixed some bugs. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/common/lib/libc/arch/aarch64/string/strlen.S 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/aarch64/string/strlen.S diff -u src/common/lib/libc/arch/aarch64/string/strlen.S:1.1 src/common/lib/libc/arch/aarch64/string/strlen.S:1.2 --- src/common/lib/libc/arch/aarch64/string/strlen.S:1.1 Sun Aug 10 05:47:35 2014 +++ src/common/lib/libc/arch/aarch64/string/strlen.S Tue Aug 22 06:45:07 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: strlen.S,v 1.1 2014/08/10 05:47:35 matt Exp $ */ +/* $NetBSD: strlen.S,v 1.2 2017/08/22 06:45:07 ryo Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include -RCSID("$NetBSD: strlen.S,v 1.1 2014/08/10 05:47:35 matt Exp $") +RCSID("$NetBSD: strlen.S,v 1.2 2017/08/22 06:45:07 ryo Exp $") #ifdef STRNLEN #define FUNCNAME strnlen @@ -47,6 +47,7 @@ RCSID("$NetBSD: strlen.S,v 1.1 2014/08/1 ENTRY(FUNCNAME) mov x4, x0 /* need x0 for return */ add x9, x0, #8 /* start + dword */ + bic x9, x9, #7 /* and aligned */ #ifdef STRNLEN add x10, x0, x1 /* don't go past here */ #endif @@ -93,16 +94,16 @@ ENTRY(FUNCNAME) * We know there is a NUL in this dword. Use clz to find it. */ #ifdef __AARCH64EL__ - rev x7, x7 /* convert to BE */ + rev x6, x6 /* convert to BE */ #endif - clz x7, x7 /* find null byte */ - add x0, x0, x7, lsr #3 /* add offset to the length */ + clz x6, x6 /* find null byte */ + add x0, x0, x6, lsr #3 /* add offset to the length */ add x0, x0, x4 /* add end to the length */ sub x0, x0, x9 /* subtract start from the length */ #ifdef STRNLEN cmp x0, x1 /* did we go too far? */ -cselx0, x0, x1, lt /* yes, return max length */ + csel x0, x0, x1, lt /* yes, return max length */ #endif ret #ifdef STRNLEN
CVS commit: src/common/lib/libc/arch/arm/string
Module Name:src Committed By: skrll Date: Thu Apr 13 07:49:52 UTC 2017 Modified Files: src/common/lib/libc/arch/arm/string: memmove.S Log Message: Comment alignment. No functional change. To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/common/lib/libc/arch/arm/string/memmove.S 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/string/memmove.S diff -u src/common/lib/libc/arch/arm/string/memmove.S:1.9 src/common/lib/libc/arch/arm/string/memmove.S:1.10 --- src/common/lib/libc/arch/arm/string/memmove.S:1.9 Thu Mar 26 13:34:51 2015 +++ src/common/lib/libc/arch/arm/string/memmove.S Thu Apr 13 07:49:52 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: memmove.S,v 1.9 2015/03/26 13:34:51 justin Exp $ */ +/* $NetBSD: memmove.S,v 1.10 2017/04/13 07:49:52 skrll Exp $ */ /*- * Copyright (c) 1997 The NetBSD Foundation, Inc. @@ -64,7 +64,7 @@ ENTRY(bcopy) ands r12, r0, #3 bne .Lmemmove_fdestul /* oh unaligned destination addr */ ands r12, r1, #3 - bne .Lmemmove_fsrcul /* oh unaligned source addr */ + bne .Lmemmove_fsrcul /* oh unaligned source addr */ .Lmemmove_ft8: /* We have aligned source and destination */
CVS commit: src/common/lib/libc/arch/arm/string
Module Name:src Committed By: christos Date: Sat Jan 14 04:54:42 UTC 2017 Modified Files: src/common/lib/libc/arch/arm/string: strcpy_naive.S Log Message: fix standalone To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/arm/string/strcpy_naive.S 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/string/strcpy_naive.S diff -u src/common/lib/libc/arch/arm/string/strcpy_naive.S:1.7 src/common/lib/libc/arch/arm/string/strcpy_naive.S:1.8 --- src/common/lib/libc/arch/arm/string/strcpy_naive.S:1.7 Fri Jan 13 23:53:25 2017 +++ src/common/lib/libc/arch/arm/string/strcpy_naive.S Fri Jan 13 23:54:42 2017 @@ -28,7 +28,7 @@ */ #include -RCSID("$NetBSD: strcpy_naive.S,v 1.7 2017/01/14 04:53:25 christos Exp $") +RCSID("$NetBSD: strcpy_naive.S,v 1.8 2017/01/14 04:54:42 christos Exp $") #ifdef _LIBC #ifdef STRLCPY @@ -82,12 +82,12 @@ ENTRY(strncpy) END(strncpy) #else /* LINTSTUB: char * strcpy(char *, const char *) */ -ENTRY(_strcpy) +ENTRY(strcpy) mov ip, r0 /* we want to preserve r0 */ 1: ldrb r3, [r1], #1 /* read a byte */ strb r3, [ip], #1 /* write a byte */ teq r3, #0 /* was it a NUL? */ bne 1b /* no, try next byte */ RET/* return dst pointer */ -END(_strcpy) +END(strcpy) #endif
CVS commit: src/common/lib/libc/arch/arm/string
Module Name:src Committed By: christos Date: Sat Jan 14 04:53:25 UTC 2017 Modified Files: src/common/lib/libc/arch/arm/string: strcpy_naive.S Log Message: fix standalone To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/arm/string/strcpy_naive.S 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/string/strcpy_naive.S diff -u src/common/lib/libc/arch/arm/string/strcpy_naive.S:1.6 src/common/lib/libc/arch/arm/string/strcpy_naive.S:1.7 --- src/common/lib/libc/arch/arm/string/strcpy_naive.S:1.6 Fri Jan 13 22:35:21 2017 +++ src/common/lib/libc/arch/arm/string/strcpy_naive.S Fri Jan 13 23:53:25 2017 @@ -28,7 +28,7 @@ */ #include -RCSID("$NetBSD: strcpy_naive.S,v 1.6 2017/01/14 03:35:21 christos Exp $") +RCSID("$NetBSD: strcpy_naive.S,v 1.7 2017/01/14 04:53:25 christos Exp $") #ifdef _LIBC #ifdef STRLCPY @@ -66,7 +66,7 @@ ENTRY(strlcpy) END(strlcpy) #elif defined(STRNCPY) /* LINTSTUB: char * strncpy(char *, const char *, size_t) */ -ENTRY(_strncpy) +ENTRY(strncpy) mov ip, r0 /* we want to preserve r0 */ add r2, r2, r0 /* get end of dst buffer */ 1: cmp ip, r2 /* are at the end of dst already? */ @@ -79,7 +79,7 @@ ENTRY(_strncpy) strblt r3, [ip], #1 /* no, write a NUL */ blt 2b /* until dst is filled */ 3: RET/* return dst pointer */ -END(_strncpy) +END(strncpy) #else /* LINTSTUB: char * strcpy(char *, const char *) */ ENTRY(_strcpy)
CVS commit: src/common/lib/libc/arch/arm/string
Module Name:src Committed By: christos Date: Sat Jan 14 03:35:21 UTC 2017 Modified Files: src/common/lib/libc/arch/arm/string: strcpy_arm.S strcpy_naive.S Log Message: fix rump To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/common/lib/libc/arch/arm/string/strcpy_arm.S \ src/common/lib/libc/arch/arm/string/strcpy_naive.S 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/string/strcpy_arm.S diff -u src/common/lib/libc/arch/arm/string/strcpy_arm.S:1.5 src/common/lib/libc/arch/arm/string/strcpy_arm.S:1.6 --- src/common/lib/libc/arch/arm/string/strcpy_arm.S:1.5 Fri Jan 13 22:00:13 2017 +++ src/common/lib/libc/arch/arm/string/strcpy_arm.S Fri Jan 13 22:35:21 2017 @@ -29,19 +29,29 @@ #include -RCSID("$NetBSD: strcpy_arm.S,v 1.5 2017/01/14 03:00:13 christos Exp $") +RCSID("$NetBSD: strcpy_arm.S,v 1.6 2017/01/14 03:35:21 christos Exp $") #ifdef STRLCPY #ifdef _LIBC WEAK_ALIAS(strlcpy, _strlcpy) -#endif -#define FUNCNAME _strlcpy +# define FUNCNAME _strlcpy +# else +# define FUNCNAME strlcpy +# endif #elif defined(STRNCPY) +# ifdef _LIBC WEAK_ALIAS(strncpy, _strncpy) -#define FUNCNAME _strncpy +# define FUNCNAME _strncpy +# else +# define FUNCNAME strncpy +# endif #else +# ifdef _LIBC WEAK_ALIAS(strcpy, _strcpy) -#define FUNCNAME _strcpy +# define FUNCNAME _strcpy +# else +# define FUNCNAME strcpy +# endif #endif #ifdef __ARMEL__ Index: src/common/lib/libc/arch/arm/string/strcpy_naive.S diff -u src/common/lib/libc/arch/arm/string/strcpy_naive.S:1.5 src/common/lib/libc/arch/arm/string/strcpy_naive.S:1.6 --- src/common/lib/libc/arch/arm/string/strcpy_naive.S:1.5 Fri Jan 13 08:14:54 2017 +++ src/common/lib/libc/arch/arm/string/strcpy_naive.S Fri Jan 13 22:35:21 2017 @@ -28,11 +28,12 @@ */ #include -RCSID("$NetBSD: strcpy_naive.S,v 1.5 2017/01/13 13:14:54 christos Exp $") +RCSID("$NetBSD: strcpy_naive.S,v 1.6 2017/01/14 03:35:21 christos Exp $") #ifdef _LIBC #ifdef STRLCPY WEAK_ALIAS(strlcpy, _strlcpy) +#define strlcpy _strlcpy #endif #endif @@ -43,7 +44,7 @@ WEAK_ALIAS(strlcpy, _strlcpy) #if defined(STRLCPY) /* LINTSTUB: size_t strlcpy(char *, const char *, size_t) */ -ENTRY(_strlcpy) +ENTRY(strlcpy) add ip, r1, #1 /* save src pointer (+ NUL) */ subs r2, r2, #1 /* make sure there's room for a NUL */ blt 3f /* no room, do the strlen */ @@ -62,7 +63,7 @@ ENTRY(_strlcpy) bne 3b /* no, get next byte */ 4: sub r0, r1, ip /* return length of src string */ RET -END(_strlcpy) +END(strlcpy) #elif defined(STRNCPY) /* LINTSTUB: char * strncpy(char *, const char *, size_t) */ ENTRY(_strncpy)
CVS commit: src/common/lib/libc/arch/arm/string
Module Name:src Committed By: christos Date: Sat Jan 14 03:00:13 UTC 2017 Modified Files: src/common/lib/libc/arch/arm/string: strcpy_arm.S strcpy_thumb.S strlcat.S Log Message: fix weak symbols. More work needs to be done for memcpy/strlen etc. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/arm/string/strcpy_arm.S cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/arm/string/strcpy_thumb.S cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/arm/string/strlcat.S 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/string/strcpy_arm.S diff -u src/common/lib/libc/arch/arm/string/strcpy_arm.S:1.4 src/common/lib/libc/arch/arm/string/strcpy_arm.S:1.5 --- src/common/lib/libc/arch/arm/string/strcpy_arm.S:1.4 Fri Jan 13 08:14:54 2017 +++ src/common/lib/libc/arch/arm/string/strcpy_arm.S Fri Jan 13 22:00:13 2017 @@ -29,7 +29,7 @@ #include -RCSID("$NetBSD: strcpy_arm.S,v 1.4 2017/01/13 13:14:54 christos Exp $") +RCSID("$NetBSD: strcpy_arm.S,v 1.5 2017/01/14 03:00:13 christos Exp $") #ifdef STRLCPY #ifdef _LIBC @@ -37,8 +37,10 @@ WEAK_ALIAS(strlcpy, _strlcpy) #endif #define FUNCNAME _strlcpy #elif defined(STRNCPY) +WEAK_ALIAS(strncpy, _strncpy) #define FUNCNAME _strncpy #else +WEAK_ALIAS(strcpy, _strcpy) #define FUNCNAME _strcpy #endif Index: src/common/lib/libc/arch/arm/string/strcpy_thumb.S diff -u src/common/lib/libc/arch/arm/string/strcpy_thumb.S:1.2 src/common/lib/libc/arch/arm/string/strcpy_thumb.S:1.3 --- src/common/lib/libc/arch/arm/string/strcpy_thumb.S:1.2 Fri Jan 13 08:14:54 2017 +++ src/common/lib/libc/arch/arm/string/strcpy_thumb.S Fri Jan 13 22:00:13 2017 @@ -28,11 +28,20 @@ */ #include -RCSID("$NetBSD: strcpy_thumb.S,v 1.2 2017/01/13 13:14:54 christos Exp $") +RCSID("$NetBSD: strcpy_thumb.S,v 1.3 2017/01/14 03:00:13 christos Exp $") #ifdef _LIBC #ifdef STRLCPY -WEAK_ALIAS(strlcpy, _strlcpy) +WEAK_ALIAS(strlcpy, _strlcpy) +#define strlcpy _strlcpy +#endif +#ifdef STRNCPY +WEAK_ALIAS(strncpy, _strncpy) +#define strncpy _strncpy +#endif +#ifdef STRCPY +WEAK_ALIAS(strcpy, _strcpy) +#define strcpy _strcpy #endif #endif @@ -43,7 +52,7 @@ WEAK_ALIAS(strlcpy, _strlcpy) #if defined(STRLCPY) /* LINTSTUB: size_t strlcpy(char *, const char *, size_t) */ -ENTRY(_strlcpy) +ENTRY(strlcpy) adds r3, r1, #1 /* save src pointer (+ NUL) */ subs r2, r2, #1 /* make sure there's room for a NUL */ blt 3f /* no room, do the strlen */ @@ -65,10 +74,10 @@ ENTRY(_strlcpy) bne 3b /* no, get next byte */ 4: subs r0, r1, r3 /* return length of src string */ RET -END(_strlcpy) +END(strlcpy) #elif defined(STRNCPY) /* LINTSTUB: char * strncpy(char *, const char *, size_t) */ -ENTRY(_strncpy) +ENTRY(strncpy) mov ip, r0 /* we want to preserve r0 */ adds r2, r2, r0 /* get end of dst buffer */ subs r1, r1, r0 /* allows to only increment once */ @@ -86,10 +95,10 @@ ENTRY(_strncpy) b 2b /* until dst is filled */ 3: mov r0, ip /* return dst pointer */ RET -END(_strncpy) +END(strncpy) #else /* LINTSTUB: char * strcpy(char *, const char *) */ -ENTRY(_strcpy) +ENTRY(strcpy) subs r2, r0, r1 /* we want to preserve r0 */ 1: ldrb r3, [r1] /* read a byte */ strb r3, [r2, r1] /* write a byte */ @@ -97,5 +106,5 @@ ENTRY(_strcpy) cmp r3, #0 /* was it a NUL? */ bne 1b /* no, try next byte */ RET/* return dst pointer */ -END(_strcpy) +END(strcpy) #endif Index: src/common/lib/libc/arch/arm/string/strlcat.S diff -u src/common/lib/libc/arch/arm/string/strlcat.S:1.3 src/common/lib/libc/arch/arm/string/strlcat.S:1.4 --- src/common/lib/libc/arch/arm/string/strlcat.S:1.3 Fri Jan 13 08:14:54 2017 +++ src/common/lib/libc/arch/arm/string/strlcat.S Fri Jan 13 22:00:13 2017 @@ -1,9 +1,10 @@ -/* $NetBSD: strlcat.S,v 1.3 2017/01/13 13:14:54 christos Exp $ */ +/* $NetBSD: strlcat.S,v 1.4 2017/01/14 03:00:13 christos Exp $ */ #include #ifdef _LIBC WEAK_ALIAS(strlcat, _strlcat) +#define strlcat _strlcat #endif #if defined(_STANDALONE) && 0 /* arm version is always smaller */
CVS commit: src/common/lib/libc/arch/arm/string
Module Name:src Committed By: christos Date: Fri Jan 13 13:14:54 UTC 2017 Modified Files: src/common/lib/libc/arch/arm/string: strcpy_arm.S strcpy_naive.S strcpy_thumb.S strlcat.S Log Message: No need to include namespace.h; no other assembly code does. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/arm/string/strcpy_arm.S cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/arm/string/strcpy_naive.S cvs rdiff -u -r1.1 -r1.2 src/common/lib/libc/arch/arm/string/strcpy_thumb.S cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/arm/string/strlcat.S 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/string/strcpy_arm.S diff -u src/common/lib/libc/arch/arm/string/strcpy_arm.S:1.3 src/common/lib/libc/arch/arm/string/strcpy_arm.S:1.4 --- src/common/lib/libc/arch/arm/string/strcpy_arm.S:1.3 Sun Aug 11 00:56:32 2013 +++ src/common/lib/libc/arch/arm/string/strcpy_arm.S Fri Jan 13 08:14:54 2017 @@ -29,21 +29,17 @@ #include -RCSID("$NetBSD: strcpy_arm.S,v 1.3 2013/08/11 04:56:32 matt Exp $") +RCSID("$NetBSD: strcpy_arm.S,v 1.4 2017/01/13 13:14:54 christos Exp $") #ifdef STRLCPY #ifdef _LIBC WEAK_ALIAS(strlcpy, _strlcpy) #endif -#define FUNCNAME strlcpy +#define FUNCNAME _strlcpy #elif defined(STRNCPY) -#define FUNCNAME strncpy +#define FUNCNAME _strncpy #else -#define FUNCNAME strcpy -#endif - -#ifdef _LIBC -#include "namespace.h" +#define FUNCNAME _strcpy #endif #ifdef __ARMEL__ Index: src/common/lib/libc/arch/arm/string/strcpy_naive.S diff -u src/common/lib/libc/arch/arm/string/strcpy_naive.S:1.4 src/common/lib/libc/arch/arm/string/strcpy_naive.S:1.5 --- src/common/lib/libc/arch/arm/string/strcpy_naive.S:1.4 Tue Aug 20 17:37:39 2013 +++ src/common/lib/libc/arch/arm/string/strcpy_naive.S Fri Jan 13 08:14:54 2017 @@ -28,13 +28,12 @@ */ #include -RCSID("$NetBSD: strcpy_naive.S,v 1.4 2013/08/20 21:37:39 matt Exp $") +RCSID("$NetBSD: strcpy_naive.S,v 1.5 2017/01/13 13:14:54 christos Exp $") #ifdef _LIBC #ifdef STRLCPY WEAK_ALIAS(strlcpy, _strlcpy) #endif -#include "namespace.h" #endif /* @@ -44,7 +43,7 @@ WEAK_ALIAS(strlcpy, _strlcpy) #if defined(STRLCPY) /* LINTSTUB: size_t strlcpy(char *, const char *, size_t) */ -ENTRY(strlcpy) +ENTRY(_strlcpy) add ip, r1, #1 /* save src pointer (+ NUL) */ subs r2, r2, #1 /* make sure there's room for a NUL */ blt 3f /* no room, do the strlen */ @@ -63,10 +62,10 @@ ENTRY(strlcpy) bne 3b /* no, get next byte */ 4: sub r0, r1, ip /* return length of src string */ RET -END(strlcpy) +END(_strlcpy) #elif defined(STRNCPY) /* LINTSTUB: char * strncpy(char *, const char *, size_t) */ -ENTRY(strncpy) +ENTRY(_strncpy) mov ip, r0 /* we want to preserve r0 */ add r2, r2, r0 /* get end of dst buffer */ 1: cmp ip, r2 /* are at the end of dst already? */ @@ -79,15 +78,15 @@ ENTRY(strncpy) strblt r3, [ip], #1 /* no, write a NUL */ blt 2b /* until dst is filled */ 3: RET/* return dst pointer */ -END(strncpy) +END(_strncpy) #else /* LINTSTUB: char * strcpy(char *, const char *) */ -ENTRY(strcpy) +ENTRY(_strcpy) mov ip, r0 /* we want to preserve r0 */ 1: ldrb r3, [r1], #1 /* read a byte */ strb r3, [ip], #1 /* write a byte */ teq r3, #0 /* was it a NUL? */ bne 1b /* no, try next byte */ RET/* return dst pointer */ -END(strcpy) +END(_strcpy) #endif Index: src/common/lib/libc/arch/arm/string/strcpy_thumb.S diff -u src/common/lib/libc/arch/arm/string/strcpy_thumb.S:1.1 src/common/lib/libc/arch/arm/string/strcpy_thumb.S:1.2 --- src/common/lib/libc/arch/arm/string/strcpy_thumb.S:1.1 Tue Aug 20 17:32:50 2013 +++ src/common/lib/libc/arch/arm/string/strcpy_thumb.S Fri Jan 13 08:14:54 2017 @@ -28,13 +28,12 @@ */ #include -RCSID("$NetBSD: strcpy_thumb.S,v 1.1 2013/08/20 21:32:50 matt Exp $") +RCSID("$NetBSD: strcpy_thumb.S,v 1.2 2017/01/13 13:14:54 christos Exp $") #ifdef _LIBC #ifdef STRLCPY WEAK_ALIAS(strlcpy, _strlcpy) #endif -#include "namespace.h" #endif /* @@ -44,7 +43,7 @@ WEAK_ALIAS(strlcpy, _strlcpy) #if defined(STRLCPY) /* LINTSTUB: size_t strlcpy(char *, const char *, size_t) */ -ENTRY(strlcpy) +ENTRY(_strlcpy) adds r3, r1, #1 /* save src pointer (+ NUL) */ subs r2, r2, #1 /* make sure there's room for a NUL */ blt 3f /* no room, do the strlen */ @@ -66,10 +65,10 @@ ENTRY(strlcpy) bne 3b /* no, get next byte */ 4: subs r0, r1, r3 /* return length of src string */ RET -END(strlcpy) +END(_strlcpy) #elif defined(STRNCPY) /* LINTSTUB: char * strncpy(char *, const char *, size_t) */ -ENTRY(strncpy) +ENTRY(_strncpy) mov ip, r0 /* we want to preserve r0 */ adds r2, r2, r0 /* get end of dst buffer */ subs r1, r1, r0 /* allows to only increment once */ @@ -87,10 +86,10 @@ ENTRY(strncpy) b 2b /* until
CVS commit: src/common/lib/libc/arch/ia64/string
Module Name:src Committed By: scole Date: Fri Aug 5 15:06:02 UTC 2016 Added Files: src/common/lib/libc/arch/ia64/string: bcopy.S bzero.S ffs.S memcpy.S memmove.S Log Message: PR port-ia64/51261 Imported from FreeBSD with a minor change or two To generate a diff of this commit: cvs rdiff -u -r0 -r1.1 src/common/lib/libc/arch/ia64/string/bcopy.S \ src/common/lib/libc/arch/ia64/string/bzero.S \ src/common/lib/libc/arch/ia64/string/ffs.S \ src/common/lib/libc/arch/ia64/string/memcpy.S \ src/common/lib/libc/arch/ia64/string/memmove.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Added files: Index: src/common/lib/libc/arch/ia64/string/bcopy.S diff -u /dev/null src/common/lib/libc/arch/ia64/string/bcopy.S:1.1 --- /dev/null Fri Aug 5 15:06:02 2016 +++ src/common/lib/libc/arch/ia64/string/bcopy.S Fri Aug 5 15:06:02 2016 @@ -0,0 +1,102 @@ +/* $NetBSD: bcopy.S,v 1.1 2016/08/05 15:06:02 scole Exp $ */ + +/*- + * Copyright (c) 2000 Doug Rabson + * 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 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 AUTHOR 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. + * + * __FBSDID("$FreeBSD: releng/10.1/lib/libc/ia64/string/bcopy.S 125669 2004-02-10 20:45:28Z cperciva $"); + */ + +#include + +/* + * void + * bcopy(const void *src, void *dst, size_t len); + */ + +/* + * Not the fastest bcopy in the world. + */ +ENTRY(bcopy, 3) + + cmp.le p6,p0=in2,r0 // bail if len <= 0 +(p6) br.ret.spnt.few rp + + sub r14=in1,in0 ;; // check for overlap + cmp.ltu p6,p0=r14,in2 // dst-src < len +(p6) br.cond.spnt.few 5f + + extr.u r14=in0,0,3 // src & 7 + extr.u r15=in1,0,3 ;; // dst & 7 + cmp.eq p6,p0=r14,r15 // different alignment? +(p6) br.cond.spnt.few 2f // branch if same alignment + +1: ld1 r14=[in0],1 ;; // copy bytewise + st1 [in1]=r14,1 + add in2=-1,in2 ;; // len-- + cmp.ne p6,p0=r0,in2 +(p6) br.cond.dptk.few 1b // loop + br.ret.sptk.few rp // done + +2: cmp.eq p6,p0=r14,r0 // aligned? +(p6) br.cond.sptk.few 4f + +3: ld1 r14=[in0],1 ;; // copy bytewise + st1 [in1]=r14,1 + extr.u r15=in0,0,3 // src & 7 + add in2=-1,in2 ;; // len-- + cmp.eq p6,p0=r0,in2 // done? + cmp.eq p7,p0=r0,r15 ;; // aligned now? +(p6) br.ret.spnt.few rp // return if done +(p7) br.cond.spnt.few 4f // go to main copy + br.cond.sptk.few 3b // more bytes to copy + + // At this point, in2 is non-zero + +4: mov r14=8 ;; + cmp.ltu p6,p0=in2,r14 ;; // len < 8? +(p6) br.cond.spnt.few 1b // byte copy the end + ld8 r15=[in0],8 ;; // copy word + st8 [in1]=r15,8 + add in2=-8,in2 ;; // len -= 8 + cmp.ne p6,p0=r0,in2 // done? +(p6) br.cond.spnt.few 4b // again + + br.ret.sptk.few rp // return + + // Don't bother optimising overlap case + +5: add in0=in0,in2 + add in1=in1,in2 ;; + add in0=-1,in0 + add in1=-1,in1 ;; + +6: ld1 r14=[in0],-1 ;; + st1 [in1]=r14,-1 + add in2=-1,in2 ;; + cmp.ne p6,p0=r0,in2 +(p6) br.cond.spnt.few 6b + + br.ret.sptk.few rp +END(bcopy) Index: src/common/lib/libc/arch/ia64/string/bzero.S diff -u /dev/null src/common/lib/libc/arch/ia64/string/bzero.S:1.1 --- /dev/null Fri Aug 5 15:06:02 2016 +++ src/common/lib/libc/arch/ia64/string/bzero.S Fri Aug 5 15:06:02 2016 @@ -0,0 +1,88 @@ +/* $NetBSD: bzero.S,v 1.1 2016/08/05 15:06:02 scole Exp $ */ + +/*- + * Copyright (c) 2000 Doug Rabson + * 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 + *
CVS commit: src/common/lib/libc/arch/sparc/atomic
Module Name:src Committed By: nakayama Date: Sun May 29 05:10:34 UTC 2016 Modified Files: src/common/lib/libc/arch/sparc/atomic: Makefile.inc Log Message: Use sparc64 code always on 32-bit sparc64 kernels since %psr read/write instructions used in sparc's atomic_cas.S don't exist in SPARC-V9. To generate a diff of this commit: cvs rdiff -u -r1.21 -r1.22 src/common/lib/libc/arch/sparc/atomic/Makefile.inc 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/sparc/atomic/Makefile.inc diff -u src/common/lib/libc/arch/sparc/atomic/Makefile.inc:1.21 src/common/lib/libc/arch/sparc/atomic/Makefile.inc:1.22 --- src/common/lib/libc/arch/sparc/atomic/Makefile.inc:1.21 Sat Feb 27 19:19:33 2016 +++ src/common/lib/libc/arch/sparc/atomic/Makefile.inc Sun May 29 05:10:34 2016 @@ -1,10 +1,11 @@ -# $NetBSD: Makefile.inc,v 1.21 2016/02/27 19:19:33 joerg Exp $ +# $NetBSD: Makefile.inc,v 1.22 2016/05/29 05:10:34 nakayama Exp $ .include # This is called with MACHINE=sparc64 && MACHINE_ARCH=sparc when building # 32 bit kernels for ultrasparc hardware -.if ${MACHINE} == "sparc64" && ${HAVE_LLVM:Uno} == "no" +.if ${MACHINE} == "sparc64" && \ + (${HAVE_LLVM:Uno} == "no" || (defined(LIB) && ${LIB} == "kern")) SPARC64DIR= ${.PARSEDIR}/../../sparc64/atomic .PATH.c: ${SPARC64DIR}
CVS commit: src/common/lib/libc/arch/sparc/atomic
Module Name:src Committed By: joerg Date: Sat Feb 27 19:19:33 UTC 2016 Modified Files: src/common/lib/libc/arch/sparc/atomic: Makefile.inc Log Message: When using clang, do not use the sparc64 code as it doesn't provide the full set of symbols and clang in -m32 defaults to sparcv8, not sparcv8plus. To generate a diff of this commit: cvs rdiff -u -r1.20 -r1.21 src/common/lib/libc/arch/sparc/atomic/Makefile.inc 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/sparc/atomic/Makefile.inc diff -u src/common/lib/libc/arch/sparc/atomic/Makefile.inc:1.20 src/common/lib/libc/arch/sparc/atomic/Makefile.inc:1.21 --- src/common/lib/libc/arch/sparc/atomic/Makefile.inc:1.20 Sat Feb 27 19:18:29 2016 +++ src/common/lib/libc/arch/sparc/atomic/Makefile.inc Sat Feb 27 19:19:33 2016 @@ -1,10 +1,10 @@ -# $NetBSD: Makefile.inc,v 1.20 2016/02/27 19:18:29 joerg Exp $ +# $NetBSD: Makefile.inc,v 1.21 2016/02/27 19:19:33 joerg Exp $ .include # This is called with MACHINE=sparc64 && MACHINE_ARCH=sparc when building # 32 bit kernels for ultrasparc hardware -.if ${MACHINE} == "sparc64" +.if ${MACHINE} == "sparc64" && ${HAVE_LLVM:Uno} == "no" SPARC64DIR= ${.PARSEDIR}/../../sparc64/atomic .PATH.c: ${SPARC64DIR}
CVS commit: src/common/lib/libc/arch/sparc/atomic
Module Name:src Committed By: joerg Date: Sat Feb 27 19:18:29 UTC 2016 Modified Files: src/common/lib/libc/arch/sparc/atomic: Makefile.inc Log Message: Include C11 load/store helpers. To generate a diff of this commit: cvs rdiff -u -r1.19 -r1.20 src/common/lib/libc/arch/sparc/atomic/Makefile.inc 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/sparc/atomic/Makefile.inc diff -u src/common/lib/libc/arch/sparc/atomic/Makefile.inc:1.19 src/common/lib/libc/arch/sparc/atomic/Makefile.inc:1.20 --- src/common/lib/libc/arch/sparc/atomic/Makefile.inc:1.19 Sun Oct 18 02:28:07 2015 +++ src/common/lib/libc/arch/sparc/atomic/Makefile.inc Sat Feb 27 19:18:29 2016 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.inc,v 1.19 2015/10/18 02:28:07 nakayama Exp $ +# $NetBSD: Makefile.inc,v 1.20 2016/02/27 19:18:29 joerg Exp $ .include @@ -43,7 +43,8 @@ SRCS+= atomic_nand_16_cas.c atomic_nand_ atomic_swap_16_cas.c atomic_swap_8_cas.c \ atomic_c11_compare_exchange_cas_32.c \ atomic_c11_compare_exchange_cas_16.c \ - atomic_c11_compare_exchange_cas_8.c + atomic_c11_compare_exchange_cas_8.c \ + atomic_load.c atomic_store.c . endif . if (${LIB} == "kern" || ${LIB} == "rump")
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: skrll Date: Fri Dec 11 12:41:10 UTC 2015 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_nand_16.S atomic_nand_32.S atomic_nand_64.S atomic_nand_8.S sync_fetch_and_nand_8.S Log Message: Use gcc 4.4 and later operation for nand, i.e. *ptr = ~(tmp & value) instead of *ptr = ~tmp & value There was also another bug in sync_fetch_and_nand_8 which I've also fixed. PR port-arm32/50513: Incorrect logic for atomic_nand_xx.S To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/arm/atomic/atomic_nand_16.S \ src/common/lib/libc/arch/arm/atomic/atomic_nand_32.S \ src/common/lib/libc/arch/arm/atomic/atomic_nand_8.S cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/arm/atomic/atomic_nand_64.S cvs rdiff -u -r1.4 -r1.5 \ src/common/lib/libc/arch/arm/atomic/sync_fetch_and_nand_8.S 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/atomic_nand_16.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_nand_16.S:1.2 src/common/lib/libc/arch/arm/atomic/atomic_nand_16.S:1.3 --- src/common/lib/libc/arch/arm/atomic/atomic_nand_16.S:1.2 Tue Mar 4 16:15:28 2014 +++ src/common/lib/libc/arch/arm/atomic/atomic_nand_16.S Fri Dec 11 12:41:10 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_nand_16.S,v 1.2 2014/03/04 16:15:28 matt Exp $ */ +/* $NetBSD: atomic_nand_16.S,v 1.3 2015/12/11 12:41:10 skrll Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -36,8 +36,8 @@ ENTRY_NP(_atomic_nand_16) mov ip, r0 1: ldrexh r0, [ip] /* load old value (to be returned) */ - mvns r3, r0 /* complement source */ - ands r3, r3, r1 /* calculate new value */ + ands r3, r0, r1 /* calculate new value step 1 */ + mvns r3, r3 /* ... complement for new value */ strexh r2, r3, [ip] /* try to store */ cmp r2, #0 /* succeed? */ bne 1b /* no, try again */ @@ -57,8 +57,8 @@ STRONG_ALIAS(_atomic_nand_ushort,_atomic ENTRY_NP(_atomic_nand_16_nv) mov ip, r0 /* need r0 for return value */ 1: ldrexh r0, [ip] /* load old value */ - mvns r0, r0 /* complement source */ - ands r0, r0, r1 /* calculate new value (return value) */ + ands r0, r0, r1 /* calculate new value step 1 */ + mvns r0, r0 /* ... complement for new value */ strexh r2, r0, [ip] /* try to store */ cmp r2, #0 /* succeed? */ bne 1b /* no, try again? */ Index: src/common/lib/libc/arch/arm/atomic/atomic_nand_32.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_nand_32.S:1.2 src/common/lib/libc/arch/arm/atomic/atomic_nand_32.S:1.3 --- src/common/lib/libc/arch/arm/atomic/atomic_nand_32.S:1.2 Tue Mar 4 16:15:28 2014 +++ src/common/lib/libc/arch/arm/atomic/atomic_nand_32.S Fri Dec 11 12:41:10 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_nand_32.S,v 1.2 2014/03/04 16:15:28 matt Exp $ */ +/* $NetBSD: atomic_nand_32.S,v 1.3 2015/12/11 12:41:10 skrll Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -36,8 +36,8 @@ ENTRY_NP(_atomic_nand_32) mov ip, r0 1: ldrex r0, [ip] /* load old value (to be returned) */ - mvns r3, r0 /* complement source */ - ands r3, r3, r1 /* calculate new value */ + ands r3, r0, r1 /* calculate new value step 1 */ + mvns r3, r3 /* ... complement for new value */ strex r2, r3, [ip] /* try to store */ cmp r2, #0 /* succeed? */ bne 1b /* no, try again */ @@ -59,8 +59,8 @@ STRONG_ALIAS(_atomic_nand_ulong,_atomic_ ENTRY_NP(_atomic_nand_32_nv) mov ip, r0 /* need r0 for return value */ 1: ldrex r0, [ip] /* load old value */ - mvns r0, r0 /* complement source */ - ands r0, r0, r1 /* calculate new value (return value) */ + ands r0, r0, r1 /* calculate new value step 1 */ + mvns r0, r0 /* ... complement for new value */ strex r2, r0, [ip] /* try to store */ cmp r2, #0 /* succeed? */ bne 1b /* no, try again? */ Index: src/common/lib/libc/arch/arm/atomic/atomic_nand_8.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_nand_8.S:1.2 src/common/lib/libc/arch/arm/atomic/atomic_nand_8.S:1.3 --- src/common/lib/libc/arch/arm/atomic/atomic_nand_8.S:1.2 Tue Mar 4 16:15:28 2014 +++ src/common/lib/libc/arch/arm/atomic/atomic_nand_8.S Fri Dec 11 12:41:10 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_nand_8.S,v 1.2 2014/03/04 16:15:28 matt Exp $ */ +/* $NetBSD: atomic_nand_8.S,v 1.3 2015/12/11 12:41:10 skrll Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -36,8 +36,8 @@ ENTRY_NP(_atomic_nand_8) mov ip, r0 1: ldrexb r0, [ip] /* load old value (to be returned) */ - mvns r3, r0 /* complement source */ - ands r3, r3, r1 /* calculate new value */ + ands r3, r0, r1 /* calculate new value step 1 */ + mvns r3, r3 /* ... complement for new value */ strexb r2, r3, [ip] /* try to store */ cmp r2, #0 /* succeed? */ bne 1b /* no, try again */ @@ -57,8 +57,8 @@ STRONG_ALIAS(_atomic_nand_uchar,_atomic_
CVS commit: src/common/lib/libc/arch
Module Name:src Committed By: nakayama Date: Sun Oct 18 02:28:07 UTC 2015 Modified Files: src/common/lib/libc/arch/sparc/atomic: Makefile.inc src/common/lib/libc/arch/sparc64/atomic: atomic_add.S atomic_and.S atomic_cas.S atomic_dec.S atomic_inc.S atomic_op_asm.h atomic_or.S atomic_swap.S Log Message: Fix 64-bit atomic operations on 32-bit kernel and userland, and add support for missing __sync_*_8 builtins. To generate a diff of this commit: cvs rdiff -u -r1.18 -r1.19 src/common/lib/libc/arch/sparc/atomic/Makefile.inc cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/sparc64/atomic/atomic_add.S \ src/common/lib/libc/arch/sparc64/atomic/atomic_and.S \ src/common/lib/libc/arch/sparc64/atomic/atomic_cas.S \ src/common/lib/libc/arch/sparc64/atomic/atomic_inc.S \ src/common/lib/libc/arch/sparc64/atomic/atomic_op_asm.h \ src/common/lib/libc/arch/sparc64/atomic/atomic_swap.S cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/sparc64/atomic/atomic_dec.S \ src/common/lib/libc/arch/sparc64/atomic/atomic_or.S 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/sparc/atomic/Makefile.inc diff -u src/common/lib/libc/arch/sparc/atomic/Makefile.inc:1.18 src/common/lib/libc/arch/sparc/atomic/Makefile.inc:1.19 --- src/common/lib/libc/arch/sparc/atomic/Makefile.inc:1.18 Mon Oct 13 08:59:41 2014 +++ src/common/lib/libc/arch/sparc/atomic/Makefile.inc Sun Oct 18 02:28:07 2015 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.inc,v 1.18 2014/10/13 08:59:41 martin Exp $ +# $NetBSD: Makefile.inc,v 1.19 2015/10/18 02:28:07 nakayama Exp $ .include @@ -12,6 +12,12 @@ SPARC64DIR= ${.PARSEDIR}/../../sparc64/a .include "${SPARC64DIR}/Makefile.inc" +.if defined(LIB) && (${LIB} == "kern" || ${LIB} == "c" || ${LIB} == "pthread" \ + || ${LIB} == "rump") +SRCS+= atomic_nand_64_cas.c atomic_xor_64_cas.c atomic_sub_64_cas.c \ + atomic_cas_64_cas.c +.endif + .else . if defined(LIB) Index: src/common/lib/libc/arch/sparc64/atomic/atomic_add.S diff -u src/common/lib/libc/arch/sparc64/atomic/atomic_add.S:1.6 src/common/lib/libc/arch/sparc64/atomic/atomic_add.S:1.7 --- src/common/lib/libc/arch/sparc64/atomic/atomic_add.S:1.6 Sun May 25 15:56:12 2008 +++ src/common/lib/libc/arch/sparc64/atomic/atomic_add.S Sun Oct 18 02:28:07 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_add.S,v 1.6 2008/05/25 15:56:12 chs Exp $ */ +/* $NetBSD: atomic_add.S,v 1.7 2015/10/18 02:28:07 nakayama Exp $ */ /*- * Copyright (c) 2007 The NetBSD Foundation, Inc. @@ -52,14 +52,22 @@ ATOMIC_OP_ALIAS(atomic_add_int_nv,_atomi STRONG_ALIAS(_atomic_add_int_nv,_atomic_add_32) ENTRY(_atomic_add_64) +#ifndef __arch64__ + COMBINE(%o1, %o2, %o1) +#endif ldx [%o0], %o2 1: add %o1, %o2, %o3 casx [%o0], %o2, %o3 cmp %o2, %o3 bne,a,pn %xcc, 1b mov %o3, %o2 +#ifdef __arch64__ retl add %o1, %o2, %o0 +#else + add %o1, %o2, %o0 + SPLIT_RETL(%o0, %o0, %o1) +#endif ATOMIC_OP_ALIAS(atomic_add_64,_atomic_add_64) ATOMIC_OP_ALIAS(atomic_add_64_nv,_atomic_add_64) @@ -74,3 +82,19 @@ ATOMIC_OP_ALIAS_SIZE(atomic_add_long_nv, STRONG_ALIAS_SIZE(_atomic_add_long_nv,_atomic_add) ATOMIC_OP_ALIAS_SIZE(atomic_add_ptr_nv,_atomic_add) STRONG_ALIAS_SIZE(_atomic_add_ptr_nv,_atomic_add) + +#if !defined(__arch64__) && defined(CRT_ALIAS) +ENTRY(__sync_fetch_and_add_8) + COMBINE(%o1, %o2, %o1) + ldx [%o0], %o2 +1: add %o1, %o2, %o3 + casx [%o0], %o2, %o3 + cmp %o2, %o3 + bne,a,pn %xcc, 1b + mov %o3, %o2 + SPLIT_RETL(%o2, %o0, %o1) +CRT_ALIAS(__sync_add_and_fetch_8,_atomic_add_64_nv) + +CRT_ALIAS(__atomic_fetch_add_8,__sync_fetch_and_add_8) +CRT_ALIAS(__atomic_add_fetch_8,__sync_add_and_fetch_8) +#endif Index: src/common/lib/libc/arch/sparc64/atomic/atomic_and.S diff -u src/common/lib/libc/arch/sparc64/atomic/atomic_and.S:1.6 src/common/lib/libc/arch/sparc64/atomic/atomic_and.S:1.7 --- src/common/lib/libc/arch/sparc64/atomic/atomic_and.S:1.6 Sun May 25 15:56:12 2008 +++ src/common/lib/libc/arch/sparc64/atomic/atomic_and.S Sun Oct 18 02:28:07 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_and.S,v 1.6 2008/05/25 15:56:12 chs Exp $ */ +/* $NetBSD: atomic_and.S,v 1.7 2015/10/18 02:28:07 nakayama Exp $ */ /*- * Copyright (c) 2007 The NetBSD Foundation, Inc. @@ -52,14 +52,22 @@ ATOMIC_OP_ALIAS(atomic_and_uint_nv,_atom STRONG_ALIAS(_atomic_and_uint_nv,_atomic_and_32) ENTRY(_atomic_and_64) +#ifndef __arch64__ + COMBINE(%o1, %o2, %o1) +#endif ldx [%o0], %o2 1: and %o1, %o2, %o3 casx [%o0], %o2, %o3 cmp %o2, %o3 bne,a,pn %xcc, 1b mov %o3, %o2 +#ifdef __arch64__ retl and %o1, %o2, %o0 +#else + and %o1, %o2, %o0 + SPLIT_RETL(%o0, %o0, %o1) +#endif ATOMIC_OP_ALIAS(atomic_and_64,_atomic_and_64) ATOMIC_OP_ALIAS(atomic_and_64_nv,_atomic_and_64) @@ -70,3 +78,19 @@ STRONG_ALIAS_SIZE(_atomic_and_ulong,_ato ATOMIC_OP_ALIAS_SIZE(atomic_and_ulong_nv,_atomic_and)
CVS commit: src/common/lib/libc/arch/m68k/atomic
Module Name:src Committed By: mlelstv Date: Fri Jul 10 20:16:01 UTC 2015 Modified Files: src/common/lib/libc/arch/m68k/atomic: atomic_cas.S Log Message: fix comment To generate a diff of this commit: cvs rdiff -u -r1.12 -r1.13 src/common/lib/libc/arch/m68k/atomic/atomic_cas.S 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/m68k/atomic/atomic_cas.S diff -u src/common/lib/libc/arch/m68k/atomic/atomic_cas.S:1.12 src/common/lib/libc/arch/m68k/atomic/atomic_cas.S:1.13 --- src/common/lib/libc/arch/m68k/atomic/atomic_cas.S:1.12 Sat Jul 4 07:11:45 2015 +++ src/common/lib/libc/arch/m68k/atomic/atomic_cas.S Fri Jul 10 20:16:01 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_cas.S,v 1.12 2015/07/04 07:11:45 isaki Exp $ */ +/* $NetBSD: atomic_cas.S,v 1.13 2015/07/10 20:16:01 mlelstv Exp $ */ /*- * Copyright (c) 2007, 2008 The NetBSD Foundation, Inc. @@ -90,7 +90,7 @@ ENTRY(__sync_bool_compare_and_swap_2) movw 8+2(%sp), %d0 /* lower word */ movw 12+2(%sp), %d1 /* lower word */ casw %d0, %d1, (%a0) - /* %d3 now contains the old value */ + /* %d0 now contains the old value */ beqs 1f clrl %d0 /* return failure */ rts @@ -116,7 +116,7 @@ ENTRY(__sync_bool_compare_and_swap_1) movb 8+3(%sp), %d0 /* lower byte */ movb 12+3(%sp), %d1 /* lower byte */ casb %d0, %d1, (%a0) - /* %d3 now contains the old value */ + /* %d0 now contains the old value */ beqs 1f clrl %d0 /* return failure */ rts
CVS commit: src/common/lib/libc/arch/m68k/atomic
Module Name:src Committed By: isaki Date: Sat Jul 4 06:56:29 UTC 2015 Modified Files: src/common/lib/libc/arch/m68k/atomic: atomic_cas.S Log Message: atomic_cas_{8,16}: - Correct the wrong offset in stack. __sync_bool_compare_and_swap_{1,2,4}: - Correct the wrong offset in stack. - D3 must be preserved in subroutines. PR/49995. To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 src/common/lib/libc/arch/m68k/atomic/atomic_cas.S 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/m68k/atomic/atomic_cas.S diff -u src/common/lib/libc/arch/m68k/atomic/atomic_cas.S:1.10 src/common/lib/libc/arch/m68k/atomic/atomic_cas.S:1.11 --- src/common/lib/libc/arch/m68k/atomic/atomic_cas.S:1.10 Sat Feb 22 17:08:30 2014 +++ src/common/lib/libc/arch/m68k/atomic/atomic_cas.S Sat Jul 4 06:56:29 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_cas.S,v 1.10 2014/02/22 17:08:30 martin Exp $ */ +/* $NetBSD: atomic_cas.S,v 1.11 2015/07/04 06:56:29 isaki Exp $ */ /*- * Copyright (c) 2007, 2008 The NetBSD Foundation, Inc. @@ -63,11 +63,9 @@ STRONG_ALIAS(_atomic_cas_ptr_ni,_atomic_ ENTRY(__sync_bool_compare_and_swap_4) movl 4(%sp), %a0 - movl 8(%sp), %d3 - movl %d3, %d2 + movl 8(%sp), %d0 movl 12(%sp), %d1 - casl %d3, %d1, (%a0) - /* %d3 now contains the old value */ + casl %d0, %d1, (%a0) beq 1f clrl %d0 /* return false */ rts @@ -77,8 +75,8 @@ END(__sync_bool_compare_and_swap_4) ENTRY(_atomic_cas_16) movl 4(%sp), %a0 - movw 8(%sp), %d0 - movw 10(%sp), %d1 + movw 8+2(%sp), %d0 /* lower word */ + movw 12+2(%sp), %d1 /* lower word */ casw %d0, %d1, (%a0) /* %d0 now contains the old value */ rts @@ -89,10 +87,9 @@ CRT_ALIAS(__sync_val_compare_and_swap_2, ENTRY(__sync_bool_compare_and_swap_2) movl 4(%sp), %a0 - movw 8(%sp), %d3 - movw %d3, %d2 - movw 10(%sp), %d1 - casw %d3, %d1, (%a0) + movw 8+2(%sp), %d0 /* lower word */ + movw 12+2(%sp), %d1 /* lower word */ + casw %d0, %d1, (%a0) /* %d3 now contains the old value */ beq 1f clrl %d0 /* return failure */ @@ -103,8 +100,8 @@ END(__sync_bool_compare_and_swap_2) ENTRY(_atomic_cas_8) movl 4(%sp), %a0 - movb 8(%sp), %d0 - movb 9(%sp), %d1 + movb 8+3(%sp), %d0 /* lower byte */ + movb 12+3(%sp), %d1 /* lower byte */ casb %d0, %d1, (%a0) /* %d0 now contains the old value */ rts @@ -116,10 +113,9 @@ CRT_ALIAS(__sync_val_compare_and_swap_1, ENTRY(__sync_bool_compare_and_swap_1) movl 4(%sp), %a0 - movb 8(%sp), %d3 - movb %d3, %d2 - movb 9(%sp), %d1 - casb %d3, %d1, (%a0) + movb 8+3(%sp), %d0 /* lower byte */ + movb 12+3(%sp), %d1 /* lower byte */ + casb %d0, %d1, (%a0) /* %d3 now contains the old value */ beq 1f clrl %d0 /* return failure */
CVS commit: src/common/lib/libc/arch/m68k/atomic
Module Name:src Committed By: isaki Date: Sat Jul 4 07:11:45 UTC 2015 Modified Files: src/common/lib/libc/arch/m68k/atomic: atomic_cas.S Log Message: Improve the code in __sync_bool_compare_and_swap_{1,2,4}. - bccs is smaller and faster than bcc(.w) in this case. - it can be used movql in this case (assembler optimise it though). To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 src/common/lib/libc/arch/m68k/atomic/atomic_cas.S 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/m68k/atomic/atomic_cas.S diff -u src/common/lib/libc/arch/m68k/atomic/atomic_cas.S:1.11 src/common/lib/libc/arch/m68k/atomic/atomic_cas.S:1.12 --- src/common/lib/libc/arch/m68k/atomic/atomic_cas.S:1.11 Sat Jul 4 06:56:29 2015 +++ src/common/lib/libc/arch/m68k/atomic/atomic_cas.S Sat Jul 4 07:11:45 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_cas.S,v 1.11 2015/07/04 06:56:29 isaki Exp $ */ +/* $NetBSD: atomic_cas.S,v 1.12 2015/07/04 07:11:45 isaki Exp $ */ /*- * Copyright (c) 2007, 2008 The NetBSD Foundation, Inc. @@ -66,10 +66,10 @@ ENTRY(__sync_bool_compare_and_swap_4) movl 8(%sp), %d0 movl 12(%sp), %d1 casl %d0, %d1, (%a0) - beq 1f + beqs 1f clrl %d0 /* return false */ rts -1: movl #1, %d0 /* return success */ +1: movql #1, %d0 /* return success */ rts END(__sync_bool_compare_and_swap_4) @@ -91,10 +91,10 @@ ENTRY(__sync_bool_compare_and_swap_2) movw 12+2(%sp), %d1 /* lower word */ casw %d0, %d1, (%a0) /* %d3 now contains the old value */ - beq 1f + beqs 1f clrl %d0 /* return failure */ rts -1: movl #1, %d0 /* return success */ +1: movql #1, %d0 /* return success */ rts END(__sync_bool_compare_and_swap_2) @@ -117,10 +117,10 @@ ENTRY(__sync_bool_compare_and_swap_1) movb 12+3(%sp), %d1 /* lower byte */ casb %d0, %d1, (%a0) /* %d3 now contains the old value */ - beq 1f + beqs 1f clrl %d0 /* return failure */ rts -1: movl #1, %d0 /* return success */ +1: movql #1, %d0 /* return success */ rts END(__sync_bool_compare_and_swap_1)
CVS commit: src/common/lib/libc/arch/mips/atomic
Module Name:src Committed By: matt Date: Tue Jun 23 20:56:17 UTC 2015 Modified Files: src/common/lib/libc/arch/mips/atomic: membar_ops.S Log Message: Always use sync if mips3 or later or not using O32 ABI. (A little redundant since not using O32 means you are using mips3 or later.) To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/mips/atomic/membar_ops.S 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/mips/atomic/membar_ops.S diff -u src/common/lib/libc/arch/mips/atomic/membar_ops.S:1.7 src/common/lib/libc/arch/mips/atomic/membar_ops.S:1.8 --- src/common/lib/libc/arch/mips/atomic/membar_ops.S:1.7 Mon Jun 22 06:06:02 2015 +++ src/common/lib/libc/arch/mips/atomic/membar_ops.S Tue Jun 23 20:56:17 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: membar_ops.S,v 1.7 2015/06/22 06:06:02 matt Exp $ */ +/* $NetBSD: membar_ops.S,v 1.8 2015/06/23 20:56:17 matt Exp $ */ /*- * Copyright (c) 2006, 2007 The NetBSD Foundation, Inc. @@ -31,21 +31,11 @@ #include atomic_op_asm.h -#if defined(_KERNEL) !defined(_RUMPKERNEL) - -#ifdef _KERNEL_OPT -#include opt_cputype.h -#include opt_lockdebug.h -#include opt_multiprocessor.h -#endif - -#include assym.h - -#if (MIPS_HAS_LLSC != 0 defined(MULTIPROCESSOR)) || !defined(__mips_o32) -#define SYNC sync -#endif -#elif !defined(__mips_o32) -#define SYNC sync +// If we are on building for MIPS III or later, put in SYNCs +#if __mips = 3 || !defined(__mips_o32) +# define SYNC sync +#else +# define SYNC nop #endif .text @@ -53,11 +43,7 @@ LEAF(_membar_sync) j ra -#ifdef SYNC SYNC -#else - nop -#endif END(_membar_sync) #ifdef __OCTEON__
CVS commit: src/common/lib/libc/arch/mips/atomic
Module Name:src Committed By: matt Date: Mon Jun 22 06:06:02 UTC 2015 Modified Files: src/common/lib/libc/arch/mips/atomic: membar_ops.S Log Message: #include assym.h Don't include assym.h with _RUMPKERNEL defined. To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/mips/atomic/membar_ops.S 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/mips/atomic/membar_ops.S diff -u src/common/lib/libc/arch/mips/atomic/membar_ops.S:1.6 src/common/lib/libc/arch/mips/atomic/membar_ops.S:1.7 --- src/common/lib/libc/arch/mips/atomic/membar_ops.S:1.6 Mon Jun 1 23:16:54 2015 +++ src/common/lib/libc/arch/mips/atomic/membar_ops.S Mon Jun 22 06:06:02 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: membar_ops.S,v 1.6 2015/06/01 23:16:54 matt Exp $ */ +/* $NetBSD: membar_ops.S,v 1.7 2015/06/22 06:06:02 matt Exp $ */ /*- * Copyright (c) 2006, 2007 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include atomic_op_asm.h -#if defined(_KERNEL) +#if defined(_KERNEL) !defined(_RUMPKERNEL) #ifdef _KERNEL_OPT #include opt_cputype.h @@ -39,8 +39,7 @@ #include opt_multiprocessor.h #endif - -#include machine/cpu.h +#include assym.h #if (MIPS_HAS_LLSC != 0 defined(MULTIPROCESSOR)) || !defined(__mips_o32) #define SYNC sync
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: joerg Date: Sun Jun 7 11:46:56 UTC 2015 Modified Files: src/common/lib/libc/arch/arm/atomic: Makefile.inc Log Message: Require ARMv5TE to assemble. To generate a diff of this commit: cvs rdiff -u -r1.27 -r1.28 src/common/lib/libc/arch/arm/atomic/Makefile.inc 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.27 src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.28 --- src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.27 Sun May 17 22:08:24 2015 +++ src/common/lib/libc/arch/arm/atomic/Makefile.inc Sun Jun 7 11:46:56 2015 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.inc,v 1.27 2015/05/17 22:08:24 justin Exp $ +# $NetBSD: Makefile.inc,v 1.28 2015/06/07 11:46:56 joerg Exp $ .ifnmake obj .include ${NETBSDSRCDIR}/common/lib/libc/arch/arm/features.mk @@ -68,6 +68,7 @@ CPUFLAGS.atomic_simplelock.c+= -marm .if ${FEAT_LDREX} == no SRCS.atomic+= atomic_init_testset.c SRCS.atomic+= atomic_cas_up.S +AFLAGS.atomic_cas_up.S+= -march=armv5te CPPFLAGS+= -D__HAVE_ASM_ATOMIC_CAS_UP CPPFLAGS+= -D__HAVE_ASM_ATOMIC_CAS_16_UP CPPFLAGS+= -D__HAVE_ASM_ATOMIC_CAS_8_UP
CVS commit: src/common/lib/libc/arch/arm/string
Module Name:src Committed By: joerg Date: Sun Jun 7 11:41:59 UTC 2015 Modified Files: src/common/lib/libc/arch/arm/string: memcpy.S Log Message: Add ARM EABI aliases for aligned arguments. To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/arm/string/memcpy.S 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/string/memcpy.S diff -u src/common/lib/libc/arch/arm/string/memcpy.S:1.7 src/common/lib/libc/arch/arm/string/memcpy.S:1.8 --- src/common/lib/libc/arch/arm/string/memcpy.S:1.7 Thu Mar 26 13:34:51 2015 +++ src/common/lib/libc/arch/arm/string/memcpy.S Sun Jun 7 11:41:59 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: memcpy.S,v 1.7 2015/03/26 13:34:51 justin Exp $ */ +/* $NetBSD: memcpy.S,v 1.8 2015/06/07 11:41:59 joerg Exp $ */ #include arm/cdefs.h @@ -10,4 +10,6 @@ #if defined(__ARM_EABI__) !defined(_RUMPKERNEL) STRONG_ALIAS(__aeabi_memcpy, memcpy) +STRONG_ALIAS(__aeabi_memcpy4, memcpy) +STRONG_ALIAS(__aeabi_memcpy8, memcpy) #endif
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: matt Date: Sun Jun 7 15:06:24 UTC 2015 Modified Files: src/common/lib/libc/arch/arm/atomic: Makefile.inc Log Message: Back out last change; fixed in the correct place. To generate a diff of this commit: cvs rdiff -u -r1.28 -r1.29 src/common/lib/libc/arch/arm/atomic/Makefile.inc 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.28 src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.29 --- src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.28 Sun Jun 7 11:46:56 2015 +++ src/common/lib/libc/arch/arm/atomic/Makefile.inc Sun Jun 7 15:06:24 2015 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.inc,v 1.28 2015/06/07 11:46:56 joerg Exp $ +# $NetBSD: Makefile.inc,v 1.29 2015/06/07 15:06:24 matt Exp $ .ifnmake obj .include ${NETBSDSRCDIR}/common/lib/libc/arch/arm/features.mk @@ -68,7 +68,6 @@ CPUFLAGS.atomic_simplelock.c+= -marm .if ${FEAT_LDREX} == no SRCS.atomic+= atomic_init_testset.c SRCS.atomic+= atomic_cas_up.S -AFLAGS.atomic_cas_up.S+= -march=armv5te CPPFLAGS+= -D__HAVE_ASM_ATOMIC_CAS_UP CPPFLAGS+= -D__HAVE_ASM_ATOMIC_CAS_16_UP CPPFLAGS+= -D__HAVE_ASM_ATOMIC_CAS_8_UP
CVS commit: src/common/lib/libc/arch/arm
Module Name:src Committed By: matt Date: Sun Jun 7 15:05:34 UTC 2015 Modified Files: src/common/lib/libc/arch/arm: features.mk Log Message: Use ${COPT} so it properly emits the right features doing MKCOMPAT To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/common/lib/libc/arch/arm/features.mk 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/features.mk diff -u src/common/lib/libc/arch/arm/features.mk:1.1 src/common/lib/libc/arch/arm/features.mk:1.2 --- src/common/lib/libc/arch/arm/features.mk:1.1 Thu Feb 27 09:37:02 2014 +++ src/common/lib/libc/arch/arm/features.mk Sun Jun 7 15:05:34 2015 @@ -1,9 +1,9 @@ -# $NetBSD: features.mk,v 1.1 2014/02/27 09:37:02 matt Exp $ +# $NetBSD: features.mk,v 1.2 2015/06/07 15:05:34 matt Exp $ .ifnmake obj TESTFILE=${NETBSDSRCDIR}/common/lib/libc/arch/arm/features.c -FEAT_EABI!=if ${COMPILE.c} -fsyntax-only -DEABI_TEST ${TESTFILE} /dev/null 2/dev/null; then echo yes; else echo no; fi -FEAT_LDREX!=if ${COMPILE.c} -fsyntax-only -DLDREX_TEST ${TESTFILE} /dev/null 2/dev/null; then echo yes; else echo no; fi -FEAT_LDRD!=if ${COMPILE.c} -fsyntax-only -DLDRD_TEST ${TESTFILE} /dev/null 2/dev/null; then echo yes; else echo no; fi -FEAT_THUMB2!=if ${COMPILE.c} -fsyntax-only -DTHUMB2_TEST ${TESTFILE} /dev/null 2/dev/null; then echo yes; else echo no; fi +FEAT_EABI!=if ${COMPILE.c} ${COPTS} -fsyntax-only -DEABI_TEST ${TESTFILE} /dev/null 2/dev/null; then echo yes; else echo no; fi +FEAT_LDREX!=if ${COMPILE.c} ${COPTS} -fsyntax-only -DLDREX_TEST ${TESTFILE} /dev/null 2/dev/null; then echo yes; else echo no; fi +FEAT_LDRD!=if ${COMPILE.c} ${COPTS} -fsyntax-only -DLDRD_TEST ${TESTFILE} /dev/null 2/dev/null; then echo yes; else echo no; fi +FEAT_THUMB2!=if ${COMPILE.c} ${COPTS} -fsyntax-only -DTHUMB2_TEST ${TESTFILE} /dev/null 2/dev/null; then echo yes; else echo no; fi .endif
CVS commit: src/common/lib/libc/arch/mips/atomic
Module Name:src Committed By: matt Date: Mon Jun 1 23:16:54 UTC 2015 Modified Files: src/common/lib/libc/arch/mips/atomic: atomic_add.S atomic_cas.S atomic_dec.S atomic_inc.S atomic_op_asm.h atomic_swap.S membar_ops.S Log Message: Include OCTEON support for syncw and saa/saad (Store Atomic Add). To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/mips/atomic/atomic_add.S \ src/common/lib/libc/arch/mips/atomic/atomic_dec.S \ src/common/lib/libc/arch/mips/atomic/atomic_inc.S \ src/common/lib/libc/arch/mips/atomic/atomic_swap.S cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/mips/atomic/atomic_cas.S cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/mips/atomic/atomic_op_asm.h cvs rdiff -u -r1.5 -r1.6 src/common/lib/libc/arch/mips/atomic/membar_ops.S 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/mips/atomic/atomic_add.S diff -u src/common/lib/libc/arch/mips/atomic/atomic_add.S:1.4 src/common/lib/libc/arch/mips/atomic/atomic_add.S:1.5 --- src/common/lib/libc/arch/mips/atomic/atomic_add.S:1.4 Wed Mar 14 16:50:34 2012 +++ src/common/lib/libc/arch/mips/atomic/atomic_add.S Mon Jun 1 23:16:54 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_add.S,v 1.4 2012/03/14 16:50:34 christos Exp $ */ +/* $NetBSD: atomic_add.S,v 1.5 2015/06/01 23:16:54 matt Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -29,7 +29,7 @@ #include machine/asm.h #include atomic_op_asm.h -RCSID($NetBSD: atomic_add.S,v 1.4 2012/03/14 16:50:34 christos Exp $) +RCSID($NetBSD: atomic_add.S,v 1.5 2015/06/01 23:16:54 matt Exp $) .text .set noreorder @@ -46,12 +46,16 @@ RCSID($NetBSD: atomic_add.S,v 1.4 2012/ LEAF(_atomic_add_32) +#if defined(_MIPS_ARCH_OCTEONP) || defined(_MIPS_ARCH_OCTEON2) + saa a1, (a0) +#else 1: INT_LL t0, 0(a0) nop INT_ADDU t0, a1 INT_SC t0, 0(a0) beq t0, zero, 1b nop +#endif j ra nop END(_atomic_add_32) @@ -72,12 +76,16 @@ ATOMIC_OP_ALIAS(atomic_add_32_nv, _atomi #if !defined(__mips_o32) LEAF(_atomic_add_64) +#if defined(_MIPS_ARCH_OCTEONP) || defined(_MIPS_ARCH_OCTEON2) + saad a1, (a0) +#else 1: REG_LL t0, 0(a0) nop REG_ADDU t0, a1 REG_SC t0, 0(a0) beq t0, zero, 1b nop +#endif j ra nop END(_atomic_add_64) Index: src/common/lib/libc/arch/mips/atomic/atomic_dec.S diff -u src/common/lib/libc/arch/mips/atomic/atomic_dec.S:1.4 src/common/lib/libc/arch/mips/atomic/atomic_dec.S:1.5 --- src/common/lib/libc/arch/mips/atomic/atomic_dec.S:1.4 Wed Mar 14 16:50:34 2012 +++ src/common/lib/libc/arch/mips/atomic/atomic_dec.S Mon Jun 1 23:16:54 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_dec.S,v 1.4 2012/03/14 16:50:34 christos Exp $ */ +/* $NetBSD: atomic_dec.S,v 1.5 2015/06/01 23:16:54 matt Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -29,7 +29,7 @@ #include machine/asm.h #include atomic_op_asm.h -RCSID($NetBSD: atomic_dec.S,v 1.4 2012/03/14 16:50:34 christos Exp $) +RCSID($NetBSD: atomic_dec.S,v 1.5 2015/06/01 23:16:54 matt Exp $) .text .set noreorder @@ -45,12 +45,17 @@ RCSID($NetBSD: atomic_dec.S,v 1.4 2012/ #endif /* _KERNEL_OPT */ LEAF(_atomic_dec_32) +#if defined(_MIPS_ARCH_OCTEONP) || defined(_MIPS_ARCH_OCTEON2) + li t0, -1 + saa t0, (a0) +#else 1: INT_LL t0, 0(a0) nop INT_ADDU t0, -1 INT_SC t0, 0(a0) beq t0, zero, 1b nop +#endif j ra nop END(_atomic_dec_32) @@ -71,12 +76,17 @@ ATOMIC_OP_ALIAS(atomic_dec_32_nv, _atomi #if !defined(__mips_o32) LEAF(_atomic_dec_64) +#if defined(_MIPS_ARCH_OCTEONP) || defined(_MIPS_ARCH_OCTEON2) + li t0, -1 + saad t0, (a0) +#else 1: REG_LL t0, 0(a0) nop REG_ADDU t0, -1 REG_SC t0, 0(a0) beq t0, zero, 1b nop +#endif j ra nop END(_atomic_dec_64) Index: src/common/lib/libc/arch/mips/atomic/atomic_inc.S diff -u src/common/lib/libc/arch/mips/atomic/atomic_inc.S:1.4 src/common/lib/libc/arch/mips/atomic/atomic_inc.S:1.5 --- src/common/lib/libc/arch/mips/atomic/atomic_inc.S:1.4 Wed Mar 14 16:50:34 2012 +++ src/common/lib/libc/arch/mips/atomic/atomic_inc.S Mon Jun 1 23:16:54 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_inc.S,v 1.4 2012/03/14 16:50:34 christos Exp $ */ +/* $NetBSD: atomic_inc.S,v 1.5 2015/06/01 23:16:54 matt Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -29,7 +29,7 @@ #include machine/asm.h #include atomic_op_asm.h -RCSID($NetBSD: atomic_inc.S,v 1.4 2012/03/14 16:50:34 christos Exp $) +RCSID($NetBSD: atomic_inc.S,v 1.5 2015/06/01 23:16:54 matt Exp $) .text .set noreorder @@ -46,12 +46,17 @@ RCSID($NetBSD: atomic_inc.S,v 1.4 2012/ LEAF(_atomic_inc_32) +#if defined(_MIPS_ARCH_OCTEONP) || defined(_MIPS_ARCH_OCTEON2) + li t0, 1 + saa t0, (a0) +#else 1: INT_LL t0, 0(a0) nop INT_ADDU t0, 1 INT_SC t0, 0(a0) beq t0, zero, 1b nop +#endif j ra nop
CVS commit: src/common/lib/libc/arch/mips/string
Module Name:src Committed By: matt Date: Tue May 26 06:55:08 UTC 2015 Modified Files: src/common/lib/libc/arch/mips/string: strchr.S strrchr.S Log Message: force 2nd to argument to unsigned byte value. (found by t_strchr and t_strrchr tests) To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/mips/string/strchr.S cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/mips/string/strrchr.S 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/mips/string/strchr.S diff -u src/common/lib/libc/arch/mips/string/strchr.S:1.3 src/common/lib/libc/arch/mips/string/strchr.S:1.4 --- src/common/lib/libc/arch/mips/string/strchr.S:1.3 Sun Jan 2 02:58:52 2011 +++ src/common/lib/libc/arch/mips/string/strchr.S Tue May 26 06:55:08 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: strchr.S,v 1.3 2011/01/02 02:58:52 matt Exp $ */ +/* $NetBSD: strchr.S,v 1.4 2015/05/26 06:55:08 matt Exp $ */ /*- * Copyright (c) 1991, 1993 @@ -36,7 +36,7 @@ #if defined(LIBC_SCCS) !defined(lint) ASMSTR(from: @(#)index.s 8.1 (Berkeley) 6/4/93) - ASMSTR($NetBSD: strchr.S,v 1.3 2011/01/02 02:58:52 matt Exp $) + ASMSTR($NetBSD: strchr.S,v 1.4 2015/05/26 06:55:08 matt Exp $) #endif /* LIBC_SCCS and not lint */ #ifdef __ABICALLS__ @@ -45,6 +45,7 @@ LEAF(strchr) XLEAF(index) + and a1, 0xff # limit to byte value 1: lbu a2, 0(a0) # get a byte PTR_ADDU a0, 1 Index: src/common/lib/libc/arch/mips/string/strrchr.S diff -u src/common/lib/libc/arch/mips/string/strrchr.S:1.2 src/common/lib/libc/arch/mips/string/strrchr.S:1.3 --- src/common/lib/libc/arch/mips/string/strrchr.S:1.2 Sun Jan 2 02:58:52 2011 +++ src/common/lib/libc/arch/mips/string/strrchr.S Tue May 26 06:55:08 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: strrchr.S,v 1.2 2011/01/02 02:58:52 matt Exp $ */ +/* $NetBSD: strrchr.S,v 1.3 2015/05/26 06:55:08 matt Exp $ */ /*- * Copyright (c) 1991, 1993 @@ -36,7 +36,7 @@ #if defined(LIBC_SCCS) !defined(lint) ASMSTR(from: @(#)rindex.s 8.1 (Berkeley) 6/4/93) - ASMSTR($NetBSD: strrchr.S,v 1.2 2011/01/02 02:58:52 matt Exp $) + ASMSTR($NetBSD: strrchr.S,v 1.3 2015/05/26 06:55:08 matt Exp $) #endif /* LIBC_SCCS and not lint */ #ifdef __ABICALLS__ @@ -45,6 +45,7 @@ LEAF(strrchr) XLEAF(rindex) + and a1, 0xff # limit to byte value move v0, zero # default if not found 1: lbu a3, 0(a0) # get a byte
CVS commit: src/common/lib/libc/arch/riscv/atomic
Module Name:src Committed By: justin Date: Mon May 18 08:24:10 UTC 2015 Modified Files: src/common/lib/libc/arch/riscv/atomic: atomic_op_asm.h Log Message: Do not set CRT_ALIAS for rump kernel; symbols provided by toolchain To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 \ src/common/lib/libc/arch/riscv/atomic/atomic_op_asm.h 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/riscv/atomic/atomic_op_asm.h diff -u src/common/lib/libc/arch/riscv/atomic/atomic_op_asm.h:1.1 src/common/lib/libc/arch/riscv/atomic/atomic_op_asm.h:1.2 --- src/common/lib/libc/arch/riscv/atomic/atomic_op_asm.h:1.1 Fri Sep 19 17:36:24 2014 +++ src/common/lib/libc/arch/riscv/atomic/atomic_op_asm.h Mon May 18 08:24:10 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_op_asm.h,v 1.1 2014/09/19 17:36:24 matt Exp $ */ +/* $NetBSD: atomic_op_asm.h,v 1.2 2015/05/18 08:24:10 justin Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -37,9 +37,6 @@ #if defined(_KERNEL) || defined(_STANDALONE) #define ATOMIC_OP_ALIAS(a,s) STRONG_ALIAS(a,s) -#ifdef _RUMPKERNEL -#define CRT_ALIAS(a,s) STRONG_ALIAS(a,s) -#endif #else /* _KERNEL */
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: justin Date: Sun May 17 22:08:24 UTC 2015 Modified Files: src/common/lib/libc/arch/arm/atomic: Makefile.inc sync_bool_compare_and_swap_1.S sync_bool_compare_and_swap_2.S sync_bool_compare_and_swap_4.S sync_bool_compare_and_swap_8.S sync_fetch_and_add_8.S sync_fetch_and_and_8.S sync_fetch_and_nand_8.S sync_fetch_and_or_8.S sync_fetch_and_sub_8.S sync_fetch_and_xor_8.S Log Message: Move arm sync_* changes to Makefile.inc To generate a diff of this commit: cvs rdiff -u -r1.26 -r1.27 src/common/lib/libc/arch/arm/atomic/Makefile.inc cvs rdiff -u -r1.2 -r1.3 \ src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_1.S \ src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_2.S \ src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_4.S cvs rdiff -u -r1.3 -r1.4 \ src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_8.S \ src/common/lib/libc/arch/arm/atomic/sync_fetch_and_nand_8.S cvs rdiff -u -r1.4 -r1.5 \ 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 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.26 src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.27 --- src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.26 Tue Oct 14 07:25:05 2014 +++ src/common/lib/libc/arch/arm/atomic/Makefile.inc Sun May 17 22:08:24 2015 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.inc,v 1.26 2014/10/14 07:25:05 martin Exp $ +# $NetBSD: Makefile.inc,v 1.27 2015/05/17 22:08:24 justin Exp $ .ifnmake obj .include ${NETBSDSRCDIR}/common/lib/libc/arch/arm/features.mk @@ -42,7 +42,7 @@ SRCS.atomic+= atomic_inc_32.S atomic_inc SRCS.atomic+= atomic_sub_64.S SRCS.atomic+= atomic_swap.S atomic_swap_16.S atomic_swap_64.S SRCS.atomic+= membar_ops.S -.if defined(LIB) ${LIB} != kern +.if defined(LIB) ${LIB} != kern ${LIB} != rump .for op in add and nand or sub xor SRCS.atomic+= sync_fetch_and_${op}_8.S .endfor Index: src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_1.S diff -u src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_1.S:1.2 src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_1.S:1.3 --- src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_1.S:1.2 Sun May 17 20:57:11 2015 +++ src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_1.S Sun May 17 22:08:24 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: sync_bool_compare_and_swap_1.S,v 1.2 2015/05/17 20:57:11 justin Exp $ */ +/* $NetBSD: sync_bool_compare_and_swap_1.S,v 1.3 2015/05/17 22:08:24 justin Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include atomic_op_asm.h -#if defined(_ARM_ARCH_6) !defined(_RUMPKERNEL) +#if defined(_ARM_ARCH_6) /* * ARMv6 has load-exclusive/store-exclusive which works for both user * and kernel. Index: src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_2.S diff -u src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_2.S:1.2 src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_2.S:1.3 --- src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_2.S:1.2 Sun May 17 20:57:11 2015 +++ src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_2.S Sun May 17 22:08:24 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: sync_bool_compare_and_swap_2.S,v 1.2 2015/05/17 20:57:11 justin Exp $ */ +/* $NetBSD: sync_bool_compare_and_swap_2.S,v 1.3 2015/05/17 22:08:24 justin Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. * All rights reserved. @@ -30,7 +30,7 @@ #include atomic_op_asm.h -#if defined(_ARM_ARCH_6) !defined(_RUMPKERNEL) +#if defined(_ARM_ARCH_6) /* * ARMv6 has load-exclusive/store-exclusive which works for both user * and kernel. Index: src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_4.S diff -u src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_4.S:1.2 src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_4.S:1.3 --- src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_4.S:1.2 Sun May 17 20:57:11 2015 +++ src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_4.S Sun May 17 22:08:24 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: sync_bool_compare_and_swap_4.S,v 1.2 2015/05/17 20:57:11 justin Exp $ */ +/* $NetBSD: sync_bool_compare_and_swap_4.S,v 1.3 2015/05/17 22:08:24 justin Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. * All rights reserved. @@ -30,7 +30,7 @@ #include atomic_op_asm.h -#if defined(_ARM_ARCH_6)
CVS commit: src/common/lib/libc/arch/arm/string
Module Name:src Committed By: justin Date: Sun May 17 22:14:38 UTC 2015 Modified Files: src/common/lib/libc/arch/arm/string: ffs.S Log Message: It is just the __ffssi2 alias we do not want in rump kernel To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/common/lib/libc/arch/arm/string/ffs.S 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/string/ffs.S diff -u src/common/lib/libc/arch/arm/string/ffs.S:1.8 src/common/lib/libc/arch/arm/string/ffs.S:1.9 --- src/common/lib/libc/arch/arm/string/ffs.S:1.8 Sun May 17 20:57:12 2015 +++ src/common/lib/libc/arch/arm/string/ffs.S Sun May 17 22:14:38 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: ffs.S,v 1.8 2015/05/17 20:57:12 justin Exp $ */ +/* $NetBSD: ffs.S,v 1.9 2015/05/17 22:14:38 justin Exp $ */ /* * Copyright (c) 2001 Christopher Gilbert * All rights reserved. @@ -30,7 +30,7 @@ #include machine/asm.h -RCSID($NetBSD: ffs.S,v 1.8 2015/05/17 20:57:12 justin Exp $) +RCSID($NetBSD: ffs.S,v 1.9 2015/05/17 22:14:38 justin Exp $) /* * ffs - find first set bit, this algorithm isolates the first set @@ -46,6 +46,7 @@ RCSID($NetBSD: ffs.S,v 1.8 2015/05/17 2 */ #ifndef _RUMPKERNEL STRONG_ALIAS(__ffssi2,ffs) +#endif #if (defined(_ARM_ARCH_5) !defined(__thumb__)) || defined(_ARM_ARCH_T2) #if defined(_ARM_ARCH_T2) ENTRY(ffs) @@ -91,4 +92,3 @@ ARM_ENTRY(ffs) .byte 30, 0, 23, 19, 29, 18, 17, 0 /* 56-63 */ END(ffs) #endif -#endif /* _RUMPKERNEL */
CVS commit: src/common/lib/libc/arch/arm
Module Name:src Committed By: justin Date: Sun May 17 20:57:12 UTC 2015 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_op_asm.h atomic_swap.S atomic_swap_16.S atomic_swap_64.S sync_bool_compare_and_swap_1.S sync_bool_compare_and_swap_2.S sync_bool_compare_and_swap_4.S sync_bool_compare_and_swap_8.S sync_fetch_and_add_8.S sync_fetch_and_and_8.S sync_fetch_and_nand_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/string: ffs.S Log Message: Do not build arm toolchain symbols in the rump kernel These symbols will be provided at link time and will be duplicate symbols in rump kernel and libc if defined. Many have been fixed previously, but these were missed as did not have a test. To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/arm/atomic/atomic_op_asm.h cvs rdiff -u -r1.13 -r1.14 src/common/lib/libc/arch/arm/atomic/atomic_swap.S cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/arm/atomic/atomic_swap_16.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.9 -r1.10 \ src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S cvs rdiff -u -r1.1 -r1.2 \ src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_1.S \ src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_2.S \ src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_4.S cvs rdiff -u -r1.2 -r1.3 \ src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_8.S \ src/common/lib/libc/arch/arm/atomic/sync_fetch_and_nand_8.S cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/arm/string/ffs.S 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/atomic_op_asm.h diff -u src/common/lib/libc/arch/arm/atomic/atomic_op_asm.h:1.6 src/common/lib/libc/arch/arm/atomic/atomic_op_asm.h:1.7 --- src/common/lib/libc/arch/arm/atomic/atomic_op_asm.h:1.6 Tue Mar 4 16:15:28 2014 +++ src/common/lib/libc/arch/arm/atomic/atomic_op_asm.h Sun May 17 20:57:11 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_op_asm.h,v 1.6 2014/03/04 16:15:28 matt Exp $ */ +/* $NetBSD: atomic_op_asm.h,v 1.7 2015/05/17 20:57:11 justin Exp $ */ /*- * Copyright (c) 2007 The NetBSD Foundation, Inc. @@ -44,9 +44,6 @@ #if defined(_KERNEL) || defined(_STANDALONE) #define ATOMIC_OP_ALIAS(a,s) STRONG_ALIAS(a,s) -#ifdef _RUMPKERNEL -#define CRT_ALIAS(a,s) STRONG_ALIAS(a,s) -#endif #else /* _KERNEL */ Index: src/common/lib/libc/arch/arm/atomic/atomic_swap.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.13 src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.14 --- src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.13 Fri Apr 17 07:15:02 2015 +++ src/common/lib/libc/arch/arm/atomic/atomic_swap.S Sun May 17 20:57:11 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_swap.S,v 1.13 2015/04/17 07:15:02 skrll Exp $ */ +/* $NetBSD: atomic_swap.S,v 1.14 2015/05/17 20:57:11 justin Exp $ */ /*- * Copyright (c) 2007,2012 The NetBSD Foundation, Inc. @@ -84,7 +84,7 @@ STRONG_ALIAS(_atomic_swap_uint,_atomic_s STRONG_ALIAS(_atomic_swap_ulong,_atomic_swap_32) STRONG_ALIAS(_atomic_swap_ptr,_atomic_swap_32) -#if (!defined(_KERNEL) || defined(_RUMPKERNEL)) !defined(_STANDALONE) +#if (!defined(_KERNEL) || !defined(_RUMPKERNEL)) !defined(_STANDALONE) ENTRY_NP(__sync_lock_release_4) mov r1, #0 #ifdef _ARM_ARCH_7 @@ -125,7 +125,7 @@ CRT_ALIAS(__atomic_exchange_1,_atomic_sw STRONG_ALIAS(_atomic_swap_char,_atomic_swap_8) STRONG_ALIAS(_atomic_swap_uchar,_atomic_swap_8) -#if (!defined(_KERNEL) || defined(_RUMPKERNEL)) !defined(_STANDALONE) +#if (!defined(_KERNEL) || !defined(_RUMPKERNEL)) !defined(_STANDALONE) ENTRY_NP(__sync_lock_release_1) mov r1, #0 #ifdef _ARM_ARCH_7 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.3 src/common/lib/libc/arch/arm/atomic/atomic_swap_16.S:1.4 --- src/common/lib/libc/arch/arm/atomic/atomic_swap_16.S:1.3 Sat Jun 28 20:18:55 2014 +++ src/common/lib/libc/arch/arm/atomic/atomic_swap_16.S Sun May 17 20:57:11 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_swap_16.S,v 1.3 2014/06/28 20:18:55 joerg Exp $ */ +/* $NetBSD: atomic_swap_16.S,v 1.4 2015/05/17 20:57:11 justin Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -55,7 +55,7 @@ CRT_ALIAS(__atomic_exchange_2,_atomic_sw STRONG_ALIAS(_atomic_swap_short,_atomic_swap_16) STRONG_ALIAS(_atomic_swap_ushort,_atomic_swap_16) -#if (!defined(_KERNEL) || defined(_RUMPKERNEL)) !defined(_STANDALONE)
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: skrll Date: Fri Apr 17 07:15:03 UTC 2015 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_swap.S Log Message: Use the right register in previous. Spotted by matt@ To generate a diff of this commit: cvs rdiff -u -r1.12 -r1.13 src/common/lib/libc/arch/arm/atomic/atomic_swap.S 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/atomic_swap.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.12 src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.13 --- src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.12 Fri Apr 17 07:03:40 2015 +++ src/common/lib/libc/arch/arm/atomic/atomic_swap.S Fri Apr 17 07:15:02 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_swap.S,v 1.12 2015/04/17 07:03:40 skrll Exp $ */ +/* $NetBSD: atomic_swap.S,v 1.13 2015/04/17 07:15:02 skrll Exp $ */ /*- * Copyright (c) 2007,2012 The NetBSD Foundation, Inc. @@ -90,7 +90,7 @@ ENTRY_NP(__sync_lock_release_4) #ifdef _ARM_ARCH_7 dmb #else - mcr p15, 0, r3, c7, c10, 5 /* data memory barrier */ + mcr p15, 0, r1, c7, c10, 5 /* data memory barrier */ #endif strb r1, [r0] RET @@ -131,7 +131,7 @@ ENTRY_NP(__sync_lock_release_1) #ifdef _ARM_ARCH_7 dmb #else - mcr p15, 0, r3, c7, c10, 5 /* data memory barrier */ + mcr p15, 0, r1, c7, c10, 5 /* data memory barrier */ #endif strb r1, [r0] RET
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: skrll Date: Fri Apr 17 07:03:40 UTC 2015 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_swap.S Log Message: ARM ARM D7.3.2 - ensure all previous accesses are observed before the lock is cleared To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 src/common/lib/libc/arch/arm/atomic/atomic_swap.S 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/atomic_swap.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.11 src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.12 --- src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.11 Sat Jun 28 20:18:55 2014 +++ src/common/lib/libc/arch/arm/atomic/atomic_swap.S Fri Apr 17 07:03:40 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_swap.S,v 1.11 2014/06/28 20:18:55 joerg Exp $ */ +/* $NetBSD: atomic_swap.S,v 1.12 2015/04/17 07:03:40 skrll Exp $ */ /*- * Copyright (c) 2007,2012 The NetBSD Foundation, Inc. @@ -87,6 +87,11 @@ STRONG_ALIAS(_atomic_swap_ptr,_atomic_sw #if (!defined(_KERNEL) || defined(_RUMPKERNEL)) !defined(_STANDALONE) ENTRY_NP(__sync_lock_release_4) mov r1, #0 +#ifdef _ARM_ARCH_7 + dmb +#else + mcr p15, 0, r3, c7, c10, 5 /* data memory barrier */ +#endif strb r1, [r0] RET END(__sync_lock_release_4) @@ -123,6 +128,11 @@ STRONG_ALIAS(_atomic_swap_uchar,_atomic_ #if (!defined(_KERNEL) || defined(_RUMPKERNEL)) !defined(_STANDALONE) ENTRY_NP(__sync_lock_release_1) mov r1, #0 +#ifdef _ARM_ARCH_7 + dmb +#else + mcr p15, 0, r3, c7, c10, 5 /* data memory barrier */ +#endif strb r1, [r0] RET END(__sync_lock_release_1)
CVS commit: src/common/lib/libc/arch/riscv/atomic
Module Name:src Committed By: matt Date: Fri Mar 27 06:42:37 UTC 2015 Modified Files: src/common/lib/libc/arch/riscv/atomic: atomic_add_32.S atomic_add_64.S atomic_and_32.S atomic_and_64.S atomic_cas_32.S atomic_cas_64.S atomic_nand_32.S atomic_nand_64.S atomic_or_32.S atomic_or_64.S atomic_sub_32.S atomic_sub_64.S atomic_swap_32.S atomic_swap_64.S atomic_xor_32.S atomic_xor_64.S Log Message: Switch to new ABI (a0/a1 replace v0/v1) To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 \ src/common/lib/libc/arch/riscv/atomic/atomic_add_32.S \ src/common/lib/libc/arch/riscv/atomic/atomic_add_64.S \ src/common/lib/libc/arch/riscv/atomic/atomic_and_32.S \ src/common/lib/libc/arch/riscv/atomic/atomic_and_64.S \ src/common/lib/libc/arch/riscv/atomic/atomic_cas_32.S \ src/common/lib/libc/arch/riscv/atomic/atomic_cas_64.S \ src/common/lib/libc/arch/riscv/atomic/atomic_nand_32.S \ src/common/lib/libc/arch/riscv/atomic/atomic_nand_64.S \ src/common/lib/libc/arch/riscv/atomic/atomic_or_32.S \ src/common/lib/libc/arch/riscv/atomic/atomic_or_64.S \ src/common/lib/libc/arch/riscv/atomic/atomic_sub_32.S \ src/common/lib/libc/arch/riscv/atomic/atomic_sub_64.S \ src/common/lib/libc/arch/riscv/atomic/atomic_swap_32.S \ src/common/lib/libc/arch/riscv/atomic/atomic_swap_64.S \ src/common/lib/libc/arch/riscv/atomic/atomic_xor_32.S \ src/common/lib/libc/arch/riscv/atomic/atomic_xor_64.S 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/riscv/atomic/atomic_add_32.S diff -u src/common/lib/libc/arch/riscv/atomic/atomic_add_32.S:1.1 src/common/lib/libc/arch/riscv/atomic/atomic_add_32.S:1.2 --- src/common/lib/libc/arch/riscv/atomic/atomic_add_32.S:1.1 Fri Sep 19 17:36:24 2014 +++ src/common/lib/libc/arch/riscv/atomic/atomic_add_32.S Fri Mar 27 06:42:37 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_add_32.S,v 1.1 2014/09/19 17:36:24 matt Exp $ */ +/* $NetBSD: atomic_add_32.S,v 1.2 2015/03/27 06:42:37 matt Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -34,7 +34,7 @@ ENTRY_NP(_atomic_inc_32) li a1, 1 ENTRY_NP(_atomic_add_32) - amoadd.w.aq v0, a1, 0(a0) + amoadd.w.aq a0, a1, 0(a0) ret END(_atomic_add_32) END(_atomic_inc_32) @@ -64,8 +64,8 @@ STRONG_ALIAS(_atomic_inc_ptr,_atomic_inc ENTRY_NP(_atomic_inc_32_nv) li a1, 1 ENTRY_NP(_atomic_add_32_nv) - amoadd.w.aq v0, a1, 0(a0) /* update memory and get old value */ - INT_ADD v0, v0, a1 /* turn into new value */ + amoadd.w.aq t0, a1, 0(a0) /* update memory and get old value */ + INT_ADD a0, t0, a1 /* turn into new value */ ret END(_atomic_add_32_nv) END(_atomic_inc_32_nv) Index: src/common/lib/libc/arch/riscv/atomic/atomic_add_64.S diff -u src/common/lib/libc/arch/riscv/atomic/atomic_add_64.S:1.1 src/common/lib/libc/arch/riscv/atomic/atomic_add_64.S:1.2 --- src/common/lib/libc/arch/riscv/atomic/atomic_add_64.S:1.1 Fri Sep 19 17:36:24 2014 +++ src/common/lib/libc/arch/riscv/atomic/atomic_add_64.S Fri Mar 27 06:42:37 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_add_64.S,v 1.1 2014/09/19 17:36:24 matt Exp $ */ +/* $NetBSD: atomic_add_64.S,v 1.2 2015/03/27 06:42:37 matt Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -34,7 +34,7 @@ ENTRY_NP(_atomic_inc_64) li a1, 1 ENTRY_NP(_atomic_add_64) - amoadd.d.aq v0, a1, 0(a0) + amoadd.d.aq a0, a1, 0(a0) ret END(_atomic_add_64) END(_atomic_inc_64) @@ -56,8 +56,8 @@ STRONG_ALIAS(_atomic_inc_ptr,_atomic_inc ENTRY_NP(_atomic_inc_64_nv) li a1, 1 ENTRY_NP(_atomic_add_64_nv) - amoadd.d.aq v0, a1, 0(a0) /* update memory and get old value */ - LONG_ADD v0, v0, a1 /* turn into new value */ + amoadd.d.aq t0, a1, 0(a0) /* update memory and get old value */ + LONG_ADD a0, t0, a1 /* turn into new value */ ret END(_atomic_add_64_nv) END(_atomic_inc_64_nv) Index: src/common/lib/libc/arch/riscv/atomic/atomic_and_32.S diff -u src/common/lib/libc/arch/riscv/atomic/atomic_and_32.S:1.1 src/common/lib/libc/arch/riscv/atomic/atomic_and_32.S:1.2 --- src/common/lib/libc/arch/riscv/atomic/atomic_and_32.S:1.1 Fri Sep 19 17:36:24 2014 +++ src/common/lib/libc/arch/riscv/atomic/atomic_and_32.S Fri Mar 27 06:42:37 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_and_32.S,v 1.1 2014/09/19 17:36:24 matt Exp $ */ +/* $NetBSD: atomic_and_32.S,v 1.2 2015/03/27 06:42:37 matt Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -32,7 +32,7 @@ #include atomic_op_asm.h ENTRY_NP(_atomic_and_32) - amoand.w.aq v0, a1, 0(a0) + amoand.w.aq a0, a1, 0(a0) ret END(_atomic_and_32) @@ -47,8 +47,8 @@ CRT_ALIAS(__sync_fetch_and_and_4,_atomic CRT_ALIAS(__atomic_fetch_and_4,_atomic_and_32) ENTRY_NP(_atomic_and_32_nv) - amoand.w.aq v0, a1, 0(a0) /* update memory and get old value */ - and v0, v0, a1 /* turn into new value */ + amoand.w.aq t0, a1, 0(a0) /*
CVS commit: src/common/lib/libc/arch/arm/string
Module Name:src Committed By: justin Date: Thu Mar 26 13:34:51 UTC 2015 Modified Files: src/common/lib/libc/arch/arm/string: memcmp.S memcpy.S memmove.S memset.S Log Message: Don't build the __eabi_ aliases in the arm rump kernel. These are provided by libc in userspace, so leave out of kernel To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/arm/string/memcmp.S cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/arm/string/memcpy.S cvs rdiff -u -r1.8 -r1.9 src/common/lib/libc/arch/arm/string/memmove.S cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/arm/string/memset.S 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/string/memcmp.S diff -u src/common/lib/libc/arch/arm/string/memcmp.S:1.4 src/common/lib/libc/arch/arm/string/memcmp.S:1.5 --- src/common/lib/libc/arch/arm/string/memcmp.S:1.4 Mon Dec 2 21:21:33 2013 +++ src/common/lib/libc/arch/arm/string/memcmp.S Thu Mar 26 13:34:51 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: memcmp.S,v 1.4 2013/12/02 21:21:33 joerg Exp $ */ +/* $NetBSD: memcmp.S,v 1.5 2015/03/26 13:34:51 justin Exp $ */ /* * Copyright 2003 Wasabi Systems, Inc. @@ -64,7 +64,7 @@ #include machine/asm.h -RCSID($NetBSD: memcmp.S,v 1.4 2013/12/02 21:21:33 joerg Exp $) +RCSID($NetBSD: memcmp.S,v 1.5 2015/03/26 13:34:51 justin Exp $) ENTRY(memcmp) mov ip, r0 @@ -180,6 +180,6 @@ ENTRY(memcmp) #endif END(memcmp) -#if defined(__ARM_EABI__) +#if defined(__ARM_EABI__) !defined(_RUMPKERNEL) STRONG_ALIAS(__aeabi_memcmp, memcmp) #endif Index: src/common/lib/libc/arch/arm/string/memcpy.S diff -u src/common/lib/libc/arch/arm/string/memcpy.S:1.6 src/common/lib/libc/arch/arm/string/memcpy.S:1.7 --- src/common/lib/libc/arch/arm/string/memcpy.S:1.6 Mon Dec 2 21:21:33 2013 +++ src/common/lib/libc/arch/arm/string/memcpy.S Thu Mar 26 13:34:51 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: memcpy.S,v 1.6 2013/12/02 21:21:33 joerg Exp $ */ +/* $NetBSD: memcpy.S,v 1.7 2015/03/26 13:34:51 justin Exp $ */ #include arm/cdefs.h @@ -8,6 +8,6 @@ #include memcpy_xscale.S #endif -#if defined(__ARM_EABI__) +#if defined(__ARM_EABI__) !defined(_RUMPKERNEL) STRONG_ALIAS(__aeabi_memcpy, memcpy) #endif Index: src/common/lib/libc/arch/arm/string/memmove.S diff -u src/common/lib/libc/arch/arm/string/memmove.S:1.8 src/common/lib/libc/arch/arm/string/memmove.S:1.9 --- src/common/lib/libc/arch/arm/string/memmove.S:1.8 Mon Dec 2 21:21:33 2013 +++ src/common/lib/libc/arch/arm/string/memmove.S Thu Mar 26 13:34:51 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: memmove.S,v 1.8 2013/12/02 21:21:33 joerg Exp $ */ +/* $NetBSD: memmove.S,v 1.9 2015/03/26 13:34:51 justin Exp $ */ /*- * Copyright (c) 1997 The NetBSD Foundation, Inc. @@ -585,7 +585,7 @@ END(memmove) END(bcopy) #endif -#if defined(__ARM_EABI__) !defined(BCOPY) +#if defined(__ARM_EABI__) !defined(BCOPY) !defined(_RUMPKERNEL) STRONG_ALIAS(__aeabi_memmove, memmove) STRONG_ALIAS(__aeabi_memmove4, memmove) STRONG_ALIAS(__aeabi_memmove8, memmove) Index: src/common/lib/libc/arch/arm/string/memset.S diff -u src/common/lib/libc/arch/arm/string/memset.S:1.7 src/common/lib/libc/arch/arm/string/memset.S:1.8 --- src/common/lib/libc/arch/arm/string/memset.S:1.7 Mon Dec 2 21:21:33 2013 +++ src/common/lib/libc/arch/arm/string/memset.S Thu Mar 26 13:34:51 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: memset.S,v 1.7 2013/12/02 21:21:33 joerg Exp $ */ +/* $NetBSD: memset.S,v 1.8 2015/03/26 13:34:51 justin Exp $ */ /* * Copyright 2003 Wasabi Systems, Inc. @@ -68,7 +68,7 @@ #include machine/asm.h -#if defined(__ARM_EABI__) !defined(_BZERO) +#if defined(__ARM_EABI__) !defined(_BZERO) !defined(_RUMPKERNEL) ENTRY(__aeabi_memset) mov r3, r1 mov r1, r2
CVS commit: src/common/lib/libc/arch/m68k/atomic
Module Name:src Committed By: matt Date: Thu Nov 20 07:07:13 UTC 2014 Modified Files: src/common/lib/libc/arch/m68k/atomic: Makefile.inc Log Message: Add atomic_c11_compare_exchange_cas_{8,16,32}.c To generate a diff of this commit: cvs rdiff -u -r1.13 -r1.14 src/common/lib/libc/arch/m68k/atomic/Makefile.inc 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/m68k/atomic/Makefile.inc diff -u src/common/lib/libc/arch/m68k/atomic/Makefile.inc:1.13 src/common/lib/libc/arch/m68k/atomic/Makefile.inc:1.14 --- src/common/lib/libc/arch/m68k/atomic/Makefile.inc:1.13 Sat Feb 22 14:51:34 2014 +++ src/common/lib/libc/arch/m68k/atomic/Makefile.inc Thu Nov 20 07:07:13 2014 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.inc,v 1.13 2014/02/22 14:51:34 martin Exp $ +# $NetBSD: Makefile.inc,v 1.14 2014/11/20 07:07:13 matt Exp $ # # Note: The atomic operations here in these assembly files are atomic @@ -33,6 +33,10 @@ SRCS+= atomic_add_16_cas.c atomic_add_8 atomic_or_32_cas.c atomic_or_16_cas.c atomic_or_8_cas.c \ atomic_cas_32_cas.c atomic_cas_16_cas.c atomic_cas_8_cas.c \ atomic_swap_32_cas.c atomic_swap_16_cas.c atomic_swap_8_cas.c + +SRCS+= atomic_c11_compare_exchange_cas_8.c \ + atomic_c11_compare_exchange_cas_16.c \ + atomic_c11_compare_exchange_cas_32.c .endif .endif
CVS commit: src/common/lib/libc/arch
Module Name:src Committed By: martin Date: Tue Oct 14 07:25:05 UTC 2014 Modified Files: src/common/lib/libc/arch/arm/atomic: Makefile.inc src/common/lib/libc/arch/hppa/atomic: Makefile.inc Log Message: Provide C++ 2011 atomic support functions for hppa and arm. To generate a diff of this commit: cvs rdiff -u -r1.25 -r1.26 src/common/lib/libc/arch/arm/atomic/Makefile.inc cvs rdiff -u -r1.12 -r1.13 src/common/lib/libc/arch/hppa/atomic/Makefile.inc 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.25 src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.26 --- src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.25 Mon Oct 13 12:49:59 2014 +++ src/common/lib/libc/arch/arm/atomic/Makefile.inc Tue Oct 14 07:25:05 2014 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.inc,v 1.25 2014/10/13 12:49:59 martin Exp $ +# $NetBSD: Makefile.inc,v 1.26 2014/10/14 07:25:05 martin Exp $ .ifnmake obj .include ${NETBSDSRCDIR}/common/lib/libc/arch/arm/features.mk @@ -25,7 +25,10 @@ SRCS.atomic+= atomic_xor_32_cas.c atomic 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_load.c atomic_store.c \ - atomic_and_16_nv_cas.c atomic_and_8_nv_cas.c + atomic_and_16_nv_cas.c atomic_and_8_nv_cas.c \ + atomic_c11_compare_exchange_cas_32.c \ + atomic_c11_compare_exchange_cas_16.c \ + atomic_c11_compare_exchange_cas_8.c .endif .else Index: src/common/lib/libc/arch/hppa/atomic/Makefile.inc diff -u src/common/lib/libc/arch/hppa/atomic/Makefile.inc:1.12 src/common/lib/libc/arch/hppa/atomic/Makefile.inc:1.13 --- src/common/lib/libc/arch/hppa/atomic/Makefile.inc:1.12 Sat Feb 22 10:23:24 2014 +++ src/common/lib/libc/arch/hppa/atomic/Makefile.inc Tue Oct 14 07:25:05 2014 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.inc,v 1.12 2014/02/22 10:23:24 skrll Exp $ +# $NetBSD: Makefile.inc,v 1.13 2014/10/14 07:25:05 martin Exp $ .if defined(LIB) @@ -32,6 +32,9 @@ SRCS+= atomic_xor_32_cas.c atomic_xor_16 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_c11_compare_exchange_cas_32.c\ + atomic_c11_compare_exchange_cas_16.c\ + atomic_c11_compare_exchange_cas_8.c .endif .endif
CVS commit: src/common/lib/libc/arch/sparc/atomic
Module Name:src Committed By: martin Date: Mon Oct 13 08:59:41 UTC 2014 Modified Files: src/common/lib/libc/arch/sparc/atomic: Makefile.inc Log Message: Add C++ 2011 atomic support functions. To generate a diff of this commit: cvs rdiff -u -r1.17 -r1.18 src/common/lib/libc/arch/sparc/atomic/Makefile.inc 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/sparc/atomic/Makefile.inc diff -u src/common/lib/libc/arch/sparc/atomic/Makefile.inc:1.17 src/common/lib/libc/arch/sparc/atomic/Makefile.inc:1.18 --- src/common/lib/libc/arch/sparc/atomic/Makefile.inc:1.17 Fri Feb 21 16:21:02 2014 +++ src/common/lib/libc/arch/sparc/atomic/Makefile.inc Mon Oct 13 08:59:41 2014 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.inc,v 1.17 2014/02/21 16:21:02 martin Exp $ +# $NetBSD: Makefile.inc,v 1.18 2014/10/13 08:59:41 martin Exp $ .include bsd.own.mk @@ -34,7 +34,10 @@ SRCS+= atomic_nand_16_cas.c atomic_nand_ atomic_cas_16_cas.c atomic_cas_8_cas.c \ atomic_sub_16_cas.c atomic_sub_8_cas.c \ atomic_or_16_cas.c atomic_or_8_cas.c \ - atomic_swap_16_cas.c atomic_swap_8_cas.c + atomic_swap_16_cas.c atomic_swap_8_cas.c \ + atomic_c11_compare_exchange_cas_32.c \ + atomic_c11_compare_exchange_cas_16.c \ + atomic_c11_compare_exchange_cas_8.c . endif . if (${LIB} == kern || ${LIB} == rump)
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: martin Date: Mon Oct 13 12:49:59 UTC 2014 Modified Files: src/common/lib/libc/arch/arm/atomic: Makefile.inc Log Message: Move the and_{16,8}_nv sources into the right (libc only) block. To generate a diff of this commit: cvs rdiff -u -r1.24 -r1.25 src/common/lib/libc/arch/arm/atomic/Makefile.inc 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.24 src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.25 --- src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.24 Mon Oct 13 07:31:12 2014 +++ src/common/lib/libc/arch/arm/atomic/Makefile.inc Mon Oct 13 12:49:59 2014 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.inc,v 1.24 2014/10/13 07:31:12 martin Exp $ +# $NetBSD: Makefile.inc,v 1.25 2014/10/13 12:49:59 martin Exp $ .ifnmake obj .include ${NETBSDSRCDIR}/common/lib/libc/arch/arm/features.mk @@ -13,8 +13,7 @@ SRCS.atomic+= atomic_add_32_cas.c atomic atomic_dec_32_cas.c atomic_dec_32_nv_cas.c \ atomic_inc_32_cas.c atomic_inc_32_nv_cas.c \ atomic_or_32_cas.c atomic_or_32_nv_cas.c \ - atomic_swap_32_cas.c membar_ops_nop.c \ - atomic_and_16_nv_cas.c atomic_and_8_nv_cas.c + atomic_swap_32_cas.c membar_ops_nop.c .if ${LIB} == c SRCS.atomic+= atomic_xor_32_cas.c atomic_xor_16_cas.c atomic_xor_8_cas.c \ @@ -25,7 +24,8 @@ SRCS.atomic+= atomic_xor_32_cas.c atomic 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_load.c atomic_store.c + atomic_load.c atomic_store.c \ + atomic_and_16_nv_cas.c atomic_and_8_nv_cas.c .endif .else
CVS commit: src/common/lib/libc/arch
Module Name:src Committed By: martin Date: Mon Oct 13 13:00:55 UTC 2014 Modified Files: src/common/lib/libc/arch/mips/atomic: Makefile.inc src/common/lib/libc/arch/sh3/atomic: Makefile.inc Log Message: Provide atomic C++ 2011 support functions for mips and sh3. To generate a diff of this commit: cvs rdiff -u -r1.12 -r1.13 src/common/lib/libc/arch/mips/atomic/Makefile.inc cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/sh3/atomic/Makefile.inc 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/mips/atomic/Makefile.inc diff -u src/common/lib/libc/arch/mips/atomic/Makefile.inc:1.12 src/common/lib/libc/arch/mips/atomic/Makefile.inc:1.13 --- src/common/lib/libc/arch/mips/atomic/Makefile.inc:1.12 Mon Feb 24 16:15:43 2014 +++ src/common/lib/libc/arch/mips/atomic/Makefile.inc Mon Oct 13 13:00:55 2014 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.inc,v 1.12 2014/02/24 16:15:43 martin Exp $ +# $NetBSD: Makefile.inc,v 1.13 2014/10/13 13:00:55 martin Exp $ .if defined(LIB) (${LIB} == kern || ${LIB} == c || ${LIB} == pthread \ || ${LIB} == rump) @@ -46,7 +46,10 @@ SRCS+= atomic_xor_32_cas.c atomic_xor_16 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_c11_compare_exchange_cas_32.c\ + atomic_c11_compare_exchange_cas_16.c\ + atomic_c11_compare_exchange_cas_8.c .endif .if defined(LIB) (${LIB} == kern || ${LIB} == rump) Index: src/common/lib/libc/arch/sh3/atomic/Makefile.inc diff -u src/common/lib/libc/arch/sh3/atomic/Makefile.inc:1.6 src/common/lib/libc/arch/sh3/atomic/Makefile.inc:1.7 --- src/common/lib/libc/arch/sh3/atomic/Makefile.inc:1.6 Sat Feb 22 12:12:30 2014 +++ src/common/lib/libc/arch/sh3/atomic/Makefile.inc Mon Oct 13 13:00:55 2014 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.inc,v 1.6 2014/02/22 12:12:30 martin Exp $ +# $NetBSD: Makefile.inc,v 1.7 2014/10/13 13:00:55 martin Exp $ .if defined(LIB) (${LIB} == kern || ${LIB} == c || ${LIB} == pthread \ || ${LIB} == rump) @@ -16,7 +16,10 @@ SRCS+= atomic_add_16_cas.c atomic_add_8_ atomic_or_16_cas.c atomic_or_8_cas.c \ atomic_xor_32_cas.c atomic_xor_16_cas.c atomic_xor_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_c11_compare_exchange_cas_32.c \ + atomic_c11_compare_exchange_cas_16.c \ + atomic_c11_compare_exchange_cas_8.c .endif .endif
CVS commit: src/common/lib/libc/arch/vax/atomic
Module Name:src Committed By: martin Date: Sun Oct 12 17:53:33 UTC 2014 Modified Files: src/common/lib/libc/arch/vax/atomic: Makefile.inc Log Message: Hook __atomic_compare_exchange_N into vax libc. To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/vax/atomic/Makefile.inc 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/vax/atomic/Makefile.inc diff -u src/common/lib/libc/arch/vax/atomic/Makefile.inc:1.6 src/common/lib/libc/arch/vax/atomic/Makefile.inc:1.7 --- src/common/lib/libc/arch/vax/atomic/Makefile.inc:1.6 Sat Feb 22 08:53:33 2014 +++ src/common/lib/libc/arch/vax/atomic/Makefile.inc Sun Oct 12 17:53:33 2014 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.inc,v 1.6 2014/02/22 08:53:33 martin Exp $ +# $NetBSD: Makefile.inc,v 1.7 2014/10/12 17:53:33 martin Exp $ .if defined(LIB) (${LIB} == kern || ${LIB} == c || ${LIB} == pthread \ || ${LIB} == rump) @@ -16,7 +16,10 @@ SRCS+= atomic_add_16_cas.c atomic_add_8_ atomic_and_16_cas.c atomic_and_8_cas.c \ atomic_nand_32_cas.c atomic_nand_16_cas.c atomic_nand_8_cas.c \ atomic_cas_32_cas.c atomic_cas_16_cas.c atomic_cas_8_cas.c \ - atomic_swap_16_cas.c atomic_swap_8_cas.c + atomic_swap_16_cas.c atomic_swap_8_cas.c \ + atomic_c11_compare_exchange_cas_32.c \ + atomic_c11_compare_exchange_cas_16.c \ + atomic_c11_compare_exchange_cas_8.c .endif .endif
CVS commit: src/common/lib/libc/arch/i386/string/small
Module Name:src Committed By: khorben Date: Mon Sep 22 20:31:56 UTC 2014 Modified Files: src/common/lib/libc/arch/i386/string/small: strchr.S Log Message: Look for the character to locate before checking for the NUL character As documented in PR port-i386/49208, this fixes strchr(s, '\0'), as used by the FAT first-stage bootloader on x86 (bootxx_msdos). strchr(s, '\0') is otherwise equivalent to strlen(string), which would probably look nicer in the original file, dosfs.c from libsa. Confirmed working in qemu and on real hardware. ok joerg@ XXX pull-up to netbsd-6 and netbsd-7 To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/i386/string/small/strchr.S 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/i386/string/small/strchr.S diff -u src/common/lib/libc/arch/i386/string/small/strchr.S:1.2 src/common/lib/libc/arch/i386/string/small/strchr.S:1.3 --- src/common/lib/libc/arch/i386/string/small/strchr.S:1.2 Sat Mar 22 19:38:46 2014 +++ src/common/lib/libc/arch/i386/string/small/strchr.S Mon Sep 22 20:31:56 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: strchr.S,v 1.2 2014/03/22 19:38:46 jakllsch Exp $ */ +/* $NetBSD: strchr.S,v 1.3 2014/09/22 20:31:56 khorben Exp $ */ /*- * Copyright (c) 2011 The NetBSD Foundation, Inc. * All rights reserved. @@ -29,7 +29,7 @@ */ #include machine/asm.h - RCSID($NetBSD: strchr.S,v 1.2 2014/03/22 19:38:46 jakllsch Exp $) + RCSID($NetBSD: strchr.S,v 1.3 2014/09/22 20:31:56 khorben Exp $) ENTRY(strchr) popl %edx /* Return address */ @@ -39,10 +39,10 @@ ENTRY(strchr) pushl %eax pushl %edx 1: - cmpb $0, 0(%eax) - je 2f cmpb %cl, 0(%eax) je 3f + cmpb $0, 0(%eax) + je 2f incl %eax jmp 1b 2:
CVS commit: src/common/lib/libc/arch/x86_64
Module Name:src Committed By: uebayasi Date: Thu May 22 15:23:11 UTC 2014 Modified Files: src/common/lib/libc/arch/x86_64/atomic: atomic.S src/common/lib/libc/arch/x86_64/gen: byte_swap_2.S byte_swap_4.S byte_swap_8.S src/common/lib/libc/arch/x86_64/string: memset.S Log Message: Put missing END() markers to set ELF symbol size. To generate a diff of this commit: cvs rdiff -u -r1.16 -r1.17 src/common/lib/libc/arch/x86_64/atomic/atomic.S cvs rdiff -u -r1.2 -r1.3 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.2 src/common/lib/libc/arch/x86_64/gen/byte_swap_8.S cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/x86_64/string/memset.S 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/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.17 --- 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 Thu May 22 15:23:11 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic.S,v 1.16 2011/01/12 23:12:10 joerg Exp $ */ +/* $NetBSD: atomic.S,v 1.17 2014/05/22 15:23:11 uebayasi 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)
CVS commit: src/common/lib/libc/arch/x86_64/string
Module Name:src Committed By: pooka Date: Thu May 22 16:47:31 UTC 2014 Modified Files: src/common/lib/libc/arch/x86_64/string: memset.S Log Message: fix build for _KERNEL To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/x86_64/string/memset.S 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/x86_64/string/memset.S diff -u src/common/lib/libc/arch/x86_64/string/memset.S:1.4 src/common/lib/libc/arch/x86_64/string/memset.S:1.5 --- src/common/lib/libc/arch/x86_64/string/memset.S:1.4 Thu May 22 15:23:11 2014 +++ src/common/lib/libc/arch/x86_64/string/memset.S Thu May 22 16:47:31 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: memset.S,v 1.4 2014/05/22 15:23:11 uebayasi Exp $ */ +/* $NetBSD: memset.S,v 1.5 2014/05/22 16:47:31 pooka 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.4 2014/05/22 15:23:11 uebayasi Exp $) + RCSID($NetBSD: memset.S,v 1.5 2014/05/22 16:47:31 pooka Exp $) #endif #ifndef _KERNEL @@ -90,4 +90,7 @@ ENTRY(memset) add %rdx,%rdi /* ... and target */ jmp 2b END(memset) + +#ifndef _KERNEL END(bzero) +#endif
CVS commit: src/common/lib/libc/arch/i386
Module Name:src Committed By: uebayasi Date: Fri May 23 03:17:31 UTC 2014 Modified Files: src/common/lib/libc/arch/i386/atomic: atomic.S src/common/lib/libc/arch/i386/gen: byte_swap_2.S byte_swap_4.S src/common/lib/libc/arch/i386/string: memset.S src/common/lib/libc/arch/i386/string/small: memcpy.S Log Message: Put missing END() markers to set ELF symbol size. To generate a diff of this commit: cvs rdiff -u -r1.21 -r1.22 src/common/lib/libc/arch/i386/atomic/atomic.S cvs rdiff -u -r1.3 -r1.4 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.5 src/common/lib/libc/arch/i386/string/memset.S cvs rdiff -u -r1.1 -r1.2 src/common/lib/libc/arch/i386/string/small/memcpy.S 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/i386/atomic/atomic.S diff -u src/common/lib/libc/arch/i386/atomic/atomic.S:1.21 src/common/lib/libc/arch/i386/atomic/atomic.S:1.22 --- src/common/lib/libc/arch/i386/atomic/atomic.S:1.21 Tue Apr 22 19:27:17 2014 +++ src/common/lib/libc/arch/i386/atomic/atomic.S Fri May 23 03:17:31 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic.S,v 1.21 2014/04/22 19:27:17 christos Exp $ */ +/* $NetBSD: atomic.S,v 1.22 2014/05/23 03:17:31 uebayasi Exp $ */ /*- * Copyright (c) 2007 The NetBSD Foundation, Inc. @@ -58,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 @@ -67,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 @@ -74,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 @@ -88,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 @@ -102,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 @@ -116,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 @@ -123,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 @@ -137,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 @@ -152,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 @@ -160,23 +172,27 @@ 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) #if defined(__HAVE_ATOMIC64_OPS) || defined(_KERNEL) @@ -209,6 +225,7 @@ ENTRY(_atomic_cas_64) movl 0(%edi), %eax movl 4(%edi), %edx jmp 1b +END(_atomic_cas_64) ENDLABEL(_atomic_cas_64_end) ENTRY(_atomic_cas_cx8) @@ -231,6 +248,7 @@ ENTRY(_atomic_cas_cx8) .space 32, 0x90 #endif #endif /* _HARDKERNEL */ +END(_atomic_cas_cx8) ENDLABEL(_atomic_cas_cx8_end) #endif /* __HAVE_ATOMIC64_OPS || _KERNEL */ @@ -238,11 +256,13 @@ ENDLABEL(_atomic_cas_cx8_end) 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/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.4 --- 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 Fri May 23 03:17:31 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.4 2014/05/23 03:17:31 uebayasi 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
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: skrll Date: Fri Mar 28 21:32:41 UTC 2014 Modified Files: src/common/lib/libc/arch/arm/atomic: membar_ops.S Log Message: Ensure SBZ register is zero To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/common/lib/libc/arch/arm/atomic/membar_ops.S 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/membar_ops.S diff -u src/common/lib/libc/arch/arm/atomic/membar_ops.S:1.5 src/common/lib/libc/arch/arm/atomic/membar_ops.S:1.6 --- src/common/lib/libc/arch/arm/atomic/membar_ops.S:1.5 Tue Mar 4 16:15:28 2014 +++ src/common/lib/libc/arch/arm/atomic/membar_ops.S Fri Mar 28 21:32:41 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: membar_ops.S,v 1.5 2014/03/04 16:15:28 matt Exp $ */ +/* $NetBSD: membar_ops.S,v 1.6 2014/03/28 21:32:41 skrll Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. * All rights reserved. @@ -36,6 +36,7 @@ ENTRY_NP(_membar_producer) #ifdef _ARM_ARCH_7 dsb #else + mov r0, #0 mcr p15, 0, r0, c7, c10, 4 /* Data Synchronization Barrier */ #endif RET @@ -48,6 +49,7 @@ ENTRY_NP(_membar_sync) #ifdef _ARM_ARCH_7 dmb #else + mov r0, #0 mcr p15, 0, r0, c7, c10, 5 /* Data Memory Barrier */ #endif RET
CVS commit: src/common/lib/libc/arch/x86_64/string
Module Name:src Committed By: jakllsch Date: Sat Mar 22 19:16:34 UTC 2014 Modified Files: src/common/lib/libc/arch/x86_64/string: bcmp.S bcopy.S ffs.S memchr.S memcmp.S strcat.S strchr.S strcmp.S strcpy.S strlen.S strrchr.S Log Message: For all x86_64 string assembly functions that don't overlap (i.e. every one except memset and bzero) use END() so that symbol size information is available. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/x86_64/string/bcmp.S \ src/common/lib/libc/arch/x86_64/string/memcmp.S \ src/common/lib/libc/arch/x86_64/string/strrchr.S cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/x86_64/string/bcopy.S \ src/common/lib/libc/arch/x86_64/string/ffs.S cvs rdiff -u -r1.5 -r1.6 src/common/lib/libc/arch/x86_64/string/memchr.S \ src/common/lib/libc/arch/x86_64/string/strlen.S cvs rdiff -u -r1.1 -r1.2 src/common/lib/libc/arch/x86_64/string/strcat.S \ src/common/lib/libc/arch/x86_64/string/strcmp.S \ src/common/lib/libc/arch/x86_64/string/strcpy.S cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/x86_64/string/strchr.S 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/x86_64/string/bcmp.S diff -u src/common/lib/libc/arch/x86_64/string/bcmp.S:1.2 src/common/lib/libc/arch/x86_64/string/bcmp.S:1.3 --- src/common/lib/libc/arch/x86_64/string/bcmp.S:1.2 Mon Nov 12 18:41:59 2007 +++ src/common/lib/libc/arch/x86_64/string/bcmp.S Sat Mar 22 19:16:34 2014 @@ -1,7 +1,7 @@ #include machine/asm.h #if defined(LIBC_SCCS) - RCSID($NetBSD: bcmp.S,v 1.2 2007/11/12 18:41:59 ad Exp $) + RCSID($NetBSD: bcmp.S,v 1.3 2014/03/22 19:16:34 jakllsch Exp $) #endif ENTRY(bcmp) @@ -21,3 +21,4 @@ ENTRY(bcmp) L1: incl %eax L2: ret +END(bcmp) Index: src/common/lib/libc/arch/x86_64/string/memcmp.S diff -u src/common/lib/libc/arch/x86_64/string/memcmp.S:1.2 src/common/lib/libc/arch/x86_64/string/memcmp.S:1.3 --- src/common/lib/libc/arch/x86_64/string/memcmp.S:1.2 Mon Nov 12 18:41:59 2007 +++ src/common/lib/libc/arch/x86_64/string/memcmp.S Sat Mar 22 19:16:34 2014 @@ -7,7 +7,7 @@ #include machine/asm.h #if defined(LIBC_SCCS) - RCSID($NetBSD: memcmp.S,v 1.2 2007/11/12 18:41:59 ad Exp $) + RCSID($NetBSD: memcmp.S,v 1.3 2014/03/22 19:16:34 jakllsch Exp $) #endif ENTRY(memcmp) @@ -37,3 +37,4 @@ L6: xorl %eax,%eax /* Perform unsigned movb -1(%rsi),%dl subl%edx,%eax ret +END(memcmp) Index: src/common/lib/libc/arch/x86_64/string/strrchr.S diff -u src/common/lib/libc/arch/x86_64/string/strrchr.S:1.2 src/common/lib/libc/arch/x86_64/string/strrchr.S:1.3 --- src/common/lib/libc/arch/x86_64/string/strrchr.S:1.2 Fri Jul 17 19:37:57 2009 +++ src/common/lib/libc/arch/x86_64/string/strrchr.S Sat Mar 22 19:16:34 2014 @@ -6,7 +6,7 @@ #include machine/asm.h #if defined(LIBC_SCCS) - RCSID($NetBSD: strrchr.S,v 1.2 2009/07/17 19:37:57 dsl Exp $) + RCSID($NetBSD: strrchr.S,v 1.3 2014/03/22 19:16:34 jakllsch Exp $) #endif ENTRY(strrchr) @@ -120,5 +120,6 @@ ENTRY(strrchr) .Ldone: ret +END(strrchr) STRONG_ALIAS(rindex,strrchr) Index: src/common/lib/libc/arch/x86_64/string/bcopy.S diff -u src/common/lib/libc/arch/x86_64/string/bcopy.S:1.4 src/common/lib/libc/arch/x86_64/string/bcopy.S:1.5 --- src/common/lib/libc/arch/x86_64/string/bcopy.S:1.4 Sun Nov 22 17:25:47 2009 +++ src/common/lib/libc/arch/x86_64/string/bcopy.S Sat Mar 22 19:16:34 2014 @@ -32,7 +32,7 @@ #include machine/asm.h #if defined(LIBC_SCCS) - RCSID($NetBSD: bcopy.S,v 1.4 2009/11/22 17:25:47 dsl Exp $) + RCSID($NetBSD: bcopy.S,v 1.5 2014/03/22 19:16:34 jakllsch Exp $) #endif /* @@ -158,3 +158,13 @@ ENTRY(bcopy) cld ret #endif + +#ifdef MEMCOPY +END(memcpy) +#else +#ifdef MEMMOVE +END(memmove) +#else +END(bcopy) +#endif +#endif Index: src/common/lib/libc/arch/x86_64/string/ffs.S diff -u src/common/lib/libc/arch/x86_64/string/ffs.S:1.4 src/common/lib/libc/arch/x86_64/string/ffs.S:1.5 --- src/common/lib/libc/arch/x86_64/string/ffs.S:1.4 Mon Jul 20 15:21:00 2009 +++ src/common/lib/libc/arch/x86_64/string/ffs.S Sat Mar 22 19:16:34 2014 @@ -7,7 +7,7 @@ #include machine/asm.h #if defined(LIBC_SCCS) - RCSID($NetBSD: ffs.S,v 1.4 2009/07/20 15:21:00 christos Exp $) + RCSID($NetBSD: ffs.S,v 1.5 2014/03/22 19:16:34 jakllsch Exp $) #endif ENTRY(ffs) @@ -18,3 +18,4 @@ ENTRY(ffs) 1: xorl %eax,%eax /* clear result */ ret +END(ffs) Index: src/common/lib/libc/arch/x86_64/string/memchr.S diff -u src/common/lib/libc/arch/x86_64/string/memchr.S:1.5 src/common/lib/libc/arch/x86_64/string/memchr.S:1.6 --- src/common/lib/libc/arch/x86_64/string/memchr.S:1.5 Sat Aug 1 20:47:02 2009 +++ src/common/lib/libc/arch/x86_64/string/memchr.S Sat Mar 22 19:16:34 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: memchr.S,v 1.5 2009/08/01 20:47:02 dsl Exp $ */ +/* $NetBSD: memchr.S,v 1.6 2014/03/22 19:16:34 jakllsch Exp $ */ /*- * Copyright (c)
CVS commit: src/common/lib/libc/arch/i386/string
Module Name:src Committed By: jakllsch Date: Sat Mar 22 19:38:46 UTC 2014 Modified Files: src/common/lib/libc/arch/i386/string: ffs.S memchr.S memcmp.S memcpy.S strcat.S strchr.S strcmp.S strcpy.S strlen.S strrchr.S src/common/lib/libc/arch/i386/string/small: memcmp.S memset.S strchr.S strcmp.S strcpy.S strlen.S Log Message: For all i386 string assembly functions that don't overlap use END() so that symbol size information is available. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/common/lib/libc/arch/i386/string/ffs.S \ src/common/lib/libc/arch/i386/string/memchr.S \ src/common/lib/libc/arch/i386/string/strcat.S \ src/common/lib/libc/arch/i386/string/strcmp.S \ src/common/lib/libc/arch/i386/string/strcpy.S \ src/common/lib/libc/arch/i386/string/strlen.S cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/i386/string/memcmp.S \ src/common/lib/libc/arch/i386/string/strchr.S \ src/common/lib/libc/arch/i386/string/strrchr.S cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/i386/string/memcpy.S cvs rdiff -u -r1.1 -r1.2 src/common/lib/libc/arch/i386/string/small/memcmp.S \ src/common/lib/libc/arch/i386/string/small/memset.S \ src/common/lib/libc/arch/i386/string/small/strchr.S \ src/common/lib/libc/arch/i386/string/small/strcmp.S \ src/common/lib/libc/arch/i386/string/small/strcpy.S \ src/common/lib/libc/arch/i386/string/small/strlen.S 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/i386/string/ffs.S diff -u src/common/lib/libc/arch/i386/string/ffs.S:1.1 src/common/lib/libc/arch/i386/string/ffs.S:1.2 --- src/common/lib/libc/arch/i386/string/ffs.S:1.1 Tue Dec 20 19:28:49 2005 +++ src/common/lib/libc/arch/i386/string/ffs.S Sat Mar 22 19:38:46 2014 @@ -6,7 +6,7 @@ #include machine/asm.h #if defined(LIBC_SCCS) - RCSID($NetBSD: ffs.S,v 1.1 2005/12/20 19:28:49 christos Exp $) + RCSID($NetBSD: ffs.S,v 1.2 2014/03/22 19:38:46 jakllsch Exp $) #endif ENTRY(ffs) @@ -18,3 +18,4 @@ ENTRY(ffs) _ALIGN_TEXT L1: xorl %eax,%eax /* clear result */ ret +END(ffs) Index: src/common/lib/libc/arch/i386/string/memchr.S diff -u src/common/lib/libc/arch/i386/string/memchr.S:1.1 src/common/lib/libc/arch/i386/string/memchr.S:1.2 --- src/common/lib/libc/arch/i386/string/memchr.S:1.1 Tue Dec 20 19:28:49 2005 +++ src/common/lib/libc/arch/i386/string/memchr.S Sat Mar 22 19:38:46 2014 @@ -6,7 +6,7 @@ #include machine/asm.h #if defined(LIBC_SCCS) - RCSID($NetBSD: memchr.S,v 1.1 2005/12/20 19:28:49 christos Exp $) + RCSID($NetBSD: memchr.S,v 1.2 2014/03/22 19:38:46 jakllsch Exp $) #endif ENTRY(memchr) @@ -16,7 +16,7 @@ ENTRY(memchr) movl 16(%esp),%esi /* - * Align to word boundary. + * Align to word boundary. * Consider unrolling loop? */ testl %esi,%esi /* nbytes == 0? */ @@ -107,3 +107,4 @@ ENTRY(memchr) .Ldone: popl %esi ret +END(memchr) Index: src/common/lib/libc/arch/i386/string/strcat.S diff -u src/common/lib/libc/arch/i386/string/strcat.S:1.1 src/common/lib/libc/arch/i386/string/strcat.S:1.2 --- src/common/lib/libc/arch/i386/string/strcat.S:1.1 Tue Dec 20 19:28:49 2005 +++ src/common/lib/libc/arch/i386/string/strcat.S Sat Mar 22 19:38:46 2014 @@ -6,7 +6,7 @@ #include machine/asm.h #if defined(LIBC_SCCS) - RCSID($NetBSD: strcat.S,v 1.1 2005/12/20 19:28:49 christos Exp $) + RCSID($NetBSD: strcat.S,v 1.2 2014/03/22 19:38:46 jakllsch Exp $) #endif ENTRY(strcat) @@ -125,3 +125,4 @@ ENTRY(strcat) movl 8(%esp),%eax popl %ebx ret +END(strcat) Index: src/common/lib/libc/arch/i386/string/strcmp.S diff -u src/common/lib/libc/arch/i386/string/strcmp.S:1.1 src/common/lib/libc/arch/i386/string/strcmp.S:1.2 --- src/common/lib/libc/arch/i386/string/strcmp.S:1.1 Tue Dec 20 19:28:49 2005 +++ src/common/lib/libc/arch/i386/string/strcmp.S Sat Mar 22 19:38:46 2014 @@ -6,7 +6,7 @@ #include machine/asm.h #if defined(LIBC_SCCS) - RCSID($NetBSD: strcmp.S,v 1.1 2005/12/20 19:28:49 christos Exp $) + RCSID($NetBSD: strcmp.S,v 1.2 2014/03/22 19:38:46 jakllsch Exp $) #endif ENTRY(strcmp) @@ -75,3 +75,4 @@ ENTRY(strcmp) popl %ebx popl %esi ret +END(strcmp) Index: src/common/lib/libc/arch/i386/string/strcpy.S diff -u src/common/lib/libc/arch/i386/string/strcpy.S:1.1 src/common/lib/libc/arch/i386/string/strcpy.S:1.2 --- src/common/lib/libc/arch/i386/string/strcpy.S:1.1 Tue Dec 20 19:28:49 2005 +++ src/common/lib/libc/arch/i386/string/strcpy.S Sat Mar 22 19:38:46 2014 @@ -6,7 +6,7 @@ #include machine/asm.h #if defined(LIBC_SCCS) - RCSID($NetBSD: strcpy.S,v 1.1 2005/12/20 19:28:49 christos Exp $) + RCSID($NetBSD: strcpy.S,v 1.2 2014/03/22 19:38:46 jakllsch Exp $) #endif /* @@ -14,7 +14,7 @@ * source pointer is aligned to a word boundary, it then copies by * words until it finds a word containing a zero byte, and finally * copies by bytes until the end of