The NetBSD Project

CVS log for src/common/lib/libc/arch/arm/atomic/membar_ops.S

[BACK] Up to [cvs.NetBSD.org] / src / common / lib / libc / arch / arm / atomic

Request diff between arbitrary revisions


Default branch: MAIN


Revision 1.10 / (download) - annotate - [select for diffs], Sat Apr 9 23:32:51 2022 UTC (23 months, 2 weeks ago) by riastradh
Branch: MAIN
CVS Tags: thorpej-ifq-base, thorpej-ifq, thorpej-altq-separation-base, thorpej-altq-separation, netbsd-10-base, netbsd-10-0-RELEASE, netbsd-10-0-RC6, netbsd-10-0-RC5, netbsd-10-0-RC4, netbsd-10-0-RC3, netbsd-10-0-RC2, netbsd-10-0-RC1, netbsd-10, HEAD
Changes since 1.9: +7 -3 lines
Diff to previous 1.9 (colored) to selected 1.2.2.2 (colored)

Introduce membar_acquire/release.  Deprecate membar_enter/exit.

The names membar_enter/exit were unclear, and the documentation of
membar_enter has disagreed with the implementations on sparc,
powerpc, and even x86(!) for the entire time it has been in NetBSD.

The terms `acquire' and `release' are ubiquitous in the literature
today, and have been adopted in the C and C++ standards to mean
load-before-load/store and load/store-before-store, respectively,
which are exactly the orderings required by acquiring and releasing a
mutex, as well as other useful applications like decrementing a
reference count and then freeing the underlying object if it went to
zero.

Originally I proposed changing one word in the documentation for
membar_enter to make it load-before-load/store instead of
store-before-load/store, i.e., to make it an acquire barrier.  I
proposed this on the grounds that

(a) all implementations guarantee load-before-load/store,
(b) some implementations fail to guarantee store-before-load/store,
and
(c) all uses in-tree assume load-before-load/store.

I verified parts (a) and (b) (except, for (a), powerpc didn't even
guarantee load-before-load/store -- isync isn't necessarily enough;
need lwsync in general -- but it _almost_ did, and it certainly didn't
guarantee store-before-load/store).

Part (c) might not be correct, however: under the mistaken assumption
that atomic-r/m/w then membar-w/rw is equivalent to atomic-r/m/w then
membar-r/rw, I only audited the cases of membar_enter that _aren't_
immediately after an atomic-r/m/w.  All of those cases assume
load-before-load/store.  But my assumption was wrong -- there are
cases of atomic-r/m/w then membar-w/rw that would be broken by
changing to atomic-r/m/w then membar-r/rw:

https://mail-index.netbsd.org/tech-kern/2022/03/29/msg028044.html

Furthermore, the name membar_enter has been adopted in other places
like OpenBSD where it actually does follow the documentation and
guarantee store-before-load/store, even if that order is not useful.
So the name membar_enter currently lives in a bad place where it
means either of two things -- r/rw or w/rw.

With this change, we deprecate membar_enter/exit, introduce
membar_acquire/release as better names for the useful pair (r/rw and
rw/w), and make sure the implementation of membar_enter guarantees
both what was documented _and_ what was implemented, making it an
alias for membar_sync.

While here, rework all of the membar_* definitions and aliases.  The
new logic follows a rule to make it easier to audit:

	membar_X is defined as an alias for membar_Y iff membar_X is
	guaranteed by membar_Y.

