[PATCH 00/22] Cleanup internal atomic definitions

Adhemerval Zanella adhemerval.zanella@linaro.org
Thu Sep 11 13:49:26 GMT 2025


This patchset is based on previous work by Wilco [1] [2] to move all
targets' C11 atomics and remove the unused and redundant atomic
definitions.

I took a more conservative approach and kept some arch-specific
definitions on some targets:

  * alpha uses a ‘wmb’ for the atomic_write_barrier, and the instruction
    does not map to any C11 memory ordering.  Alpha has a peculiar
    semantic memory, so it's best to keep it.

  * sparc also defines stronger definitions for all barriers.  I am not
    sure why a strong ordering was used, nor do I have a Sparc machine
    readily available to check if replacing it with a C11 barrier would
    be okay, so I will keep it.

  * RISC-V defines optimized atomic_max and atomic_min, which are used in
    some statistical collection on malloc.  It also defines an
    atomic_spin_nop, used on pthread spinlocks and adaptive mutexes.

  * x86 defines an atomic_spin_nop.

[1] https://sourceware.org/pipermail/libc-alpha/2022-July/140817.html
[2] https://sourceware.org/pipermail/libc-alpha/2022-July/140817.html

Adhemerval Zanella (20):
  aarch64: Remove ununsed atomic macros
  arc: Remove ununsed atomic macros
  csky: Remove ununsed atomic macros
  mips: Remove ununsed atomic macros
  or1k: Remove ununsed atomic macros
  s390: Remove ununsed atomic macros
  sparc: Remove ununsed atomic macros
  x86: Remove ununsed atomic macros
  arm: Consolidade atomic-machine.h and Remove ununsed atomic macros
  hppa: Move atomic-machine to generic sysdep
  m68k: Consolidade atomic-machine.h and Remove ununsed atomic macros
  loongarch: Consolidate atomic-machine.h and remove ununsed atomic
    macros
  powerpc: Consolidate atomic-machine.h
  riscv: Consolidade atomic-machine.h and remove ununsed atomic macros
  sh: Move atomic-machine to generic sysdep
  alpha: Remove USE_ATOMIC_COMPILER_BUILTINS definition
  microblaze: Remove USE_ATOMIC_COMPILER_BUILTINS definition
  atomic: Consolidate atomic_full_barrier implementation
  atomic: Consolidate atomic_read_barrier implementation
  atomic: Consolidate atomic_write_barrier implementation

Wilco Dijkstra (2):
  Define __HAVE_64B_ATOMICS from compiler support
  nptl: Remove ATOMIC_EXCHANGE_USES_CAS usage

 config.h.in                                   |   3 +
 configure                                     |  42 ++++
 configure.ac                                  |  27 +++
 include/atomic.h                              |  19 +-
 nptl/pthread_spin_lock.c                      |  19 +-
 nptl/pthread_spin_trylock.c                   |  49 -----
 sysdeps/aarch64/atomic-machine.h              | 153 ---------------
 sysdeps/alpha/atomic-machine.h                |   8 -
 sysdeps/arc/atomic-machine.h                  |  57 ------
 sysdeps/arm/atomic-machine.h                  | 138 -------------
 sysdeps/csky/atomic-machine.h                 |  67 -------
 sysdeps/generic/atomic-machine.h              |  34 ++--
 sysdeps/generic/malloc-machine.h              |  12 --
 sysdeps/m68k/coldfire/atomic-machine.h        |  28 ---
 sysdeps/m68k/m680x0/m68020/atomic-machine.h   |  22 ---
 sysdeps/microblaze/atomic-machine.h           |  25 ---
 sysdeps/mips/atomic-machine.h                 | 184 ------------------
 sysdeps/mips/sys/asm.h                        |  16 --
 sysdeps/or1k/atomic-machine.h                 |  71 -------
 sysdeps/powerpc/atomic-machine.h              |  40 ----
 sysdeps/powerpc/nptl/pthread_spin_lock.c      |   9 +
 sysdeps/powerpc/nptl/pthread_spin_trylock.c   |   9 +
 sysdeps/powerpc/powerpc32/atomic-machine.h    |  65 -------
 sysdeps/powerpc/powerpc64/atomic-machine.h    |  53 -----
 sysdeps/riscv/atomic-machine.h                |  51 +++++
 sysdeps/s390/atomic-machine.h                 | 133 -------------
 sysdeps/sparc/atomic-machine.h                |  33 ----
 sysdeps/unix/sysv/linux/arm/atomic-machine.h  | 115 -----------
 sysdeps/unix/sysv/linux/hppa/atomic-machine.h |  29 ---
 .../sysv/linux/loongarch/atomic-machine.h     | 147 --------------
 .../sysv/linux/m68k/coldfire/atomic-machine.h |  35 ----
 .../unix/sysv/linux/riscv/atomic-machine.h    | 184 ------------------
 sysdeps/unix/sysv/linux/sh/atomic-machine.h   |  23 ---
 sysdeps/x86/atomic-machine.h                  |  41 ----
 34 files changed, 160 insertions(+), 1781 deletions(-)
 delete mode 100644 sysdeps/aarch64/atomic-machine.h
 delete mode 100644 sysdeps/arc/atomic-machine.h
 delete mode 100644 sysdeps/arm/atomic-machine.h
 delete mode 100644 sysdeps/csky/atomic-machine.h
 delete mode 100644 sysdeps/m68k/coldfire/atomic-machine.h
 delete mode 100644 sysdeps/m68k/m680x0/m68020/atomic-machine.h
 delete mode 100644 sysdeps/microblaze/atomic-machine.h
 delete mode 100644 sysdeps/mips/atomic-machine.h
 delete mode 100644 sysdeps/or1k/atomic-machine.h
 delete mode 100644 sysdeps/powerpc/atomic-machine.h
 delete mode 100644 sysdeps/powerpc/powerpc32/atomic-machine.h
 delete mode 100644 sysdeps/powerpc/powerpc64/atomic-machine.h
 create mode 100644 sysdeps/riscv/atomic-machine.h
 delete mode 100644 sysdeps/s390/atomic-machine.h
 delete mode 100644 sysdeps/unix/sysv/linux/arm/atomic-machine.h
 delete mode 100644 sysdeps/unix/sysv/linux/hppa/atomic-machine.h
 delete mode 100644 sysdeps/unix/sysv/linux/loongarch/atomic-machine.h
 delete mode 100644 sysdeps/unix/sysv/linux/m68k/coldfire/atomic-machine.h
 delete mode 100644 sysdeps/unix/sysv/linux/riscv/atomic-machine.h
 delete mode 100644 sysdeps/unix/sysv/linux/sh/atomic-machine.h

-- 
2.43.0



More information about the Libc-alpha mailing list