Page MenuHomeFreeBSD

Add LSE-based atomic(9) implementations.
ClosedPublic

Authored by markj on Jan 22 2020, 8:05 PM.
Tags
None
Referenced Files
F150117366: D23324.id67167.diff
Sun, Mar 29, 12:52 PM
Unknown Object (File)
Fri, Mar 27, 9:43 AM
Unknown Object (File)
Fri, Mar 27, 1:03 AM
Unknown Object (File)
Wed, Mar 25, 7:22 AM
Unknown Object (File)
Mon, Mar 23, 6:14 AM
Unknown Object (File)
Tue, Mar 10, 4:58 PM
Unknown Object (File)
Fri, Mar 6, 8:05 PM
Unknown Object (File)
Feb 24 2026, 4:25 AM

Details

Summary

These make use of the cas*, ld* and swp instructions added in ARMv8.1.
Testing shows them to be significantly more performant than LL/SC-based
implementations.

These were mostly written by Ali Saidi. I did atomic_testand*() and
made atomic_(set|clear|add|subtract)_* a bit simpler.

No functional change here since the wrappers still unconditionally
select the _llsc variants.

Submitted by: Ali Saidi <alisaidi@amazon.com> (original version)

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Not Applicable
Unit
Tests Not Applicable