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: 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.
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: 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/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.
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: 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.
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: 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.
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: 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.
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/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.
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.
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/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.
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/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.
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: skrll Date: Mon Sep 16 12:40:40 UTC 2019 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_op_asm.h Log Message: Traiing whitespace. To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 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.7 src/common/lib/libc/arch/arm/atomic/atomic_op_asm.h:1.8 --- src/common/lib/libc/arch/arm/atomic/atomic_op_asm.h:1.7 Sun May 17 20:57:11 2015 +++ src/common/lib/libc/arch/arm/atomic/atomic_op_asm.h Mon Sep 16 12:40:40 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_op_asm.h,v 1.7 2015/05/17 20:57:11 justin Exp $ */ +/* $NetBSD: atomic_op_asm.h,v 1.8 2019/09/16 12:40:40 skrll Exp $ */ /*- * Copyright (c) 2007 The NetBSD Foundation, Inc. @@ -22,7 +22,7 @@ * 4. Neither the name of The NetBSD Foundation nor the names of its *contributors may be used to endorse or promote products derived *from this software without specific prior written permission. - * + * * 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: Mon Sep 16 12:40:40 UTC 2019 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_op_asm.h Log Message: Traiing whitespace. To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 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.
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: skrll Date: Sun Sep 15 14:55:04 UTC 2019 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_or_64.S atomic_xor_64.S Log Message: __sync_{,x}or_and_fetch_8 should return new value... make it so. To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 src/common/lib/libc/arch/arm/atomic/atomic_or_64.S cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/arm/atomic/atomic_xor_64.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/arm/atomic
Module Name:src Committed By: skrll Date: Sun Sep 15 14:55:04 UTC 2019 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_or_64.S atomic_xor_64.S Log Message: __sync_{,x}or_and_fetch_8 should return new value... make it so. To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 src/common/lib/libc/arch/arm/atomic/atomic_or_64.S cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/arm/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/arm/atomic/atomic_or_64.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_or_64.S:1.10 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.10 Tue Mar 4 16:15:28 2014 +++ src/common/lib/libc/arch/arm/atomic/atomic_or_64.S Sun Sep 15 14:55:04 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_or_64.S,v 1.10 2014/03/04 16:15:28 matt Exp $ */ +/* $NetBSD: atomic_or_64.S,v 1.11 2019/09/15 14:55:04 skrll Exp $ */ /*- * Copyright (c) 2012 The NetBSD Foundation, Inc. * All rights reserved. @@ -57,6 +57,6 @@ END(_atomic_or_64_nv) STRONG_ALIAS(_atomic_or_64,_atomic_or_64_nv) ATOMIC_OP_ALIAS(atomic_or_64_nv,_atomic_or_64_nv) ATOMIC_OP_ALIAS(atomic_or_64,_atomic_or_64) -CRT_ALIAS(__sync_or_and_fetch_8,_atomic_or_64) +CRT_ALIAS(__sync_or_and_fetch_8,_atomic_or_64_nv) #endif /* _ARM_ARCH_6 */ Index: src/common/lib/libc/arch/arm/atomic/atomic_xor_64.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_xor_64.S:1.3 src/common/lib/libc/arch/arm/atomic/atomic_xor_64.S:1.4 --- src/common/lib/libc/arch/arm/atomic/atomic_xor_64.S:1.3 Tue Mar 4 16:15:28 2014 +++ src/common/lib/libc/arch/arm/atomic/atomic_xor_64.S Sun Sep 15 14:55:04 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_xor_64.S,v 1.3 2014/03/04 16:15:28 matt Exp $ */ +/* $NetBSD: atomic_xor_64.S,v 1.4 2019/09/15 14:55:04 skrll Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. * All rights reserved. @@ -57,6 +57,6 @@ END(_atomic_xor_64_nv) STRONG_ALIAS(_atomic_xor_64,_atomic_xor_64_nv) ATOMIC_OP_ALIAS(atomic_xor_64_nv,_atomic_xor_64_nv) ATOMIC_OP_ALIAS(atomic_xor_64,_atomic_xor_64) -CRT_ALIAS(__sync_xor_and_fetch_8,_atomic_xor_64) +CRT_ALIAS(__sync_xor_and_fetch_8,_atomic_xor_64_nv) #endif /* _ARM_ARCH_6 */
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.
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/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/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.
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/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.
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/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.
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.
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.
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/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/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.
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/arm/atomic
Module Name:src Committed By: matt Date: Wed Mar 5 17:20:48 UTC 2014 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_cas_64.S Log Message: apcs-gnu only passes one register on the stack. ldrd always loads little endian (low address, low register). To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/common/lib/libc/arch/arm/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/arm/atomic/atomic_cas_64.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S:1.9 src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S:1.10 --- src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S:1.9 Tue Mar 4 16:15:28 2014 +++ src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S Wed Mar 5 17:20:48 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_cas_64.S,v 1.9 2014/03/04 16:15:28 matt Exp $ */ +/* $NetBSD: atomic_cas_64.S,v 1.10 2014/03/05 17:20:48 matt Exp $ */ /*- * Copyright (c) 2012 The NetBSD Foundation, Inc. * All rights reserved. @@ -41,13 +41,8 @@ ENTRY_NP(_atomic_cas_64) #ifdef __ARM_EABI__ ldrd r4, r5, [sp, #16] /* fetch new value */ #else -#if __ARMEB__ - ldr r5, [sp, #16] /* fetch new value */ - ldr r4, [sp, #20] /* fetch new value */ -#else - ldr r4, [sp, #16] /* fetch new value */ - ldr r5, [sp, #20] /* fetch new value */ -#endif + ldr r5, [sp, #16] /* second word third argument */ + mov r4, r3 /* first word third argument */ mov r3, r2 /* r2 will be overwritten by r1 which ... */ mov r2, r1 /* r1 will be overwritten by ldrexd */ #endif
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: matt Date: Wed Mar 5 17:20:48 UTC 2014 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_cas_64.S Log Message: apcs-gnu only passes one register on the stack. ldrd always loads little endian (low address, low register). To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/common/lib/libc/arch/arm/atomic/atomic_cas_64.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/arm/atomic
Module Name:src Committed By: matt Date: Tue Mar 4 16:15:28 UTC 2014 Modified Files: src/common/lib/libc/arch/arm/atomic: Makefile.inc atomic_add_16.S atomic_add_64.S atomic_add_8.S atomic_and_16.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_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 Log Message: Don't export __sync* if _KERNEL || _STANDALONE are defined. (except if _RUMPKERNEL is defined) To generate a diff of this commit: cvs rdiff -u -r1.21 -r1.22 src/common/lib/libc/arch/arm/atomic/Makefile.inc cvs rdiff -u -r1.1 -r1.2 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_cas_16.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_swap_16.S \ src/common/lib/libc/arch/arm/atomic/atomic_xor_16.S \ src/common/lib/libc/arch/arm/atomic/atomic_xor_32.S \ src/common/lib/libc/arch/arm/atomic/atomic_xor_8.S cvs rdiff -u -r1.10 -r1.11 \ src/common/lib/libc/arch/arm/atomic/atomic_add_64.S cvs rdiff -u -r1.9 -r1.10 src/common/lib/libc/arch/arm/atomic/atomic_and_64.S \ src/common/lib/libc/arch/arm/atomic/atomic_or_64.S \ src/common/lib/libc/arch/arm/atomic/atomic_swap.S cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/arm/atomic/atomic_cas_32.S \ src/common/lib/libc/arch/arm/atomic/atomic_cas_8.S cvs rdiff -u -r1.8 -r1.9 src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S cvs rdiff -u -r1.2 -r1.3 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.5 -r1.6 src/common/lib/libc/arch/arm/atomic/atomic_op_asm.h cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S cvs rdiff -u -r1.4 -r1.5 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/Makefile.inc diff -u src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.21 src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.22 --- src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.21 Tue Mar 4 06:36:41 2014 +++ src/common/lib/libc/arch/arm/atomic/Makefile.inc Tue Mar 4 16:15:28 2014 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.inc,v 1.21 2014/03/04 06:36:41 matt Exp $ +# $NetBSD: Makefile.inc,v 1.22 2014/03/04 16:15:28 matt Exp $ .ifnmake obj .include ${NETBSDSRCDIR}/common/lib/libc/arch/arm/features.mk @@ -37,6 +37,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 .for op in add and nand or sub xor SRCS.atomic+= sync_fetch_and_${op}_8.S .endfor @@ -44,6 +45,7 @@ SRCS.atomic+= sync_fetch_and_${op}_8.S SRCS.atomic+= sync_bool_compare_and_swap_${sz}.S .endfor .endif +.endif .endif 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.1 src/common/lib/libc/arch/arm/atomic/atomic_add_16.S:1.2 --- src/common/lib/libc/arch/arm/atomic/atomic_add_16.S:1.1 Fri Nov 8 22:42:52 2013 +++ src/common/lib/libc/arch/arm/atomic/atomic_add_16.S Tue Mar 4 16:15:28 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_add_16.S,v 1.1 2013/11/08 22:42:52 matt Exp $ */ +/* $NetBSD: atomic_add_16.S,v 1.2 2014/03/04 16:15:28 matt Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -55,14 +55,14 @@ END(_atomic_sub_16) ATOMIC_OP_ALIAS(atomic_add_16,_atomic_add_16) ATOMIC_OP_ALIAS(atomic_add_short,_atomic_add_16) ATOMIC_OP_ALIAS(atomic_add_ushort,_atomic_add_16) -STRONG_ALIAS(__sync_fetch_and_add_2,_atomic_add_16) +CRT_ALIAS(__sync_fetch_and_add_2,_atomic_add_16) STRONG_ALIAS(_atomic_add_short,_atomic_add_16) STRONG_ALIAS(_atomic_add_ushort,_atomic_add_16) ATOMIC_OP_ALIAS(atomic_sub_16,_atomic_sub_16) ATOMIC_OP_ALIAS(atomic_sub_short,_atomic_sub_16) ATOMIC_OP_ALIAS(atomic_sub_ushort,_atomic_sub_16) -STRONG_ALIAS(__sync_fetch_and_sub_2,_atomic_sub_16) +CRT_ALIAS(__sync_fetch_and_sub_2,_atomic_sub_16)
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: matt Date: Tue Mar 4 16:15:28 UTC 2014 Modified Files: src/common/lib/libc/arch/arm/atomic: Makefile.inc atomic_add_16.S atomic_add_64.S atomic_add_8.S atomic_and_16.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_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 Log Message: Don't export __sync* if _KERNEL || _STANDALONE are defined. (except if _RUMPKERNEL is defined) To generate a diff of this commit: cvs rdiff -u -r1.21 -r1.22 src/common/lib/libc/arch/arm/atomic/Makefile.inc cvs rdiff -u -r1.1 -r1.2 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_cas_16.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_swap_16.S \ src/common/lib/libc/arch/arm/atomic/atomic_xor_16.S \ src/common/lib/libc/arch/arm/atomic/atomic_xor_32.S \ src/common/lib/libc/arch/arm/atomic/atomic_xor_8.S cvs rdiff -u -r1.10 -r1.11 \ src/common/lib/libc/arch/arm/atomic/atomic_add_64.S cvs rdiff -u -r1.9 -r1.10 src/common/lib/libc/arch/arm/atomic/atomic_and_64.S \ src/common/lib/libc/arch/arm/atomic/atomic_or_64.S \ src/common/lib/libc/arch/arm/atomic/atomic_swap.S cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/arm/atomic/atomic_cas_32.S \ src/common/lib/libc/arch/arm/atomic/atomic_cas_8.S cvs rdiff -u -r1.8 -r1.9 src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S cvs rdiff -u -r1.2 -r1.3 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.5 -r1.6 src/common/lib/libc/arch/arm/atomic/atomic_op_asm.h cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S cvs rdiff -u -r1.4 -r1.5 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.
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: matt Date: Tue Mar 4 03:34:22 UTC 2014 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_cas_64.S Log Message: Fetch value from correct stack location. Push an even number of registers so ldrd won't fail. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/common/lib/libc/arch/arm/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/arm/atomic/atomic_cas_64.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S:1.5 src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S:1.6 --- src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S:1.5 Sat Nov 30 21:09:11 2013 +++ src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S Tue Mar 4 03:34:22 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_cas_64.S,v 1.5 2013/11/30 21:09:11 joerg Exp $ */ +/* $NetBSD: atomic_cas_64.S,v 1.6 2014/03/04 03:34:22 matt Exp $ */ /*- * Copyright (c) 2012 The NetBSD Foundation, Inc. * All rights reserved. @@ -36,10 +36,10 @@ * and kernel. */ ENTRY_NP(_atomic_cas_64) - push {r4, r5, r6} /* save temporaries */ + push {r4-r7} /* save temporaries */ mov ip, r0 /* we need r0 for return value */ #ifdef __ARM_EABI__ - ldrd r4, r5, [sp] /* fetch new value */ + ldrd r4, r5, [sp, #16] /* fetch new value */ #else ldr r4, [sp, #0] /* fetch new value */ ldr r5, [sp, #4] /* fetch new value */ @@ -65,7 +65,7 @@ ENTRY_NP(_atomic_cas_64) mcr p15, 0, ip, c7, c10, 4 /* data synchronization barrier */ #endif 2: - pop {r4, r5, r6} /* restore temporaries */ + pop {r4-r7} /* restore temporaries */ RET/* return. */ END(_atomic_cas_64)
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: matt Date: Tue Mar 4 03:36:24 UTC 2014 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_cas_up.S Log Message: Load new value from correct stack location in _atomic_cas_64_up To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 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.6 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.6 Thu Feb 27 09:39:00 2014 +++ src/common/lib/libc/arch/arm/atomic/atomic_cas_up.S Tue Mar 4 03:36:24 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_cas_up.S,v 1.6 2014/02/27 09:39:00 matt Exp $ */ +/* $NetBSD: atomic_cas_up.S,v 1.7 2014/03/04 03:36:24 matt Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -53,7 +53,7 @@ END(_atomic_cas_up) ARM_ENTRY(_atomic_cas_64_up) push {r4-r5} mov ip, r0 - ldrd r4, r5, [sp] + ldrd r4, r5, [sp, #8] .align 0 RAS_START_ASM_HIDDEN(_atomic_cas_64) ldrd r0, r1, [ip]
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: matt Date: Tue Mar 4 03:49:07 UTC 2014 Modified Files: src/common/lib/libc/arch/arm/atomic: Makefile.inc Log Message: Add atomic_sub_64.S To generate a diff of this commit: cvs rdiff -u -r1.19 -r1.20 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.19 src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.20 --- src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.19 Thu Feb 27 09:39:00 2014 +++ src/common/lib/libc/arch/arm/atomic/Makefile.inc Tue Mar 4 03:49:07 2014 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.inc,v 1.19 2014/02/27 09:39:00 matt Exp $ +# $NetBSD: Makefile.inc,v 1.20 2014/03/04 03:49:07 matt Exp $ .ifnmake obj .include ${NETBSDSRCDIR}/common/lib/libc/arch/arm/features.mk @@ -34,6 +34,7 @@ SRCS.atomic+= atomic_${op}_${sz}.S .endfor SRCS.atomic+= atomic_dec_32.S atomic_dec_64.S SRCS.atomic+= atomic_inc_32.S atomic_inc_64.S +SRCS.atomic+= atomic_sub_32.S SRCS.atomic+= atomic_swap.S atomic_swap_16.S atomic_swap_64.S SRCS.atomic+= membar_ops.S .for op in add and nand or sub xor
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: matt Date: Tue Mar 4 03:50:37 UTC 2014 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_cas_64.S Log Message: Fix non-EABI loading of argument. Deal with endian issues. Fixes PR/48635 To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/arm/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/arm/atomic/atomic_cas_64.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S:1.6 src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S:1.7 --- src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S:1.6 Tue Mar 4 03:34:22 2014 +++ src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S Tue Mar 4 03:50:37 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_cas_64.S,v 1.6 2014/03/04 03:34:22 matt Exp $ */ +/* $NetBSD: atomic_cas_64.S,v 1.7 2014/03/04 03:50:37 matt Exp $ */ /*- * Copyright (c) 2012 The NetBSD Foundation, Inc. * All rights reserved. @@ -40,9 +40,13 @@ ENTRY_NP(_atomic_cas_64) mov ip, r0 /* we need r0 for return value */ #ifdef __ARM_EABI__ ldrd r4, r5, [sp, #16] /* fetch new value */ +#elif __ARMEB__ + ldr r5, [sp, #16] /* fetch new value */ + ldr r4, [sp, #20] /* fetch new value */ #else - ldr r4, [sp, #0] /* fetch new value */ - ldr r5, [sp, #4] /* fetch new value */ + ldr r4, [sp, #16] /* fetch new value */ + ldr r5, [sp, #20] /* fetch new value */ +#endif mov r3, r2 /* r2 will be overwritten by r1 which ... */ mov r2, r1 /* r1 will be overwritten by ldrexd */ #endif
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: matt Date: Tue Mar 4 06:36:41 UTC 2014 Modified Files: src/common/lib/libc/arch/arm/atomic: Makefile.inc Log Message: fix typo. To generate a diff of this commit: cvs rdiff -u -r1.20 -r1.21 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.20 src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.21 --- src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.20 Tue Mar 4 03:49:07 2014 +++ src/common/lib/libc/arch/arm/atomic/Makefile.inc Tue Mar 4 06:36:41 2014 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.inc,v 1.20 2014/03/04 03:49:07 matt Exp $ +# $NetBSD: Makefile.inc,v 1.21 2014/03/04 06:36:41 matt Exp $ .ifnmake obj .include ${NETBSDSRCDIR}/common/lib/libc/arch/arm/features.mk @@ -34,7 +34,7 @@ SRCS.atomic+= atomic_${op}_${sz}.S .endfor SRCS.atomic+= atomic_dec_32.S atomic_dec_64.S SRCS.atomic+= atomic_inc_32.S atomic_inc_64.S -SRCS.atomic+= atomic_sub_32.S +SRCS.atomic+= atomic_sub_64.S SRCS.atomic+= atomic_swap.S atomic_swap_16.S atomic_swap_64.S SRCS.atomic+= membar_ops.S .for op in add and nand or sub xor
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: matt Date: Tue Mar 4 07:01:26 UTC 2014 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_cas_64.S Log Message: Fix #if/#endif nesting To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/arm/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/arm/atomic/atomic_cas_64.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S:1.7 src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S:1.8 --- src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S:1.7 Tue Mar 4 03:50:37 2014 +++ src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S Tue Mar 4 07:01:26 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_cas_64.S,v 1.7 2014/03/04 03:50:37 matt Exp $ */ +/* $NetBSD: atomic_cas_64.S,v 1.8 2014/03/04 07:01:26 matt Exp $ */ /*- * Copyright (c) 2012 The NetBSD Foundation, Inc. * All rights reserved. @@ -40,7 +40,8 @@ ENTRY_NP(_atomic_cas_64) mov ip, r0 /* we need r0 for return value */ #ifdef __ARM_EABI__ ldrd r4, r5, [sp, #16] /* fetch new value */ -#elif __ARMEB__ +#else +#if __ARMEB__ ldr r5, [sp, #16] /* fetch new value */ ldr r4, [sp, #20] /* fetch new value */ #else
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: matt Date: Tue Mar 4 03:34:22 UTC 2014 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_cas_64.S Log Message: Fetch value from correct stack location. Push an even number of registers so ldrd won't fail. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/common/lib/libc/arch/arm/atomic/atomic_cas_64.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/arm/atomic
Module Name:src Committed By: matt Date: Tue Mar 4 03:36:24 UTC 2014 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_cas_up.S Log Message: Load new value from correct stack location in _atomic_cas_64_up To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 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.
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: matt Date: Tue Mar 4 03:49:07 UTC 2014 Modified Files: src/common/lib/libc/arch/arm/atomic: Makefile.inc Log Message: Add atomic_sub_64.S To generate a diff of this commit: cvs rdiff -u -r1.19 -r1.20 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.
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: matt Date: Tue Mar 4 03:50:37 UTC 2014 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_cas_64.S Log Message: Fix non-EABI loading of argument. Deal with endian issues. Fixes PR/48635 To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/arm/atomic/atomic_cas_64.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/arm/atomic
Module Name:src Committed By: matt Date: Tue Mar 4 06:36:41 UTC 2014 Modified Files: src/common/lib/libc/arch/arm/atomic: Makefile.inc Log Message: fix typo. To generate a diff of this commit: cvs rdiff -u -r1.20 -r1.21 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.
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: matt Date: Tue Mar 4 07:01:26 UTC 2014 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_cas_64.S Log Message: Fix #if/#endif nesting To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/arm/atomic/atomic_cas_64.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/arm/atomic
Module Name:src Committed By: martin Date: Sat Feb 22 08:08:56 UTC 2014 Modified Files: src/common/lib/libc/arch/arm/atomic: Makefile.inc Log Message: Move the __sync_* ops added in the previous change to a libc-only section To generate a diff of this commit: cvs rdiff -u -r1.16 -r1.17 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.16 src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.17 --- src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.16 Fri Feb 21 21:54:38 2014 +++ src/common/lib/libc/arch/arm/atomic/Makefile.inc Sat Feb 22 08:08:56 2014 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.inc,v 1.16 2014/02/21 21:54:38 martin Exp $ +# $NetBSD: Makefile.inc,v 1.17 2014/02/22 08:08:56 martin Exp $ ARMV6= ${CPUFLAGS:M-march=armv6*} ${CPUFLAGS:M-mcpu=arm11*} ARMV6+= ${CFLAGS:M-march=armv6*:} ${CFLAGS:M-mcpu=arm11*} @@ -22,14 +22,18 @@ 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_xor_32_cas.c atomic_xor_16_cas.c atomic_xor_8_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 \ atomic_sub_32_cas.c atomic_sub_16_cas.c atomic_sub_8_cas.c \ 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_add_16_cas.c atomic_add_8_cas.c \ atomic_swap_16_cas.c atomic_swap_8_cas.c +.endif + .else .for op in add and cas nand or xor .for sz in 8 16 32 64
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: martin Date: Sat Feb 22 17:16:12 UTC 2014 Modified Files: src/common/lib/libc/arch/arm/atomic: Makefile.inc Log Message: Missed one __sync_* op (or gcc4.8 does inline it, while 4.5 does not?) To generate a diff of this commit: cvs rdiff -u -r1.17 -r1.18 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.17 src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.18 --- src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.17 Sat Feb 22 08:08:56 2014 +++ src/common/lib/libc/arch/arm/atomic/Makefile.inc Sat Feb 22 17:16:12 2014 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.inc,v 1.17 2014/02/22 08:08:56 martin Exp $ +# $NetBSD: Makefile.inc,v 1.18 2014/02/22 17:16:12 martin Exp $ ARMV6= ${CPUFLAGS:M-march=armv6*} ${CPUFLAGS:M-mcpu=arm11*} ARMV6+= ${CFLAGS:M-march=armv6*:} ${CFLAGS:M-mcpu=arm11*} @@ -31,7 +31,8 @@ SRCS.atomic+= atomic_xor_32_cas.c atomic atomic_or_16_cas.c atomic_or_8_cas.c \ 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_swap_16_cas.c atomic_swap_8_cas.c \ + atomic_cas_32_cas.c atomic_cas_16_cas.c atomic_cas_8_cas.c .endif .else
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: martin Date: Sat Feb 22 08:08:56 UTC 2014 Modified Files: src/common/lib/libc/arch/arm/atomic: Makefile.inc Log Message: Move the __sync_* ops added in the previous change to a libc-only section To generate a diff of this commit: cvs rdiff -u -r1.16 -r1.17 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.
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: martin Date: Sat Feb 22 17:16:12 UTC 2014 Modified Files: src/common/lib/libc/arch/arm/atomic: Makefile.inc Log Message: Missed one __sync_* op (or gcc4.8 does inline it, while 4.5 does not?) To generate a diff of this commit: cvs rdiff -u -r1.17 -r1.18 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.
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: martin Date: Fri Feb 21 21:54:38 UTC 2014 Modified Files: src/common/lib/libc/arch/arm/atomic: Makefile.inc Log Message: Provide the missing __sync_* ops for earlier arm versions To generate a diff of this commit: cvs rdiff -u -r1.15 -r1.16 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.15 src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.16 --- src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.15 Mon Jan 27 18:05:24 2014 +++ src/common/lib/libc/arch/arm/atomic/Makefile.inc Fri Feb 21 21:54:38 2014 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.inc,v 1.15 2014/01/27 18:05:24 matt Exp $ +# $NetBSD: Makefile.inc,v 1.16 2014/02/21 21:54:38 martin Exp $ ARMV6= ${CPUFLAGS:M-march=armv6*} ${CPUFLAGS:M-mcpu=arm11*} ARMV6+= ${CFLAGS:M-march=armv6*:} ${CFLAGS:M-mcpu=arm11*} @@ -22,7 +22,14 @@ 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_swap_32_cas.c membar_ops_nop.c \ + atomic_xor_32_cas.c atomic_xor_16_cas.c atomic_xor_8_cas.c \ + atomic_sub_32_cas.c atomic_sub_16_cas.c atomic_sub_8_cas.c \ + 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_add_16_cas.c atomic_add_8_cas.c \ + atomic_swap_16_cas.c atomic_swap_8_cas.c .else .for op in add and cas nand or xor .for sz in 8 16 32 64
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: martin Date: Fri Feb 21 21:54:38 UTC 2014 Modified Files: src/common/lib/libc/arch/arm/atomic: Makefile.inc Log Message: Provide the missing __sync_* ops for earlier arm versions To generate a diff of this commit: cvs rdiff -u -r1.15 -r1.16 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.
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: matt Date: Thu Jan 30 06:39:16 UTC 2014 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_swap.S Log Message: switch to unified syntax To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 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.8 src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.9 --- src/common/lib/libc/arch/arm/atomic/atomic_swap.S:1.8 Fri Nov 8 22:42:52 2013 +++ src/common/lib/libc/arch/arm/atomic/atomic_swap.S Thu Jan 30 06:39:16 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_swap.S,v 1.8 2013/11/08 22:42:52 matt Exp $ */ +/* $NetBSD: atomic_swap.S,v 1.9 2014/01/30 06:39:16 matt Exp $ */ /*- * Copyright (c) 2007,2012 The NetBSD Foundation, Inc. @@ -61,7 +61,7 @@ ENTRY_NP(_atomic_swap_32) #else swp r0, r1, [ip] cmp r0, r1 - movnes r3, #0 + movsne r3, #0 cmpne r3, #0 #endif bne 1b
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: matt Date: Thu Jan 30 06:39:16 UTC 2014 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_swap.S Log Message: switch to unified syntax To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 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.
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: matt Date: Mon Jan 27 18:05:25 UTC 2014 Modified Files: src/common/lib/libc/arch/arm/atomic: Makefile.inc atomic_cas_up.S Log Message: Add _atomic_cas_16_up and _atomic_cas_8_up To generate a diff of this commit: cvs rdiff -u -r1.14 -r1.15 src/common/lib/libc/arch/arm/atomic/Makefile.inc cvs rdiff -u -r1.4 -r1.5 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/Makefile.inc diff -u src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.14 src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.15 --- src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.14 Fri Nov 8 22:42:52 2013 +++ src/common/lib/libc/arch/arm/atomic/Makefile.inc Mon Jan 27 18:05:24 2014 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.inc,v 1.14 2013/11/08 22:42:52 matt Exp $ +# $NetBSD: Makefile.inc,v 1.15 2014/01/27 18:05:24 matt Exp $ ARMV6= ${CPUFLAGS:M-march=armv6*} ${CPUFLAGS:M-mcpu=arm11*} ARMV6+= ${CFLAGS:M-march=armv6*:} ${CFLAGS:M-mcpu=arm11*} @@ -58,6 +58,8 @@ CPUFLAGS.atomic_simplelock.c+= -marm SRCS.atomic+= atomic_init_testset.c SRCS.atomic+= atomic_cas_up.S CPPFLAGS+= -D__HAVE_ASM_ATOMIC_CAS_UP +CPPFLAGS+= -D__HAVE_ASM_ATOMIC_CAS_16_UP +CPPFLAGS+= -D__HAVE_ASM_ATOMIC_CAS_8_UP .else SRCS.atomic+= atomic_init_cas.c .endif 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.4 src/common/lib/libc/arch/arm/atomic/atomic_cas_up.S:1.5 --- src/common/lib/libc/arch/arm/atomic/atomic_cas_up.S:1.4 Mon Aug 19 00:35:06 2013 +++ src/common/lib/libc/arch/arm/atomic/atomic_cas_up.S Mon Jan 27 18:05:24 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_cas_up.S,v 1.4 2013/08/19 00:35:06 matt Exp $ */ +/* $NetBSD: atomic_cas_up.S,v 1.5 2014/01/27 18:05:24 matt Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -48,3 +48,35 @@ RAS_START_ASM_HIDDEN(_atomic_cas) RAS_END_ASM_HIDDEN(_atomic_cas) 1: RET END(_atomic_cas_up) + +ENTRY(_atomic_cas_16_up) + mov r3, r0 + .align 0 +RAS_START_ASM_HIDDEN(_atomic_cas_16) + ldrh r0, [r3] + cmp r0, r1 +#if defined(__thumb__) + beq 1f +#else + strheq r2, [r3] +#endif + .align 0 +RAS_END_ASM_HIDDEN(_atomic_cas_16) +1: RET +END(_atomic_cas_16_up) + +ENTRY(_atomic_cas_8_up) + mov r3, r0 + .align 0 +RAS_START_ASM_HIDDEN(_atomic_cas_8) + ldrb r0, [r3] + cmp r0, r1 +#if defined(__thumb__) + beq 1f +#else + strbeq r2, [r3] +#endif + .align 0 +RAS_END_ASM_HIDDEN(_atomic_cas_8) +1: RET +END(_atomic_cas_8_up)
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: matt Date: Mon Jan 27 18:05:25 UTC 2014 Modified Files: src/common/lib/libc/arch/arm/atomic: Makefile.inc atomic_cas_up.S Log Message: Add _atomic_cas_16_up and _atomic_cas_8_up To generate a diff of this commit: cvs rdiff -u -r1.14 -r1.15 src/common/lib/libc/arch/arm/atomic/Makefile.inc cvs rdiff -u -r1.4 -r1.5 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.
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: joerg Date: Sat Nov 30 20:43:53 UTC 2013 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_add_64.S Log Message: Explicitly name the register pairs. To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/common/lib/libc/arch/arm/atomic/atomic_add_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.9 src/common/lib/libc/arch/arm/atomic/atomic_add_64.S:1.10 --- src/common/lib/libc/arch/arm/atomic/atomic_add_64.S:1.9 Fri Nov 8 22:42:52 2013 +++ src/common/lib/libc/arch/arm/atomic/atomic_add_64.S Sat Nov 30 20:43:53 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_add_64.S,v 1.9 2013/11/08 22:42:52 matt Exp $ */ +/* $NetBSD: atomic_add_64.S,v 1.10 2013/11/30 20:43:53 joerg Exp $ */ /*- * Copyright (c) 2012 The NetBSD Foundation, Inc. * All rights reserved. @@ -39,10 +39,10 @@ ENTRY_NP(_atomic_add_64_nv) mov r3, r2 mov r2, r1 #endif -1: ldrexd r0, [ip] /* load old value */ +1: ldrexd r0, r1, [ip] /* load old value */ adds LO, LO, NLO /* calculate new value lo */ adcs HI, HI, NHI /* calculate new value hi */ - strexd r4, r0, [ip] /* try to store */ + strexd r4, r0, r1, [ip] /* try to store */ cmp r4, #0 /* succeed? */ bne 1b /* no, try again? */ #ifdef _ARM_ARCH_7
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: joerg Date: Sat Nov 30 20:43:53 UTC 2013 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_add_64.S Log Message: Explicitly name the register pairs. To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/common/lib/libc/arch/arm/atomic/atomic_add_64.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Re: CVS commit: src/common/lib/libc/arch/arm/atomic
On Fri, Nov 08, 2013 at 10:42:52PM +, Matt Thomas wrote: Log Message: Add support for the gcc __sync builtins. A stupid but important question: what is __sync? - Jukka.
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: matt Date: Fri Nov 8 22:42:52 UTC 2013 Modified Files: src/common/lib/libc/arch/arm/atomic: Makefile.inc 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_cas_8.S atomic_inc_32.S atomic_op_asm.h atomic_or_32.S atomic_or_64.S atomic_swap.S atomic_swap_64.S membar_ops.S Added Files: src/common/lib/libc/arch/arm/atomic: atomic_add_16.S atomic_add_8.S atomic_and_16.S atomic_and_8.S atomic_cas_16.S atomic_nand_16.S atomic_nand_32.S atomic_nand_64.S atomic_nand_8.S atomic_or_16.S atomic_or_8.S atomic_sub_64.S atomic_swap_16.S atomic_xor_16.S atomic_xor_32.S atomic_xor_64.S atomic_xor_8.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: Add support for the gcc __sync builtins. Note that these need earmv6 or later to get the ldrex/strex instructions To generate a diff of this commit: cvs rdiff -u -r1.13 -r1.14 src/common/lib/libc/arch/arm/atomic/Makefile.inc cvs rdiff -u -r0 -r1.1 src/common/lib/libc/arch/arm/atomic/atomic_add_16.S \ src/common/lib/libc/arch/arm/atomic/atomic_add_8.S \ src/common/lib/libc/arch/arm/atomic/atomic_and_16.S \ src/common/lib/libc/arch/arm/atomic/atomic_and_8.S \ src/common/lib/libc/arch/arm/atomic/atomic_cas_16.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_64.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_swap_16.S \ src/common/lib/libc/arch/arm/atomic/atomic_xor_16.S \ src/common/lib/libc/arch/arm/atomic/atomic_xor_32.S \ src/common/lib/libc/arch/arm/atomic/atomic_xor_64.S \ src/common/lib/libc/arch/arm/atomic/atomic_xor_8.S \ 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 \ src/common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_8.S \ src/common/lib/libc/arch/arm/atomic/sync_fetch_and_add_8.S \ src/common/lib/libc/arch/arm/atomic/sync_fetch_and_and_8.S \ src/common/lib/libc/arch/arm/atomic/sync_fetch_and_nand_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.5 -r1.6 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_cas_32.S \ src/common/lib/libc/arch/arm/atomic/atomic_cas_8.S \ src/common/lib/libc/arch/arm/atomic/atomic_or_32.S \ src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S cvs rdiff -u -r1.8 -r1.9 src/common/lib/libc/arch/arm/atomic/atomic_add_64.S cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/arm/atomic/atomic_and_64.S \ src/common/lib/libc/arch/arm/atomic/atomic_or_64.S \ 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_cas_64.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_inc_32.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/arm/atomic
Module Name:src Committed By: matt Date: Tue Aug 20 07:52:31 UTC 2013 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_add_64.S atomic_and_64.S atomic_or_64.S atomic_swap_64.S Log Message: Push two registers to keep stack aligned. To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/arm/atomic/atomic_add_64.S cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/arm/atomic/atomic_and_64.S \ src/common/lib/libc/arch/arm/atomic/atomic_or_64.S cvs rdiff -u -r1.4 -r1.5 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.7 src/common/lib/libc/arch/arm/atomic/atomic_add_64.S:1.8 --- src/common/lib/libc/arch/arm/atomic/atomic_add_64.S:1.7 Sun Aug 11 04:41:17 2013 +++ src/common/lib/libc/arch/arm/atomic/atomic_add_64.S Tue Aug 20 07:52:31 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_add_64.S,v 1.7 2013/08/11 04:41:17 matt Exp $ */ +/* $NetBSD: atomic_add_64.S,v 1.8 2013/08/20 07:52:31 matt 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 {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 {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_and_64.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_and_64.S:1.6 src/common/lib/libc/arch/arm/atomic/atomic_and_64.S:1.7 --- src/common/lib/libc/arch/arm/atomic/atomic_and_64.S:1.6 Sun Aug 11 04:41:17 2013 +++ src/common/lib/libc/arch/arm/atomic/atomic_and_64.S Tue Aug 20 07:52:31 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_and_64.S,v 1.6 2013/08/11 04:41:17 matt Exp $ */ +/* $NetBSD: atomic_and_64.S,v 1.7 2013/08/20 07:52:31 matt 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 {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 {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_or_64.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_or_64.S:1.6 src/common/lib/libc/arch/arm/atomic/atomic_or_64.S:1.7 --- src/common/lib/libc/arch/arm/atomic/atomic_or_64.S:1.6 Sun Aug 11 04:41:17 2013 +++ src/common/lib/libc/arch/arm/atomic/atomic_or_64.S Tue Aug 20 07:52:31 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_or_64.S,v 1.6 2013/08/11 04:41:17 matt Exp $ */ +/* $NetBSD: atomic_or_64.S,v 1.7 2013/08/20 07:52:31 matt 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 {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 {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_swap_64.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S:1.4 src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S:1.5 --- src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S:1.4 Sat Aug 10 19:59:21 2013 +++ src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S Tue Aug 20 07:52:31 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_swap_64.S,v 1.4 2013/08/10 19:59:21 matt Exp $ */ +/* $NetBSD: atomic_swap_64.S,v 1.5 2013/08/20 07:52:31 matt Exp $ */ /*- * Copyright (c) 2012 The NetBSD Foundation, Inc. * All rights reserved. @@ -31,7 +31,7 @@ #include atomic_op_asm.h ENTRY_NP(_atomic_swap_64) - push {r4} /* save temporary */ + push {r3,r4} /* save temporary */ mov ip, r0 /* return value will be in r0 */ #ifndef __ARM_EABI__ mov r3, r2 /* r2 will be overwriten by r1 */ @@ -46,7 +46,7 @@ ENTRY_NP(_atomic_swap_64) #else mcr p15, 0, r4, c7, c10, 5 /* data memory barrier */ #endif - pop {r4} /* restore temporary */ + pop {r3,r4} /* restore temporary */ RET END(_atomic_swap_64) ATOMIC_OP_ALIAS(atomic_swap_64,_atomic_swap_64)
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: matt Date: Tue Aug 20 07:52:31 UTC 2013 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_add_64.S atomic_and_64.S atomic_or_64.S atomic_swap_64.S Log Message: Push two registers to keep stack aligned. To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/arm/atomic/atomic_add_64.S cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/arm/atomic/atomic_and_64.S \ src/common/lib/libc/arch/arm/atomic/atomic_or_64.S cvs rdiff -u -r1.4 -r1.5 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.
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: matt Date: Mon Aug 19 00:35:07 UTC 2013 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_cas_up.S Log Message: Thumbify To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 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.3 src/common/lib/libc/arch/arm/atomic/atomic_cas_up.S:1.4 --- src/common/lib/libc/arch/arm/atomic/atomic_cas_up.S:1.3 Sat Aug 10 19:59:21 2013 +++ src/common/lib/libc/arch/arm/atomic/atomic_cas_up.S Mon Aug 19 00:35:06 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_cas_up.S,v 1.3 2013/08/10 19:59:21 matt Exp $ */ +/* $NetBSD: atomic_cas_up.S,v 1.4 2013/08/19 00:35:06 matt Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -35,10 +35,16 @@ ENTRY(_atomic_cas_up) .hidden _C_LABEL(_atomic_cas_up) mov r3, r0 + .align 0 RAS_START_ASM_HIDDEN(_atomic_cas) ldr r0, [r3] cmp r0, r1 +#if defined(__thumb__) + beq 1f +#else streq r2, [r3] +#endif + .align 0 RAS_END_ASM_HIDDEN(_atomic_cas) - RET +1: RET END(_atomic_cas_up)
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: matt Date: Mon Aug 19 03:55:12 UTC 2013 Modified Files: src/common/lib/libc/arch/arm/atomic: Makefile.inc Log Message: Rework to allow thumb armv7 compilation. Add atomic_simplelock.c for thumb To generate a diff of this commit: cvs rdiff -u -r1.12 -r1.13 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.12 src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.13 --- src/common/lib/libc/arch/arm/atomic/Makefile.inc:1.12 Tue Aug 6 20:49:15 2013 +++ src/common/lib/libc/arch/arm/atomic/Makefile.inc Mon Aug 19 03:55:12 2013 @@ -1,22 +1,23 @@ -# $NetBSD: Makefile.inc,v 1.12 2013/08/06 20:49:15 matt Exp $ +# $NetBSD: Makefile.inc,v 1.13 2013/08/19 03:55:12 matt Exp $ -ARMV6= ${CPUFLAGS:M-march=armv7*} ${CPUFLAGS:M-mcpu=cortex*} -ARMV6+= ${CPUFLAGS:M-march=armv6*} ${CPUFLAGS:M-mcpu=arm11*} -ARMV6+= ${CFLAGS:M-march=armv7*:} ${CFLAGS:M-mcpu=cortex*} +ARMV6= ${CPUFLAGS:M-march=armv6*} ${CPUFLAGS:M-mcpu=arm11*} ARMV6+= ${CFLAGS:M-march=armv6*:} ${CFLAGS:M-mcpu=arm11*} -ARMV6+= ${CPPFLAGS:M-march=armv7*:} ${CPPFLAGS:M-mcpu=cortex*} ARMV6+= ${CPPFLAGS:M-march=armv6*:} ${CPPFLAGS:M-mcpu=arm11*} +ARMV7= ${CPUFLAGS:M-march=armv7*} ${CPUFLAGS:M-mcpu=cortex*} +ARMV7+= ${CFLAGS:M-march=armv7*:} ${CFLAGS:M-mcpu=cortex*} +ARMV7+= ${CPPFLAGS:M-march=armv7*:} ${CPPFLAGS:M-mcpu=cortex*} .if empty(CPPFLAGS:M-D_STANDALONE) \ empty(CFLAGS:M-march=*) empty(CFLAGS:M-mcpu=*) \ empty(CPPFLAGS:M-march=*) empty(CPPFLAGS:M-mcpu=*) \ empty(CPUFLAGS:M-march=*) empty(CPUFLAGS:M-mcpu=*) -ARMV6+= ${MACHINE_ARCH:Mearmv[67]*} +ARMV6+= ${MACHINE_ARCH:Mearmv6*} +ARMV7+= ${MACHINE_ARCH:Mearmv7*} .endif .if defined(LIB) (${LIB} == kern || ${LIB} == c || ${LIB} == pthread \ || ${LIB} == rump) -.if empty(ARMV6) +.if empty(ARMV6) empty(ARMV7) SRCS.atomic+= 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 \ @@ -34,9 +35,18 @@ SRCS.atomic+= atomic_swap_64.S .endif +.if defined(LIB) (${LIB} == c || ${LIB} == pthread || ${LIB} == rump) + +SRCS.atomic+= atomic_simplelock.c +.if empty(ARMV7) +CPUFLAGS.atomic_simplelock.c+= -marm +.endif + +.endif + .if defined(LIB) (${LIB} == c || ${LIB} == pthread) -.if empty(ARMV6) +.if empty(ARMV6) empty(ARMV7) SRCS.atomic+= atomic_init_testset.c SRCS.atomic+= atomic_cas_up.S CPPFLAGS+= -D__HAVE_ASM_ATOMIC_CAS_UP @@ -46,4 +56,10 @@ SRCS.atomic+= atomic_init_cas.c .endif +.if !empty(ARMV6) +.for f in ${SRCS.atomic:M*.S} +CPUFLAGS.$f+= -marm +.endfor +.endif + SRCS+= ${SRCS.atomic}
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: matt Date: Mon Aug 19 00:35:07 UTC 2013 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_cas_up.S Log Message: Thumbify To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 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.
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: matt Date: Mon Aug 19 03:55:12 UTC 2013 Modified Files: src/common/lib/libc/arch/arm/atomic: Makefile.inc Log Message: Rework to allow thumb armv7 compilation. Add atomic_simplelock.c for thumb To generate a diff of this commit: cvs rdiff -u -r1.12 -r1.13 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.
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: matt Date: Thu Aug 15 22:42:50 UTC 2013 Added Files: src/common/lib/libc/arch/arm/atomic: atomic_simplelock.c Log Message: When compiling for Thumb1, the swp instruction is not availble. So this stub is added to provide __cpu_simple_lock and __cpu_simple_lock_try via thumb interwork support. It is compiled with -mno-thumb. To generate a diff of this commit: cvs rdiff -u -r0 -r1.1 \ src/common/lib/libc/arch/arm/atomic/atomic_simplelock.c 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/arm/atomic/atomic_simplelock.c diff -u /dev/null src/common/lib/libc/arch/arm/atomic/atomic_simplelock.c:1.1 --- /dev/null Thu Aug 15 22:42:50 2013 +++ src/common/lib/libc/arch/arm/atomic/atomic_simplelock.c Thu Aug 15 22:42:50 2013 @@ -0,0 +1,66 @@ +/*- + * Copyright (c) 2013 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Matt Thomas of 3am Software Foundry. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + *notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + *notice, this list of conditions and the following disclaimer in the + *documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include sys/cdefs.h +__RCSID($NetBSD: atomic_simplelock.c,v 1.1 2013/08/15 22:42:50 matt Exp $); + +#include sys/types.h +/* + * We need to use the inlines so redefine out of the way. + */ +#define __cpu_simple_lock __arm_simple_lock +#define __cpu_simple_lock_try __arm_simple_lock_try +#include arm/lock.h +/* + * Now get rid of them. + */ +#undef __cpu_simple_lock +#undef __cpu_simple_lock_try + +#if !defined(_ARM_ARCH_T2) +/* + * Since we overrode lock.h we have to provide these ourselves. + */ +__dso_hidden void __cpu_simple_lock(__cpu_simple_lock_t *); +__dso_hidden int __cpu_simple_lock_try(__cpu_simple_lock_t *); + +void +__cpu_simple_lock(__cpu_simple_lock_t *alp) +{ + + __arm_simple_lock(alp); +} + +int +__cpu_simple_lock_try(__cpu_simple_lock_t *alp) +{ + + return __arm_simple_lock_try(alp); +} +#endif
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: matt Date: Fri Aug 16 01:47:41 UTC 2013 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_simplelock.c Log Message: Add a hidden version for libpthread. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 \ src/common/lib/libc/arch/arm/atomic/atomic_simplelock.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/common/lib/libc/arch/arm/atomic/atomic_simplelock.c diff -u src/common/lib/libc/arch/arm/atomic/atomic_simplelock.c:1.1 src/common/lib/libc/arch/arm/atomic/atomic_simplelock.c:1.2 --- src/common/lib/libc/arch/arm/atomic/atomic_simplelock.c:1.1 Thu Aug 15 22:42:50 2013 +++ src/common/lib/libc/arch/arm/atomic/atomic_simplelock.c Fri Aug 16 01:47:41 2013 @@ -28,9 +28,11 @@ */ #include sys/cdefs.h -__RCSID($NetBSD: atomic_simplelock.c,v 1.1 2013/08/15 22:42:50 matt Exp $); +__RCSID($NetBSD: atomic_simplelock.c,v 1.2 2013/08/16 01:47:41 matt Exp $); #include sys/types.h + +#if !defined(_ARM_ARCH_T2) /* * We need to use the inlines so redefine out of the way. */ @@ -43,12 +45,16 @@ __RCSID($NetBSD: atomic_simplelock.c,v #undef __cpu_simple_lock #undef __cpu_simple_lock_try -#if !defined(_ARM_ARCH_T2) /* * Since we overrode lock.h we have to provide these ourselves. */ +#ifdef __LIBPTHREAD_SOURCE__ __dso_hidden void __cpu_simple_lock(__cpu_simple_lock_t *); __dso_hidden int __cpu_simple_lock_try(__cpu_simple_lock_t *); +#else +void __cpu_simple_lock(__cpu_simple_lock_t *); +int __cpu_simple_lock_try(__cpu_simple_lock_t *); +#endif void __cpu_simple_lock(__cpu_simple_lock_t *alp)
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: matt Date: Thu Aug 15 22:42:50 UTC 2013 Added Files: src/common/lib/libc/arch/arm/atomic: atomic_simplelock.c Log Message: When compiling for Thumb1, the swp instruction is not availble. So this stub is added to provide __cpu_simple_lock and __cpu_simple_lock_try via thumb interwork support. It is compiled with -mno-thumb. To generate a diff of this commit: cvs rdiff -u -r0 -r1.1 \ src/common/lib/libc/arch/arm/atomic/atomic_simplelock.c 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/arm/atomic
Module Name:src Committed By: matt Date: Fri Aug 16 01:47:41 UTC 2013 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_simplelock.c Log Message: Add a hidden version for libpthread. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 \ src/common/lib/libc/arch/arm/atomic/atomic_simplelock.c 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/arm/atomic
Module Name:src Committed By: matt Date: Sat Aug 10 18:28:15 UTC 2013 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_inc_64.S Log Message: Fix add - adds To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/arm/atomic/atomic_inc_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_inc_64.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_inc_64.S:1.3 src/common/lib/libc/arch/arm/atomic/atomic_inc_64.S:1.4 --- src/common/lib/libc/arch/arm/atomic/atomic_inc_64.S:1.3 Mon Oct 29 14:09:38 2012 +++ src/common/lib/libc/arch/arm/atomic/atomic_inc_64.S Sat Aug 10 18:28:15 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_inc_64.S,v 1.3 2012/10/29 14:09:38 chs Exp $ */ +/* $NetBSD: atomic_inc_64.S,v 1.4 2013/08/10 18:28:15 matt Exp $ */ /*- * Copyright (c) 2012 The NetBSD Foundation, Inc. * All rights reserved. @@ -55,7 +55,7 @@ ATOMIC_OP_ALIAS(atomic_inc_64,_atomic_in ENTRY_NP(_atomic_inc_64_nv) mov r3, r0 /* need r0 for return value */ 1: ldrexd r0, [r3] /* load old value */ - add LO, LO, #1 /* calculate new value (return value) */ + adds LO, LO, #1 /* calculate new value (return value) */ adc HI, HI, #0 /* fold carry into high */ strexd ip, r0, [r3] /* try to store */ cmp ip, #0 /* succeed? */
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: matt Date: Sat Aug 10 18:32:06 UTC 2013 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_inc_64.S Log Message: Don't adjust return of atomic_inc_64 since it's void and doesn't return anything. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/arm/atomic/atomic_inc_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_inc_64.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_inc_64.S:1.4 src/common/lib/libc/arch/arm/atomic/atomic_inc_64.S:1.5 --- src/common/lib/libc/arch/arm/atomic/atomic_inc_64.S:1.4 Sat Aug 10 18:28:15 2013 +++ src/common/lib/libc/arch/arm/atomic/atomic_inc_64.S Sat Aug 10 18:32:06 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_inc_64.S,v 1.4 2013/08/10 18:28:15 matt Exp $ */ +/* $NetBSD: atomic_inc_64.S,v 1.5 2013/08/10 18:32:06 matt Exp $ */ /*- * Copyright (c) 2012 The NetBSD Foundation, Inc. * All rights reserved. @@ -45,10 +45,7 @@ ENTRY_NP(_atomic_inc_64) #else mcr p15, 0, ip, c7, c10, 5 /* data memory barrier */ #endif - mvn r2, #0 /* r2 = -1 */ - adds LO, LO, r2 /* add it */ - adc HI, HI, r2 /* add with carry */ - RET/* return orig value */ + RET END(_atomic_inc_64) ATOMIC_OP_ALIAS(atomic_inc_64,_atomic_inc_64)
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: matt Date: Sat Aug 10 18:38:33 UTC 2013 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_swap_64.S Log Message: cmpne - cmp Use push/pop To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 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_64.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S:1.2 src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S:1.3 --- src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S:1.2 Thu Sep 13 00:36:12 2012 +++ src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S Sat Aug 10 18:38:33 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_swap_64.S,v 1.2 2012/09/13 00:36:12 matt Exp $ */ +/* $NetBSD: atomic_swap_64.S,v 1.3 2013/08/10 18:38:33 matt Exp $ */ /*- * Copyright (c) 2012 The NetBSD Foundation, Inc. * All rights reserved. @@ -31,7 +31,7 @@ #include atomic_op_asm.h ENTRY_NP(_atomic_swap_64) - str r4, [sp, #-4]! /* save temporary */ + push {r4} /* save temporary */ mov r4, r0 /* return value will be in r0 */ #ifndef __ARM_EABI__ mov r3, r2 /* r2 will be overwriten by r1 */ @@ -40,14 +40,14 @@ ENTRY_NP(_atomic_swap_64) 1: ldrexd r0, [r4] /* load old value */ strexd ip, r2, [r4] /* store new value */ - cmpne ip, #0 /*succeed? */ + cmp ip, #0 /*succeed? */ bne 1b /*no, try again */ #ifdef _ARM_ARCH_7 dmb #else mcr p15, 0, ip, c7, c10, 5 /* data memory barrier */ #endif - ldr r4, [sp], #4 /* restore temporary */ + pop {r4} /* restore temporary */ RET END(_atomic_swap_64) ATOMIC_OP_ALIAS(atomic_swap_64,_atomic_swap_64)
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: matt Date: Sat Aug 10 18:39:07 UTC 2013 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_or_64.S Log Message: use push/pop To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/arm/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/arm/atomic/atomic_or_64.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_or_64.S:1.2 src/common/lib/libc/arch/arm/atomic/atomic_or_64.S:1.3 --- src/common/lib/libc/arch/arm/atomic/atomic_or_64.S:1.2 Thu Sep 13 00:36:12 2012 +++ src/common/lib/libc/arch/arm/atomic/atomic_or_64.S Sat Aug 10 18:39:07 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_or_64.S,v 1.2 2012/09/13 00:36:12 matt Exp $ */ +/* $NetBSD: atomic_or_64.S,v 1.3 2013/08/10 18:39:07 matt Exp $ */ /*- * Copyright (c) 2012 The NetBSD Foundation, Inc. * All rights reserved. @@ -33,15 +33,15 @@ #ifdef _ARM_ARCH_6 ENTRY_NP(_atomic_or_64) - str r4, [sp, #-4]! /* save temporary */ + push {r4} /* save temporary */ #ifndef __ARM_EABI__ mov r3, r2 mov r2, r1 #endif mov r4, r0 /* need r0 for return value */ 1: ldrexd r0, [r4] /* load old value (to be returned) */ - orr r2, r0, r2 /* calculate new value */ - orr r3, r1, r3 /* calculate new value */ + orr r2, r2, r0 /* calculate new value */ + orr r3, r3, r1 /* calculate new value */ strexd ip, r2, [r4] /* try to store */ cmp ip, #0 /* succeed? */ bne 1b /* no, try again */ @@ -50,13 +50,13 @@ ENTRY_NP(_atomic_or_64) #else mcr p15, 0, ip, c7, c10, 5 /* data memory barrier */ #endif - ldr r4, [sp], #4 /* restore temporary */ + pop {r4} /* restore temporary */ RET/* return old value */ END(_atomic_or_64) ATOMIC_OP_ALIAS(atomic_or_64,_atomic_or_64) ENTRY_NP(_atomic_or_64_nv) - str r4, [sp, #-4]! /* save temporary */ + push {r4} /* save temporary */ #ifndef __ARM_EABI__ mov r3, r2 mov r2, r1 @@ -73,7 +73,7 @@ ENTRY_NP(_atomic_or_64_nv) #else mcr p15, 0, ip, c7, c10, 5 /* data memory barrier */ #endif - ldr r4, [sp], #4 /* restore temporary */ + pop {r4} /* restore temporary */ RET/* return new value */ END(_atomic_or_64_nv) ATOMIC_OP_ALIAS(atomic_or_64_nv,_atomic_or_64_nv)
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: matt Date: Sat Aug 10 18:39:25 UTC 2013 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_and_64.S Log Message: Use push/pop To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/arm/atomic/atomic_and_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_and_64.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_and_64.S:1.2 src/common/lib/libc/arch/arm/atomic/atomic_and_64.S:1.3 --- src/common/lib/libc/arch/arm/atomic/atomic_and_64.S:1.2 Thu Sep 13 00:36:12 2012 +++ src/common/lib/libc/arch/arm/atomic/atomic_and_64.S Sat Aug 10 18:39:25 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_and_64.S,v 1.2 2012/09/13 00:36:12 matt Exp $ */ +/* $NetBSD: atomic_and_64.S,v 1.3 2013/08/10 18:39:25 matt Exp $ */ /*- * Copyright (c) 2012 The NetBSD Foundation, Inc. * All rights reserved. @@ -33,15 +33,15 @@ #ifdef _ARM_ARCH_6 ENTRY_NP(_atomic_and_64) - str r4, [sp, #-4]! /* save temporary */ + push {r4} /* save temporary */ #ifndef __ARM_EABI__ mov r3, r2 mov r2, r1 #endif mov r4, r0 /* need r0 for return value */ 1: ldrexd r0, [r4] /* load old value (to be returned) */ - and r2, r0, r2 /* calculate new value */ - and r3, r1, r3 /* calculate new value */ + and r2, r2, r0 /* calculate new value */ + and r3, r3, r1 /* calculate new value */ strexd ip, r2, [r4] /* try to store */ cmp ip, #0 /* succeed? */ bne 1b /* no, try again */ @@ -50,13 +50,13 @@ ENTRY_NP(_atomic_and_64) #else mcr p15, 0, ip, c7, c10, 5 /* data memory barrier */ #endif - ldr r4, [sp], #4 /* restore temporary */ + pop {r4} /* restore temporary */ RET/* return old value */ END(_atomic_and_64) ATOMIC_OP_ALIAS(atomic_and_64,_atomic_and_64) ENTRY_NP(_atomic_and_64_nv) - str r4, [sp, #-4]! /* save temporary */ + push {r4} /* save temporary */ #ifndef __ARM_EABI__ mov r3, r2 mov r2, r1 @@ -73,7 +73,7 @@ ENTRY_NP(_atomic_and_64_nv) #else mcr p15, 0, ip, c7, c10, 5 /* data memory barrier */ #endif - ldr r4, [sp], #4 /* restore temporary */ + pop {r4} /* restore temporary */ RET/* return new value */ END(_atomic_and_64_nv) ATOMIC_OP_ALIAS(atomic_and_64_nv,_atomic_and_64_nv)
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: matt Date: Sat Aug 10 18:39:48 UTC 2013 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_add_64.S Log Message: use push/pop To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/arm/atomic/atomic_add_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.3 src/common/lib/libc/arch/arm/atomic/atomic_add_64.S:1.4 --- src/common/lib/libc/arch/arm/atomic/atomic_add_64.S:1.3 Thu Sep 13 00:36:12 2012 +++ src/common/lib/libc/arch/arm/atomic/atomic_add_64.S Sat Aug 10 18:39:48 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_add_64.S,v 1.3 2012/09/13 00:36:12 matt Exp $ */ +/* $NetBSD: atomic_add_64.S,v 1.4 2013/08/10 18:39:48 matt Exp $ */ /*- * Copyright (c) 2012 The NetBSD Foundation, Inc. * All rights reserved. @@ -33,15 +33,15 @@ #ifdef _ARM_ARCH_6 ENTRY_NP(_atomic_add_64) - str r4, [sp, #-4]! /* save temporary */ + push {r4} /* save temporary */ mov r4, r0 /* need r0 for return value */ #ifndef __ARM_EABI__ mov r3, r2 mov r2, r1 #endif 1: ldrexd r0, [r4] /* load old value (to be returned) */ - adds NLO, LO, NLO /* calculate new value */ - adc NHI, HI, NHI /* calculate new value */ + adds NLO, NLO, LO /* calculate new value */ + adc NHI, NHI, HI /* calculate new value */ strexd ip, r2, [r4] /* try to store */ cmp ip, #0 /* succeed? */ bne 1b /* no, try again */ @@ -50,13 +50,13 @@ ENTRY_NP(_atomic_add_64) #else mcr p15, 0, ip, c7, c10, 5 /* data memory barrier */ #endif - ldr r4, [sp], #4 /* restore temporary */ + pop {r4} /* restore temporary */ RET/* return old value */ END(_atomic_add_64) ATOMIC_OP_ALIAS(atomic_add_64,_atomic_add_64) ENTRY_NP(_atomic_add_64_nv) - str r4, [sp, #-4]! /* save temporary */ + push {r4} /* save temporary */ mov r4, r0 /* need r0 for return value */ #ifndef __ARM_EABI__ mov r3, r2 @@ -73,7 +73,7 @@ ENTRY_NP(_atomic_add_64_nv) #else mcr p15, 0, ip, c7, c10, 5 /* data memory barrier */ #endif - ldr r4, [sp], #4 /* restore temporary */ + pop {r4} /* restore temporary */ RET/* return new value */ END(_atomic_add_64_nv) ATOMIC_OP_ALIAS(atomic_add_64_nv,_atomic_add_64_nv)
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: matt Date: Sat Aug 10 18:40:19 UTC 2013 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_dec_64.S Log Message: Use subs/sbc Use push/pop Don't adjust return for atomic_dec_64 since it's void and returns nothing To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/arm/atomic/atomic_dec_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_dec_64.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_dec_64.S:1.2 src/common/lib/libc/arch/arm/atomic/atomic_dec_64.S:1.3 --- src/common/lib/libc/arch/arm/atomic/atomic_dec_64.S:1.2 Thu Sep 13 00:36:12 2012 +++ src/common/lib/libc/arch/arm/atomic/atomic_dec_64.S Sat Aug 10 18:40:19 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_dec_64.S,v 1.2 2012/09/13 00:36:12 matt Exp $ */ +/* $NetBSD: atomic_dec_64.S,v 1.3 2013/08/10 18:40:19 matt Exp $ */ /*- * Copyright (c) 2012 The NetBSD Foundation, Inc. * All rights reserved. @@ -33,33 +33,29 @@ #ifdef _ARM_ARCH_6 ENTRY_NP(_atomic_dec_64) - mvn r2, #0 mov r3, r0 /* need r0 for return value */ 1: ldrexd r0, [r3] /* load old value (return value) */ - adds LO, LO, r2 /* calculate new value */ - adc HI, HI, r2 /* calculate new value */ - strexd ip, r0, [r3] /* try to store */ - cmp ip, #0 /* succeed? */ + subs LO, LO, #1 /* calculate new value */ + sbc HI, HI, #0 /* calculate new value */ + strexd r2, r0, [r3] /* try to store */ + cmp r2, #0 /* succeed? */ bne 1b /* no, try again? */ #ifdef _ARM_ARCH_7 dmb #else mcr p15, 0, ip, c7, c10, 5 /* data memory barrier */ #endif - adds LO, LO, #1 - adc HI, HI, #0 - RET/* return old value */ + RET END(_atomic_dec_64) ATOMIC_OP_ALIAS(atomic_dec_64,_atomic_dec_64) ENTRY_NP(_atomic_dec_64_nv) - mvn r2, #0 mov r3, r0 /* need r0 for return value */ 1: ldrexd r0, [r3] /* load old value */ - adds LO, LO, r2 /* calculate new value */ - adc HI, HI, r2 /* calculate new value */ - strexd ip, r0, [r3] /* try to store */ - cmp ip, #0 /* succeed? */ + subs LO, LO, #1 /* calculate new value */ + sbc HI, HI, #0 /* calculate new value */ + strexd r2, r0, [r3] /* try to store */ + cmp r2, #0 /* succeed? */ bne 1b /* no, try again? */ #ifdef _ARM_ARCH_7 dmb
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: matt Date: Sat Aug 10 18:45:12 UTC 2013 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_dec_64.S atomic_inc_64.S Log Message: Use r2 instead of ip To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/arm/atomic/atomic_dec_64.S cvs rdiff -u -r1.5 -r1.6 src/common/lib/libc/arch/arm/atomic/atomic_inc_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_dec_64.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_dec_64.S:1.3 src/common/lib/libc/arch/arm/atomic/atomic_dec_64.S:1.4 --- src/common/lib/libc/arch/arm/atomic/atomic_dec_64.S:1.3 Sat Aug 10 18:40:19 2013 +++ src/common/lib/libc/arch/arm/atomic/atomic_dec_64.S Sat Aug 10 18:45:12 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_dec_64.S,v 1.3 2013/08/10 18:40:19 matt Exp $ */ +/* $NetBSD: atomic_dec_64.S,v 1.4 2013/08/10 18:45:12 matt Exp $ */ /*- * Copyright (c) 2012 The NetBSD Foundation, Inc. * All rights reserved. @@ -43,7 +43,7 @@ ENTRY_NP(_atomic_dec_64) #ifdef _ARM_ARCH_7 dmb #else - mcr p15, 0, ip, c7, c10, 5 /* data memory barrier */ + mcr p15, 0, r2, c7, c10, 5 /* data memory barrier */ #endif RET END(_atomic_dec_64) @@ -60,7 +60,7 @@ ENTRY_NP(_atomic_dec_64_nv) #ifdef _ARM_ARCH_7 dmb #else - mcr p15, 0, ip, c7, c10, 5 /* data memory barrier */ + mcr p15, 0, r2, c7, c10, 5 /* data memory barrier */ #endif RET/* return new value */ END(_atomic_dec_64_nv) Index: src/common/lib/libc/arch/arm/atomic/atomic_inc_64.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_inc_64.S:1.5 src/common/lib/libc/arch/arm/atomic/atomic_inc_64.S:1.6 --- src/common/lib/libc/arch/arm/atomic/atomic_inc_64.S:1.5 Sat Aug 10 18:32:06 2013 +++ src/common/lib/libc/arch/arm/atomic/atomic_inc_64.S Sat Aug 10 18:45:12 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_inc_64.S,v 1.5 2013/08/10 18:32:06 matt Exp $ */ +/* $NetBSD: atomic_inc_64.S,v 1.6 2013/08/10 18:45:12 matt Exp $ */ /*- * Copyright (c) 2012 The NetBSD Foundation, Inc. * All rights reserved. @@ -37,13 +37,13 @@ ENTRY_NP(_atomic_inc_64) 1: ldrexd r0, [r3] /* load old value (return value) */ adds LO, LO, #1 /* calculate new value */ adc HI, HI, #0 /* zero means we carried */ - strexd ip, r0, [r3] /* try to store */ - cmp ip, #0 /* succeed? */ + strexd r2, r0, [r3] /* try to store */ + cmp r2, #0 /* succeed? */ bne 1b /* no, try again? */ #ifdef _ARM_ARCH_7 dmb #else - mcr p15, 0, ip, c7, c10, 5 /* data memory barrier */ + mcr p15, 0, r2, c7, c10, 5 /* data memory barrier */ #endif RET END(_atomic_inc_64) @@ -54,13 +54,13 @@ ENTRY_NP(_atomic_inc_64_nv) 1: ldrexd r0, [r3] /* load old value */ adds LO, LO, #1 /* calculate new value (return value) */ adc HI, HI, #0 /* fold carry into high */ - strexd ip, r0, [r3] /* try to store */ - cmp ip, #0 /* succeed? */ + strexd r2, r0, [r3] /* try to store */ + cmp r2, #0 /* succeed? */ bne 1b /* no, try again? */ #ifdef _ARM_ARCH_7 dmb #else - mcr p15, 0, ip, c7, c10, 5 /* data memory barrier */ + mcr p15, 0, r2, c7, c10, 5 /* data memory barrier */ #endif RET/* return new value */ END(_atomic_inc_64_nv)
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: matt Date: Sat Aug 10 19:02:22 UTC 2013 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_add_64.S atomic_and_64.S atomic_or_64.S Log Message: Never modify NLO/NHI (r2,r3) only LO/HI (r0,r1) so subsequent loops will work. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/arm/atomic/atomic_add_64.S cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/arm/atomic/atomic_and_64.S \ src/common/lib/libc/arch/arm/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/arm/atomic/atomic_add_64.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_add_64.S:1.4 src/common/lib/libc/arch/arm/atomic/atomic_add_64.S:1.5 --- src/common/lib/libc/arch/arm/atomic/atomic_add_64.S:1.4 Sat Aug 10 18:39:48 2013 +++ src/common/lib/libc/arch/arm/atomic/atomic_add_64.S Sat Aug 10 19:02:22 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_add_64.S,v 1.4 2013/08/10 18:39:48 matt Exp $ */ +/* $NetBSD: atomic_add_64.S,v 1.5 2013/08/10 19:02:22 matt Exp $ */ /*- * Copyright (c) 2012 The NetBSD Foundation, Inc. * All rights reserved. @@ -40,9 +40,9 @@ ENTRY_NP(_atomic_add_64) mov r2, r1 #endif 1: ldrexd r0, [r4] /* load old value (to be returned) */ - adds NLO, NLO, LO /* calculate new value */ - adc NHI, NHI, HI /* calculate new value */ - strexd ip, r2, [r4] /* try to store */ + adds LO, LO, NLO /* calculate new value */ + adc HI, HI, NHI /* calculate new value */ + strexd ip, r0, [r4] /* try to store */ cmp ip, #0 /* succeed? */ bne 1b /* no, try again */ #ifdef _ARM_ARCH_7 @@ -51,7 +51,7 @@ ENTRY_NP(_atomic_add_64) mcr p15, 0, ip, c7, c10, 5 /* data memory barrier */ #endif pop {r4} /* restore temporary */ - RET/* return old value */ + RET END(_atomic_add_64) ATOMIC_OP_ALIAS(atomic_add_64,_atomic_add_64) 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.3 src/common/lib/libc/arch/arm/atomic/atomic_and_64.S:1.4 --- src/common/lib/libc/arch/arm/atomic/atomic_and_64.S:1.3 Sat Aug 10 18:39:25 2013 +++ src/common/lib/libc/arch/arm/atomic/atomic_and_64.S Sat Aug 10 19:02:22 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_and_64.S,v 1.3 2013/08/10 18:39:25 matt Exp $ */ +/* $NetBSD: atomic_and_64.S,v 1.4 2013/08/10 19:02:22 matt Exp $ */ /*- * Copyright (c) 2012 The NetBSD Foundation, Inc. * All rights reserved. @@ -40,9 +40,9 @@ ENTRY_NP(_atomic_and_64) #endif mov r4, r0 /* need r0 for return value */ 1: ldrexd r0, [r4] /* load old value (to be returned) */ - and r2, r2, r0 /* calculate new value */ - and r3, r3, r1 /* calculate new value */ - strexd ip, r2, [r4] /* try to store */ + and r0, r0, r2 /* calculate new value */ + and r1, r1, r3 /* calculate new value */ + strexd ip, r0, [r4] /* try to store */ cmp ip, #0 /* succeed? */ bne 1b /* no, try again */ #ifdef _ARM_ARCH_7 @@ -51,7 +51,7 @@ ENTRY_NP(_atomic_and_64) mcr p15, 0, ip, c7, c10, 5 /* data memory barrier */ #endif pop {r4} /* restore temporary */ - RET/* return old value */ + RET END(_atomic_and_64) ATOMIC_OP_ALIAS(atomic_and_64,_atomic_and_64) 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.3 src/common/lib/libc/arch/arm/atomic/atomic_or_64.S:1.4 --- src/common/lib/libc/arch/arm/atomic/atomic_or_64.S:1.3 Sat Aug 10 18:39:07 2013 +++ src/common/lib/libc/arch/arm/atomic/atomic_or_64.S Sat Aug 10 19:02:22 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_or_64.S,v 1.3 2013/08/10 18:39:07 matt Exp $ */ +/* $NetBSD: atomic_or_64.S,v 1.4 2013/08/10 19:02:22 matt Exp $ */ /*- * Copyright (c) 2012 The NetBSD Foundation, Inc. * All rights reserved. @@ -40,9 +40,9 @@ ENTRY_NP(_atomic_or_64) #endif mov r4, r0 /* need r0 for return value */ 1: ldrexd r0, [r4] /* load old value (to be returned) */ - orr r2, r2, r0 /* calculate new value */ - orr r3, r3, r1 /* calculate new value */ - strexd ip, r2, [r4] /* try to store */ + orr r0, r0, r2 /* calculate new value */ + orr r1, r1, r3 /* calculate new value */ + strexd ip, r0, [r4] /* try to store */ cmp ip, #0 /* succeed? */ bne 1b /* no, try again */ #ifdef _ARM_ARCH_7 @@ -51,7 +51,7 @@ ENTRY_NP(_atomic_or_64) mcr p15, 0, ip, c7, c10, 5 /* data memory barrier */ #endif pop {r4} /* restore temporary */ - RET/* return old value */ + RET END(_atomic_or_64) ATOMIC_OP_ALIAS(atomic_or_64,_atomic_or_64)
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: matt Date: Sat Aug 10 19:59:21 UTC 2013 Modified Files: src/common/lib/libc/arch/arm/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_cas_8.S atomic_cas_up.S atomic_dec_32.S atomic_dec_64.S atomic_inc_32.S atomic_inc_64.S atomic_or_32.S atomic_or_64.S atomic_swap.S atomic_swap_64.S Log Message: Make these under Thumb2 To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 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_dec_32.S \ src/common/lib/libc/arch/arm/atomic/atomic_or_32.S \ src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S cvs rdiff -u -r1.5 -r1.6 src/common/lib/libc/arch/arm/atomic/atomic_add_64.S \ 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_and_64.S \ src/common/lib/libc/arch/arm/atomic/atomic_cas_32.S \ 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_or_64.S cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S \ src/common/lib/libc/arch/arm/atomic/atomic_cas_up.S cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/arm/atomic/atomic_inc_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_32.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_add_32.S:1.3 src/common/lib/libc/arch/arm/atomic/atomic_add_32.S:1.4 --- src/common/lib/libc/arch/arm/atomic/atomic_add_32.S:1.3 Fri Aug 31 23:41:52 2012 +++ src/common/lib/libc/arch/arm/atomic/atomic_add_32.S Sat Aug 10 19:59:21 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_add_32.S,v 1.3 2012/08/31 23:41:52 matt Exp $ */ +/* $NetBSD: atomic_add_32.S,v 1.4 2013/08/10 19:59:21 matt Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -34,19 +34,19 @@ #ifdef _ARM_ARCH_6 ENTRY_NP(_atomic_add_32) - mov r3, r0 /* need r0 for return value */ -1: ldrex r0, [r3] /* load old value (to be returned) */ - add r2, r0, r1 /* calculate new value */ - strex ip, r2, [r3] /* try to store */ - cmp ip, #0 /* succeed? */ +1: ldrex r3, [r0] /* load old value */ + add r3, r3, r1 /* calculate new value */ + strex r2, r3, [r0] /* try to store */ + cmp r2, #0 /* succeed? */ bne 1b /* no, try again */ #ifdef _ARM_ARCH_7 dmb #else - mcr p15, 0, ip, c7, c10, 5 /* data memory barrier */ + mcr p15, 0, r2, c7, c10, 5 /* data memory barrier */ #endif RET/* return old value */ - END(_atomic_add_32) +END(_atomic_add_32) + ATOMIC_OP_ALIAS(atomic_add_32,_atomic_add_32) ATOMIC_OP_ALIAS(atomic_add_int,_atomic_add_32) ATOMIC_OP_ALIAS(atomic_add_long,_atomic_add_32) @@ -56,16 +56,16 @@ STRONG_ALIAS(_atomic_add_long,_atomic_ad STRONG_ALIAS(_atomic_add_ptr,_atomic_add_32) ENTRY_NP(_atomic_add_32_nv) - mov r3, r0 /* need r0 for return value */ -1: ldrex r0, [r3] /* load old value */ + mov ip, r0 /* need r0 for return value */ +1: ldrex r0, [ip] /* load old value */ add r0, r0, r1 /* calculate new value (return value) */ - strex r2, r0, [r3] /* try to store */ + strex r2, r0, [ip] /* try to store */ cmp r2, #0 /* succeed? */ bne 1b /* no, try again? */ #ifdef _ARM_ARCH_7 dmb #else - mcr p15, 0, ip, c7, c10, 5 /* data memory barrier */ + mcr p15, 0, r2, c7, c10, 5 /* data memory barrier */ #endif RET/* return new value */ END(_atomic_add_32_nv) Index: src/common/lib/libc/arch/arm/atomic/atomic_and_32.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_and_32.S:1.3 src/common/lib/libc/arch/arm/atomic/atomic_and_32.S:1.4 --- src/common/lib/libc/arch/arm/atomic/atomic_and_32.S:1.3 Fri Aug 31 23:41:52 2012 +++ src/common/lib/libc/arch/arm/atomic/atomic_and_32.S Sat Aug 10 19:59:21 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_and_32.S,v 1.3 2012/08/31 23:41:52 matt Exp $ */ +/* $NetBSD: atomic_and_32.S,v 1.4 2013/08/10 19:59:21 matt Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -34,19 +34,19 @@ #ifdef _ARM_ARCH_6 ENTRY_NP(_atomic_and_32) - mov r3, r0 /* need r0 for return value */ -1: ldrex r0, [r3] /* load old value (to be returned) */ - and r2, r0, r1 /* calculate new value */ - strex ip, r2, [r3] /* try to store */ - cmp ip, #0 /* succeed? */ +1: ldrex r3, [r0] /* load old value (to be returned) */ + and r3, r3, r1 /* calculate new value */ + strex r2, r3, [r0] /* try to store */ + cmp r2, #0 /* succeed? */ bne 1b /* no, try again */ #ifdef _ARM_ARCH_7 dmb #else - mcr p15, 0, ip, c7, c10, 5 /* data memory barrier */ + mcr p15, 0, r2, c7, c10, 5 /* data
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: matt Date: Sun Aug 11 04:41:17 UTC 2013 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_add_32.S atomic_add_64.S atomic_and_32.S atomic_and_64.S atomic_dec_32.S atomic_dec_64.S atomic_inc_32.S atomic_inc_64.S atomic_or_32.S atomic_or_64.S atomic_swap.S Log Message: Use foo{s} since it reduces the ifdefs for thumb To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 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_dec_32.S \ src/common/lib/libc/arch/arm/atomic/atomic_or_32.S cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/arm/atomic/atomic_add_64.S \ src/common/lib/libc/arch/arm/atomic/atomic_swap.S cvs rdiff -u -r1.5 -r1.6 src/common/lib/libc/arch/arm/atomic/atomic_and_64.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_or_64.S cvs rdiff -u -r1.7 -r1.8 src/common/lib/libc/arch/arm/atomic/atomic_inc_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_32.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_add_32.S:1.4 src/common/lib/libc/arch/arm/atomic/atomic_add_32.S:1.5 --- src/common/lib/libc/arch/arm/atomic/atomic_add_32.S:1.4 Sat Aug 10 19:59:21 2013 +++ src/common/lib/libc/arch/arm/atomic/atomic_add_32.S Sun Aug 11 04:41:17 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_add_32.S,v 1.4 2013/08/10 19:59:21 matt Exp $ */ +/* $NetBSD: atomic_add_32.S,v 1.5 2013/08/11 04:41:17 matt Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -35,7 +35,7 @@ ENTRY_NP(_atomic_add_32) 1: ldrex r3, [r0] /* load old value */ - add r3, r3, r1 /* calculate new value */ + adds r3, r3, r1 /* calculate new value */ strex r2, r3, [r0] /* try to store */ cmp r2, #0 /* succeed? */ bne 1b /* no, try again */ @@ -58,7 +58,7 @@ STRONG_ALIAS(_atomic_add_ptr,_atomic_add ENTRY_NP(_atomic_add_32_nv) mov ip, r0 /* need r0 for return value */ 1: ldrex r0, [ip] /* load old value */ - add r0, r0, r1 /* calculate new value (return value) */ + adds r0, r0, r1 /* calculate new value (return 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_and_32.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_and_32.S:1.4 src/common/lib/libc/arch/arm/atomic/atomic_and_32.S:1.5 --- src/common/lib/libc/arch/arm/atomic/atomic_and_32.S:1.4 Sat Aug 10 19:59:21 2013 +++ src/common/lib/libc/arch/arm/atomic/atomic_and_32.S Sun Aug 11 04:41:17 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_and_32.S,v 1.4 2013/08/10 19:59:21 matt Exp $ */ +/* $NetBSD: atomic_and_32.S,v 1.5 2013/08/11 04:41:17 matt Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -35,7 +35,7 @@ ENTRY_NP(_atomic_and_32) 1: ldrex r3, [r0] /* load old value (to be returned) */ - and r3, r3, r1 /* calculate new value */ + ands r3, r3, r1 /* calculate new value */ strex r2, r3, [r0] /* try to store */ cmp r2, #0 /* succeed? */ bne 1b /* no, try again */ @@ -54,10 +54,10 @@ STRONG_ALIAS(_atomic_and_uint,_atomic_an STRONG_ALIAS(_atomic_and_ulong,_atomic_and_32) ENTRY_NP(_atomic_and_32_nv) - mov r3, r0 /* need r0 for return value */ -1: ldrex r0, [r3] /* load old value */ - and r0, r0, r1 /* calculate new value (return value) */ - strex r2, r0, [r3] /* try to store */ + mov ip, r0 /* need r0 for return value */ +1: ldrex r0, [ip] /* load old value */ + ands r0, r0, r1 /* calculate new value (return value) */ + strex r2, r0, [ip] /* try to store */ cmp r2, #0 /* succeed? */ bne 1b /* no, try again? */ #ifdef _ARM_ARCH_7 Index: src/common/lib/libc/arch/arm/atomic/atomic_dec_32.S diff -u src/common/lib/libc/arch/arm/atomic/atomic_dec_32.S:1.4 src/common/lib/libc/arch/arm/atomic/atomic_dec_32.S:1.5 --- src/common/lib/libc/arch/arm/atomic/atomic_dec_32.S:1.4 Sat Aug 10 19:59:21 2013 +++ src/common/lib/libc/arch/arm/atomic/atomic_dec_32.S Sun Aug 11 04:41:17 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_dec_32.S,v 1.4 2013/08/10 19:59:21 matt Exp $ */ +/* $NetBSD: atomic_dec_32.S,v 1.5 2013/08/11 04:41:17 matt Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. * All rights reserved. @@ -34,7 +34,7 @@ ENTRY_NP(_atomic_dec_32) 1: ldrex r3, [r0] /* load old value (return value) */ - sub r3, r3, #1 /* calculate new value */ + subs r3, r3, #1 /* calculate new value */ strex r2, r3, [r0] /* try to store */ cmp r2, #0 /* succeed? */ bne 1b /* no, try again? */ @@ -57,7 +57,7 @@ STRONG_ALIAS(_atomic_dec_ptr,_atomic_dec ENTRY_NP(_atomic_dec_32_nv) mov ip, r0 /* need r0 for
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: matt Date: Sat Aug 10 18:28:15 UTC 2013 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_inc_64.S Log Message: Fix add - adds To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/arm/atomic/atomic_inc_64.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/arm/atomic
Module Name:src Committed By: matt Date: Sat Aug 10 18:32:06 UTC 2013 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_inc_64.S Log Message: Don't adjust return of atomic_inc_64 since it's void and doesn't return anything. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/arm/atomic/atomic_inc_64.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/arm/atomic
Module Name:src Committed By: matt Date: Sat Aug 10 18:38:33 UTC 2013 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_swap_64.S Log Message: cmpne - cmp Use push/pop To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 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.
CVS commit: src/common/lib/libc/arch/arm/atomic
Module Name:src Committed By: matt Date: Sat Aug 10 18:39:48 UTC 2013 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_add_64.S Log Message: use push/pop To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/arm/atomic/atomic_add_64.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/arm/atomic
Module Name:src Committed By: matt Date: Sat Aug 10 18:39:07 UTC 2013 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_or_64.S Log Message: use push/pop To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/arm/atomic/atomic_or_64.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/arm/atomic
Module Name:src Committed By: matt Date: Sat Aug 10 18:39:25 UTC 2013 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_and_64.S Log Message: Use push/pop To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/arm/atomic/atomic_and_64.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/arm/atomic
Module Name:src Committed By: matt Date: Sat Aug 10 18:40:19 UTC 2013 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_dec_64.S Log Message: Use subs/sbc Use push/pop Don't adjust return for atomic_dec_64 since it's void and returns nothing To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/arm/atomic/atomic_dec_64.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/arm/atomic
Module Name:src Committed By: matt Date: Sat Aug 10 18:45:12 UTC 2013 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_dec_64.S atomic_inc_64.S Log Message: Use r2 instead of ip To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/arm/atomic/atomic_dec_64.S cvs rdiff -u -r1.5 -r1.6 src/common/lib/libc/arch/arm/atomic/atomic_inc_64.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/arm/atomic
Module Name:src Committed By: matt Date: Sat Aug 10 19:02:22 UTC 2013 Modified Files: src/common/lib/libc/arch/arm/atomic: atomic_add_64.S atomic_and_64.S atomic_or_64.S Log Message: Never modify NLO/NHI (r2,r3) only LO/HI (r0,r1) so subsequent loops will work. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/arm/atomic/atomic_add_64.S cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/arm/atomic/atomic_and_64.S \ src/common/lib/libc/arch/arm/atomic/atomic_or_64.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/arm/atomic
Module Name:src Committed By: matt Date: Sat Aug 10 19:59:21 UTC 2013 Modified Files: src/common/lib/libc/arch/arm/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_cas_8.S atomic_cas_up.S atomic_dec_32.S atomic_dec_64.S atomic_inc_32.S atomic_inc_64.S atomic_or_32.S atomic_or_64.S atomic_swap.S atomic_swap_64.S Log Message: Make these under Thumb2 To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 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_dec_32.S \ src/common/lib/libc/arch/arm/atomic/atomic_or_32.S \ src/common/lib/libc/arch/arm/atomic/atomic_swap_64.S cvs rdiff -u -r1.5 -r1.6 src/common/lib/libc/arch/arm/atomic/atomic_add_64.S \ 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_and_64.S \ src/common/lib/libc/arch/arm/atomic/atomic_cas_32.S \ 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_or_64.S cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S \ src/common/lib/libc/arch/arm/atomic/atomic_cas_up.S cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/arm/atomic/atomic_inc_64.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.