The `no stronger than' relation is (the transitive closure of):

- membar_consumer (r/r) is guaranteed by membar_acquire (r/rw)
- membar_producer (w/w) is guaranteed by membar_release (rw/w)
- membar_acquire (r/rw) is guaranteed by membar_sync (rw/rw)
- membar_release (rw/w) is guaranteed by membar_sync (rw/rw)

And, for the deprecated membars:

- membar_enter (whether r/rw, w/rw, or rw/rw) is guaranteed by
  membar_sync (rw/rw)
- membar_exit (rw/w) is guaranteed by membar_release (rw/w)

(membar_exit is identical to membar_release, but the name is
deprecated.)

Finally, while here, annotate some of the instructions with their
semantics.  For powerpc, leave an essay with citations on the
unfortunate but -- as far as I can tell -- necessary decision to use
lwsync, not isync, for membar_acquire and membar_consumer.

Also add membar(3) and atomic(3) man page links.

Revision 1.6.28.2 / (download) - annotate - [select for diffs], Wed Aug 11 17:05:42 2021 UTC (2 years, 7 months ago) by martin
Branch: netbsd-9
CVS Tags: netbsd-9-3-RELEASE
Changes since 1.6.28.1: +5 -15 lines
Diff to previous 1.6.28.1 (colored) to branchpoint 1.6 (colored) next main 1.7 (colored) to selected 1.2.2.2 (colored)

Pull up following revision(s) (requested by skrll in ticket #1330):

	common/lib/libc/arch/arm/atomic/atomic_swap.S: revision 1.18
	common/lib/libc/arch/arm/atomic/atomic_and_16.S: revision 1.5
	common/lib/libc/arch/arm/atomic/atomic_swap.S: revision 1.19
	common/lib/libc/arch/arm/atomic/atomic_xor_64.S: revision 1.6
	common/lib/libc/arch/arm/atomic/atomic_inc_32.S: revision 1.8
	common/lib/libc/arch/arm/atomic/atomic_and_32.S: revision 1.9
	common/lib/libc/arch/arm/atomic/atomic_add_8.S: revision 1.4
	common/lib/libc/arch/arm/atomic/atomic_xor_64.S: revision 1.7
	common/lib/libc/arch/arm/atomic/atomic_inc_32.S: revision 1.9
	common/lib/libc/arch/arm/atomic/atomic_cas_up.S: revision 1.8
	common/lib/libc/arch/arm/atomic/atomic_add_8.S: revision 1.5
	common/lib/libc/arch/arm/atomic/atomic_op_asm.h: revision 1.9
	common/lib/libc/arch/arm/atomic/membar_ops.S: revision 1.8
	common/lib/libc/arch/arm/atomic/membar_ops.S: revision 1.9
	common/lib/libc/arch/arm/atomic/atomic_op_asm.h: revision 1.10
	common/lib/libc/arch/arm/atomic/atomic_and_32.S: revision 1.10
	common/lib/libc/arch/arm/atomic/atomic_cas_16.S: revision 1.3
	common/lib/libc/arch/arm/atomic/sync_fetch_and_and_8.S: revision 1.6
	common/lib/libc/arch/arm/atomic/atomic_xor_32.S: revision 1.4
	common/lib/libc/arch/arm/atomic/atomic_xor_32.S: revision 1.5
	common/lib/libc/arch/arm/atomic/atomic_nand_64.S: revision 1.6
	common/lib/libc/arch/arm/atomic/atomic_xor_16.S: revision 1.4
	common/lib/libc/arch/arm/atomic/atomic_swap_16.S: revision 1.6
	common/lib/libc/arch/arm/atomic/atomic_nand_64.S: revision 1.7
	common/lib/libc/arch/arm/atomic/atomic_cas_32.S: revision 1.8
	common/lib/libc/arch/arm/atomic/atomic_xor_16.S: revision 1.5
	common/lib/libc/arch/arm/atomic/atomic_swap_16.S: revision 1.7
	common/lib/libc/arch/arm/atomic/atomic_add_32.S: revision 1.10
	common/lib/libc/arch/arm/atomic/sync_fetch_and_add_8.S: revision 1.6
	common/lib/libc/arch/arm/atomic/atomic_dec_64.S: revision 1.8
	common/lib/libc/arch/arm/atomic/atomic_add_16.S: revision 1.4
	common/lib/libc/arch/arm/atomic/sync_fetch_and_sub_8.S: revision 1.6
	common/lib/libc/arch/arm/atomic/atomic_xor_8.S: revision 1.4
	common/lib/libc/arch/arm/atomic/atomic_dec_64.S: revision 1.9
	common/lib/libc/arch/arm/atomic/atomic_add_16.S: revision 1.5
	common/lib/libc/arch/arm/atomic/atomic_xor_8.S: revision 1.5
	common/lib/libc/arch/arm/atomic/atomic_or_64.S: revision 1.13
	common/lib/libc/arch/arm/atomic/atomic_add_32.S: revision 1.9
	common/lib/libc/arch/arm/atomic/atomic_or_64.S: revision 1.14
	common/lib/libc/arch/arm/atomic/atomic_or_16.S: revision 1.4
	common/lib/libc/arch/arm/atomic/atomic_or_16.S: revision 1.5
	common/lib/libc/arch/arm/atomic/sync_fetch_and_nand_8.S: revision 1.6
	common/lib/libc/arch/arm/atomic/atomic_nand_16.S: revision 1.4
	common/lib/libc/arch/arm/atomic/atomic_nand_16.S: revision 1.5
	common/lib/libc/arch/arm/atomic/sync_fetch_and_or_8.S: revision 1.6
	common/lib/libc/arch/arm/atomic/atomic_nand_32.S: revision 1.4
	common/lib/libc/arch/arm/atomic/atomic_or_32.S: revision 1.9
	common/lib/libc/arch/arm/atomic/atomic_nand_32.S: revision 1.5
	common/lib/libc/arch/arm/atomic/atomic_cas_8.S: revision 1.9
	common/lib/libc/arch/arm/atomic/atomic_inc_64.S: revision 1.10
	common/lib/libc/arch/arm/atomic/atomic_inc_64.S: revision 1.11
	common/lib/libc/arch/arm/atomic/atomic_cas_64.S: revision 1.12
	common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_8.S: revision 1.5
	common/lib/libc/arch/arm/atomic/atomic_or_8.S: revision 1.4
	common/lib/libc/arch/arm/atomic/atomic_dec_32.S: revision 1.6
	common/lib/libc/arch/arm/atomic/atomic_or_8.S: revision 1.5
	common/lib/libc/arch/arm/atomic/atomic_dec_32.S: revision 1.7
	common/lib/libc/arch/arm/atomic/atomic_sub_64.S: revision 1.4
	common/lib/libc/arch/arm/atomic/atomic_sub_64.S: revision 1.5
	common/lib/libc/arch/arm/atomic/sync_fetch_and_xor_8.S: revision 1.6
	common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_4.S: revision 1.4
	common/lib/libc/arch/arm/atomic/atomic_and_64.S: revision 1.12
	common/lib/libc/arch/arm/atomic/atomic_or_32.S: revision 1.10
	common/lib/libc/arch/arm/atomic/atomic_and_64.S: revision 1.13
	common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_2.S: revision 1.4
	common/lib/libc/arch/arm/atomic/atomic_swap_64.S: revision 1.14
	common/lib/libc/arch/arm/atomic/sync_bool_compare_and_swap_1.S: revision 1.4
	common/lib/libc/arch/arm/atomic/atomic_nand_8.S: revision 1.4
	common/lib/libc/arch/arm/atomic/atomic_and_8.S: revision 1.4
	common/lib/libc/arch/arm/atomic/atomic_add_64.S: revision 1.13
	common/lib/libc/arch/arm/atomic/atomic_nand_8.S: revision 1.5
	common/lib/libc/arch/arm/atomic/atomic_and_8.S: revision 1.5
	common/lib/libc/arch/arm/atomic/atomic_and_16.S: revision 1.4
	common/lib/libc/arch/arm/atomic/atomic_add_64.S: revision 1.14

Give the thumb atomic ops a chance of working

s/ifdef _ARM_ARCH_6/if defined(_ARM_ARCH_6)/ for consistency.  NFCI.

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.

Revision 1.9 / (download) - annotate - [select for diffs], Wed Jul 28 07:32:20 2021 UTC (2 years, 8 months ago) by skrll
Branch: MAIN
Changes since 1.8: +4 -14 lines
Diff to previous 1.8 (colored) to selected 1.2.2.2 (colored)

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.

Revision 1.8 / (download) - annotate - [select for diffs], Sat Jul 10 06:53:40 2021 UTC (2 years, 8 months ago) by skrll
Branch: MAIN
Changes since 1.7: +2 -2 lines
Diff to previous 1.7 (colored) to selected 1.2.2.2 (colored)

s/ifdef _ARM_ARCH_6/if defined(_ARM_ARCH_6)/ for consistency.  NFCI.

Revision 1.6.28.1 / (download) - annotate - [select for diffs], Fri Apr 30 13:54:00 2021 UTC (2 years, 10 months ago) by martin
Branch: netbsd-9
CVS Tags: netbsd-9-2-RELEASE
Changes since 1.6: +4 -4 lines
Diff to previous 1.6 (colored) to selected 1.2.2.2 (colored)

Pull up following revision(s) (requested by skrll in ticket #1261):

	sys/arch/arm/include/lock.h: revision 1.38
	common/lib/libc/arch/arm/atomic/membar_ops.S: revision 1.7
	common/lib/libc/arch/arm/atomic/atomic_swap_16.S: revision 1.5
	common/lib/libc/arch/arm/atomic/atomic_swap_64.S: revision 1.12
	common/lib/libc/arch/arm/atomic/atomic_swap.S: revision 1.17

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 the
inner shareability domain before the lock clear store.

Improve the membar_ops barriers - no need to use dsb and wait for
completion.  Also, we only to act on the inner shareability domain.

Fix the barrier confusion.  From Riastradh - thanks!.

Revision 1.7 / (download) - annotate - [select for diffs], Tue Apr 27 05:40:29 2021 UTC (2 years, 11 months ago) by skrll
Branch: MAIN
CVS Tags: cjep_sun2x-base1, cjep_sun2x-base, cjep_sun2x, cjep_staticlib_x-base1, cjep_staticlib_x-base, cjep_staticlib_x
Changes since 1.6: +4 -4 lines
Diff to previous 1.6 (colored) to selected 1.2.2.2 (colored)

Improve the membar_ops barriers - no need to use dsb and wait for
completion.  Also, we only to act on the inner shareability domain.

Revision 1.6.26.2 / (download) - annotate - [select for diffs], Tue Apr 21 19:37:42 2020 UTC (3 years, 11 months ago) by martin
Branch: phil-wifi
Changes since 1.6.26.1: +0 -0 lines
Diff to previous 1.6.26.1 (colored) to branchpoint 1.6 (colored) next main 1.7 (colored) to selected 1.2.2.2 (colored)

Ooops, restore accidently removed files from merge mishap

Revision 1.6.26.1, Tue Apr 21 18:41:16 2020 UTC (3 years, 11 months ago) by martin
Branch: phil-wifi
Changes since 1.6: +1 -1 lines
FILE REMOVED

Sync with HEAD

Revision 1.3.2.1 / (download) - annotate - [select for diffs], Tue Aug 19 23:45:12 2014 UTC (9 years, 7 months ago) by tls
Branch: tls-maxphys
Changes since 1.3: +6 -3 lines
Diff to previous 1.3 (colored) next main 1.4 (colored) to selected 1.2.2.2 (colored)

Rebase to HEAD as of a few days ago.

Revision 1.2.4.2 / (download) - annotate - [select for diffs], Thu May 22 11:26:28 2014 UTC (9 years, 10 months ago) by yamt
Branch: yamt-pagecache
Changes since 1.2.4.1: +6 -3 lines
Diff to previous 1.2.4.1 (colored) to branchpoint 1.2 (colored) next main 1.3 (colored) to selected 1.2.2.2 (colored)

sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs.  ("Protocol error: too many arguments")

Revision 1.6 / (download) - annotate - [select for diffs], Fri Mar 28 21:32:41 2014 UTC (10 years ago) by skrll
Branch: MAIN
CVS Tags: yamt-pagecache-base9, tls-maxphys-base, tls-maxphys-20171202, tls-earlyentropy-base, tls-earlyentropy, riastradh-xf86-video-intel-2-7-1-pre-2-21-15, prg-localcount2-base3, prg-localcount2-base2, prg-localcount2-base1, prg-localcount2-base, prg-localcount2, phil-wifi-base, phil-wifi-20200421, phil-wifi-20200411, phil-wifi-20200406, phil-wifi-20191119, phil-wifi-20190609, pgoyette-localcount-base, pgoyette-localcount-20170426, pgoyette-localcount-20170320, pgoyette-localcount-20170107, pgoyette-localcount-20161104, pgoyette-localcount-20160806, pgoyette-localcount-20160726, pgoyette-localcount, pgoyette-compat-merge-20190127, pgoyette-compat-base, pgoyette-compat-20190127, pgoyette-compat-20190118, pgoyette-compat-1226, pgoyette-compat-1126, pgoyette-compat-1020, pgoyette-compat-0930, pgoyette-compat-0906, pgoyette-compat-0728, pgoyette-compat-0625, pgoyette-compat-0521, pgoyette-compat-0502, pgoyette-compat-0422, pgoyette-compat-0415, pgoyette-compat-0407, pgoyette-compat-0330, pgoyette-compat-0322, pgoyette-compat-0315, pgoyette-compat, perseant-stdc-iso10646-base, perseant-stdc-iso10646, netbsd-9-base, netbsd-9-1-RELEASE, netbsd-9-0-RELEASE, netbsd-9-0-RC2, netbsd-9-0-RC1, netbsd-8-base, netbsd-8-2-RELEASE, netbsd-8-1-RELEASE, netbsd-8-1-RC1, netbsd-8-0-RELEASE, netbsd-8-0-RC2, netbsd-8-0-RC1, netbsd-8, netbsd-7-nhusb-base-20170116, netbsd-7-nhusb-base, netbsd-7-nhusb, netbsd-7-base, netbsd-7-2-RELEASE, netbsd-7-1-RELEASE, netbsd-7-1-RC2, netbsd-7-1-RC1, netbsd-7-1-2-RELEASE, netbsd-7-1-1-RELEASE, netbsd-7-1, netbsd-7-0-RELEASE, netbsd-7-0-RC3, netbsd-7-0-RC2, netbsd-7-0-RC1, netbsd-7-0-2-RELEASE, netbsd-7-0-1-RELEASE, netbsd-7-0, netbsd-7, matt-nb8-mediatek-base, matt-nb8-mediatek, localcount-20160914, is-mlppp-base, is-mlppp, bouyer-xenpvh-base2, bouyer-xenpvh-base1, bouyer-xenpvh-base, bouyer-xenpvh, bouyer-socketcan-base1, bouyer-socketcan-base, bouyer-socketcan, ad-namecache-base3, ad-namecache-base, ad-namecache
Branch point for: phil-wifi, netbsd-9
Changes since 1.5: +3 -1 lines
Diff to previous 1.5 (colored) to selected 1.2.2.2 (colored)

Ensure SBZ register is zero

Revision 1.5 / (download) - annotate - [select for diffs], Tue Mar 4 16:15:28 2014 UTC (10 years ago) by matt
Branch: MAIN
CVS Tags: riastradh-drm2-base3
Changes since 1.4: +2 -2 lines
Diff to previous 1.4 (colored) to selected 1.2.2.2 (colored)

Don't export __sync* if _KERNEL || _STANDALONE are defined.
(except if _RUMPKERNEL is defined)

Revision 1.4 / (download) - annotate - [select for diffs], Fri Nov 8 22:42:52 2013 UTC (10 years, 4 months ago) by matt
Branch: MAIN
Changes since 1.3: +4 -3 lines
Diff to previous 1.3 (colored) to selected 1.2.2.2 (colored)

Add support for the gcc __sync builtins.
Note that these need earmv6 or later to get the ldrex/strex instructions

Revision 1.2.24.1 / (download) - annotate - [select for diffs], Tue Nov 27 23:42:35 2012 UTC (11 years, 4 months ago) by matt
Branch: matt-nb6-plus
Changes since 1.2: +9 -1 lines
Diff to previous 1.2 (colored) next main 1.3 (colored) to selected 1.2.2.2 (colored)

Pull atomic ops from HEAD.

Revision 1.2.4.1 / (download) - annotate - [select for diffs], Tue Oct 30 18:46:12 2012 UTC (11 years, 5 months ago) by yamt
Branch: yamt-pagecache
CVS Tags: yamt-pagecache-tag8
Changes since 1.2: +9 -1 lines
Diff to previous 1.2 (colored) to selected 1.2.2.2 (colored)

sync with head

Revision 1.3 / (download) - annotate - [select for diffs], Thu Aug 16 16:49:10 2012 UTC (11 years, 7 months ago) by matt
Branch: MAIN
CVS Tags: yamt-pagecache-base8, yamt-pagecache-base7, yamt-pagecache-base6, rmind-smpnet-nbase, rmind-smpnet-base, riastradh-drm2-base2, riastradh-drm2-base1, riastradh-drm2-base, riastradh-drm2, matt-nb6-plus-nbase, matt-nb6-plus-base, khorben-n900, agc-symver-base, agc-symver
Branch point for: tls-maxphys
Changes since 1.2: +9 -1 lines
Diff to previous 1.2 (colored) to selected 1.2.2.2 (colored)

Actually use the assembly version of the atomic function if compiling
for armv6 or armv7 cpus.  Use atomic_cas_ptr instead of _lock_cas so
we pick up the assembly version when it's used.

Revision 1.2.2.2 / (download) - annotate - [selected], Thu Sep 18 04:54:18 2008 UTC (15 years, 6 months ago) by wrstuden
Branch: wrstuden-revivesa
Changes since 1.2.2.1: +57 -0 lines
Diff to previous 1.2.2.1 (colored) to branchpoint 1.2 (colored) next main 1.3 (colored)

Sync with wrstuden-revivesa-base-2.

Revision 1.2.2.1, Sat Aug 16 07:12:40 2008 UTC (15 years, 7 months ago) by wrstuden
Branch: wrstuden-revivesa
Changes since 1.2: +0 -57 lines
FILE REMOVED

file membar_ops.S was added on branch wrstuden-revivesa on 2008-09-18 04:54:18 +0000

Revision 1.2 / (download) - annotate - [select for diffs], Sat Aug 16 07:12:40 2008 UTC (15 years, 7 months ago) by matt
Branch: MAIN
CVS Tags: yamt-pagecache-base5, yamt-pagecache-base4, yamt-pagecache-base3, yamt-pagecache-base2, yamt-pagecache-base, yamt-nfs-mp-base9, yamt-nfs-mp-base8, yamt-nfs-mp-base7, yamt-nfs-mp-base6, yamt-nfs-mp-base5, yamt-nfs-mp-base4, yamt-nfs-mp-base3, yamt-nfs-mp-base11, yamt-nfs-mp-base10, wrstuden-revivesa-base-3, wrstuden-revivesa-base-2, rmind-uvmplock-base, netbsd-6-base, netbsd-6-1-RELEASE, netbsd-6-1-RC4, netbsd-6-1-RC3, netbsd-6-1-RC2, netbsd-6-1-RC1, netbsd-6-1-5-RELEASE, netbsd-6-1-4-RELEASE, netbsd-6-1-3-RELEASE, netbsd-6-1-2-RELEASE, netbsd-6-1-1-RELEASE, netbsd-6-1, netbsd-6-0-RELEASE, netbsd-6-0-RC2, netbsd-6-0-RC1, netbsd-6-0-6-RELEASE, netbsd-6-0-5-RELEASE, netbsd-6-0-4-RELEASE, netbsd-6-0-3-RELEASE, netbsd-6-0-2-RELEASE, netbsd-6-0-1-RELEASE, netbsd-6-0, netbsd-6, netbsd-5-base, netbsd-5-2-RELEASE, netbsd-5-2-RC1, netbsd-5-2-3-RELEASE, netbsd-5-2-2-RELEASE, netbsd-5-2-1-RELEASE, netbsd-5-2, netbsd-5-1-RELEASE, netbsd-5-1-RC4, netbsd-5-1-RC3, netbsd-5-1-RC2, netbsd-5-1-RC1, netbsd-5-1-5-RELEASE, netbsd-5-1-4-RELEASE, netbsd-5-1-3-RELEASE, netbsd-5-1-2-RELEASE, netbsd-5-1-1-RELEASE, netbsd-5-1, netbsd-5-0-RELEASE, netbsd-5-0-RC4, netbsd-5-0-RC3, netbsd-5-0-RC2, netbsd-5-0-RC1, netbsd-5-0-2-RELEASE, netbsd-5-0-1-RELEASE, netbsd-5-0, netbsd-5, matt-premerge-20091211, matt-nb5-pq3-base, matt-nb5-pq3, matt-nb5-mips64-u2-k2-k4-k7-k8-k9, matt-nb5-mips64-u1-k1-k5, matt-nb5-mips64-premerge-20101231, matt-nb5-mips64-premerge-20091211, matt-nb5-mips64-k15, matt-nb5-mips64, matt-nb4-mips64-k7-u2a-k9b, matt-mips64-premerge-20101231, matt-mips64-base2, jymxensuspend-base, jym-xensuspend-nbase, jym-xensuspend-base, jym-xensuspend, cherry-xenmp-base, cherry-xenmp, bouyer-quota2-nbase, bouyer-quota2-base, bouyer-quota2
Branch point for: yamt-pagecache, wrstuden-revivesa, matt-nb6-plus
Changes since 1.1: +57 -0 lines
Diff to previous 1.1 (colored) to selected 1.2.2.2 (colored)

Add assembly versions of atomic ops with ldrex/strex

Revision 1.1.2.1 / (download) - annotate - [select for diffs], Sun Aug 26 05:57:05 2007 UTC (16 years, 7 months ago) by matt
Branch: thorpej-atomic
Changes since 1.1: +61 -0 lines
Diff to previous 1.1 (colored) next main 1.2 (colored) to selected 1.2.2.2 (colored)

Add armv6 variants of atomic ops which use ldrex/strex.
Add atomic_swap (all arm architectures) which uses swp and swpb.
Add membar_ops which uses armv6 data {sync, memory} barrier.
XXX let thorpej figure out the Makefile magic.

Revision 1.1, Sun Aug 26 05:57:05 2007 UTC (16 years, 7 months ago) by matt
Branch: MAIN
CVS Tags: yamt-x86pmap-base4, yamt-x86pmap-base3, yamt-x86pmap-base2, yamt-x86pmap-base, yamt-pf42-base4, yamt-pf42-base3, yamt-pf42-base2, yamt-pf42-base, yamt-pf42, yamt-nfs-mp-base2, yamt-nfs-mp-base, yamt-lazymbuf-base15, yamt-lazymbuf-base14, yamt-kmem-base3, yamt-kmem-base2, yamt-kmem-base, reinoud-bufcleanup-nbase, reinoud-bufcleanup-base, keiichi-mipv6-base, keiichi-mipv6, hpcarm-cleanup-nbase, hpcarm-cleanup-base, cube-autoconf-base, cube-autoconf
Branch point for: thorpej-atomic
FILE REMOVED

file membar_ops.S was initially added on branch thorpej-atomic.

This form allows you to request diff's between any two revisions of a file. You may select a symbolic revision name using the selection box or you may type in a numeric name using the type-in text box.




CVSweb <webmaster@jp.NetBSD.org>