guest_dinkumware_atomics called one or two sizes of each typed _Atomic_
function. It now also runs the other sizes: store 2 and 4, load 1,
exchange 1 and 2, strong compare-exchange 1, 4 and 8 and weak 1 and 2
(a failure writes the observed value back, then a success swaps), fetch_sub
1 and 8, fetch_and 1, 2 and 8, fetch_or 2, 4 and 8, fetch_xor 1, 2 and 4
(each returns the previous value, with wraparound), and is_lock_free 1, 2
and 8.
Export __atomic_load, store, exchange, compare_exchange and fetch_add,
fetch_sub, fetch_and, fetch_or and fetch_xor for 1, 2, 4 and 8 bytes, which
libSceLibcInternal provides for compiler-emitted atomic library calls.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RbLgECLQ2bpDM7oe2urGZK
The 1-, 2- and 8-byte loads, stores, exchanges, compare-exchanges and fetch
operations, _Atomic_is_lock_free_N, the flag and fence functions and the
lock-based generic _Atomic_copy, _Atomic_exchange and _Atomic_compare_exchange_*,
matching the libc.prx bundled with PPSA08427 including its handling of
invalid memory orders.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01Q8tinbP1MUpUaDsbNWnGnu