Page MenuHomeFreeBSD

Add LSE-based atomic(9) implementations.
ClosedPublic

Authored by markj on Jan 22 2020, 8:05 PM.
Tags
None
Referenced Files
F154433459: D23324.diff
Tue, Apr 28, 12:54 PM
F154363865: D23324.id67167.diff
Tue, Apr 28, 3:10 AM
Unknown Object (File)
Wed, Apr 22, 11:13 AM
Unknown Object (File)
Tue, Apr 21, 10:32 AM
Unknown Object (File)
Sun, Apr 19, 12:59 PM
Unknown Object (File)
Thu, Apr 9, 11:52 AM
Unknown Object (File)
Thu, Apr 9, 5:57 AM
Unknown Object (File)
Mar 29 2026, 12:52 PM

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

Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 28853
Build 26859: arc lint + arc unit