Sujet : Re: portable proxy collector test...
De : chris.m.thomasson.1 (at) *nospam* gmail.com (Chris M. Thomasson)
Groupes : comp.archDate : 08. Dec 2024, 02:46:53
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <vj2tqc$3dpe0$3@dont-email.me>
References : 1 2 3 4 5
User-Agent : Mozilla Thunderbird
On 12/6/2024 3:08 PM, Scott Lurndal wrote:
jseigh <jseigh_es00@xemaps.com> writes:
On 12/6/24 16:12, Chris M. Thomasson wrote:
On 12/6/2024 11:55 AM, Brett wrote:
Chris M. Thomasson <chris.m.thomasson.1@gmail.com> wrote:
I am wondering if anybody can try to compile and run this C++11 code of
mine for a portable word-based proxy collector, a sort of poor mans RCU,
on an ARM based system? I don't have access to one. I am interested in
the resulting output.
>
https://godbolt.org
>
https://pastebin.com/raw/CYZ78gVj
(raw text link, no ads... :^)
[...]
>
It seems that all of the atomics are LDREX/STREX wrt fetch_add/sub .
Even with relaxed memory order. Are the LDREX/STREX similar to the LOCK
prefix on an x86/64?
>
https://godbolt.org/z/EPGYWve71
>
It has loops for this in the ASM code. Adding a loop in there can change
things from wait-free to lock-free. Humm...
>
Which compiler did you choose. armv8? Try ARM64.
GCC has specific options to specify which version of the
armv8 architecture to use. The LSE (Large System Extension)
was optional in ARMv8.1 and was made mandatory in later
revisions. That's the extension that includes the
atomic ops.
The compiler will only generate them if the target arch
is set to an appropriate architecture revision.
use -march=armv8.1-a
Thank you!