Files
James Russell 71230f918f Add module READMEs, .gitignore, and remove Bin/ from tracking
Add README.md for each library module documenting API, platform
backends, and usage. Add .gitignore for build artifacts. Remove
pre-built binaries from version control.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 00:27:55 -05:00
..
2026-04-03 00:22:39 -05:00
2026-04-03 00:22:39 -05:00
2026-04-03 00:22:39 -05:00
2026-04-03 00:22:39 -05:00
2026-04-03 00:22:39 -05:00
2026-04-03 00:22:39 -05:00
2026-04-03 00:22:39 -05:00
2026-04-03 00:22:39 -05:00
2026-04-03 00:22:39 -05:00
2026-04-03 00:22:39 -05:00
2026-04-03 00:22:39 -05:00
2026-04-03 00:22:39 -05:00
2026-04-03 00:22:39 -05:00
2026-04-03 00:22:39 -05:00

libsst-atomic

Cross-platform atomic operations implemented in hand-written assembly for lock-free programming.

API

All functions operate on volatile int* or volatile void**:

  • Add / AddPtr -- atomic add (with optional return of new value)
  • And / Or / Xor / Not -- atomic bitwise ops (with optional return)
  • Exchange / ExchangePtr -- swap value, return old
  • ExchangeAdd / ExchangeAddPtr -- add, return old value
  • CAS / CASPtr -- compare-and-swap, return old value
  • LoadAcquire / LoadAcquirePtr -- load with acquire semantics
  • StoreRelease / StoreReleasePtr -- store with release semantics

Architecture support

Each backend is a standalone .asm file:

File Architecture ABI
SST_Atomic_x86.asm x86 (32-bit) cdecl
SST_Atomic_x86-64.asm x86-64 System V
SST_Atomic_x86-64-win64.asm x86-64 Microsoft x64
SST_Atomic_arm.asm ARMv6+ ARM EABI
SST_Atomic_ia64.asm Itanium IA-64
SST_Atomic_mips.asm MIPS32R2+ o32
SST_Atomic_mips64.asm MIPS64R2+ n64
SST_Atomic_ppc.asm PowerPC 32 SysV
SST_Atomic_sparc.asm SPARCv9 32 SPARC
SST_Atomic_sparc64.asm SPARCv9 64 SPARC