Index: common/lib/libc/arch/hppa/atomic/Makefile.inc =================================================================== RCS file: /cvsroot/src/common/lib/libc/arch/hppa/atomic/Makefile.inc,v retrieving revision 1.16 diff -u -p -r1.16 Makefile.inc --- common/lib/libc/arch/hppa/atomic/Makefile.inc 29 Oct 2023 08:04:18 -0000 1.16 +++ common/lib/libc/arch/hppa/atomic/Makefile.inc 5 Jan 2026 20:23:28 -0000 @@ -18,26 +18,37 @@ SRCS+= atomic_add_32_cas.c atomic_add_32 . if (${LIB} == "c" || ${LIB} == "pthread") SRCS+= atomic_init_testset.c -CPPFLAGS+= -D__HAVE_ATOMIC_CAS_64_UP SRCS+= atomic_cas_up.S CPPFLAGS+= -D__HAVE_ASM_ATOMIC_CAS_UP CPPFLAGS+= -D__HAVE_ASM_ATOMIC_CAS_16_UP CPPFLAGS+= -D__HAVE_ASM_ATOMIC_CAS_8_UP +CPPFLAGS+= -D__HAVE_ATOMIC_CAS_64_UP +CPPFLAGS+= -D__HAVE_ASM_ATOMIC_CAS_64_UP . endif .if defined(LIB) && ${LIB} == "c" -SRCS+= atomic_xor_32_cas.c atomic_xor_16_cas.c atomic_xor_8_cas.c \ - atomic_sub_32_cas.c atomic_sub_16_cas.c atomic_sub_8_cas.c \ - atomic_nand_32_cas.c atomic_nand_16_cas.c atomic_nand_8_cas.c \ - atomic_or_16_cas.c atomic_or_8_cas.c \ - atomic_and_16_cas.c atomic_and_8_cas.c \ - atomic_and_16_nv_cas.c atomic_and_8_nv_cas.c \ - atomic_add_16_cas.c atomic_add_8_cas.c \ - atomic_swap_16_cas.c atomic_swap_8_cas.c \ - atomic_cas_32_cas.c atomic_cas_16_cas.c atomic_cas_8_cas.c \ +SRCS+= atomic_xor_64_cas.c atomic_xor_32_cas.c atomic_xor_16_cas.c atomic_xor_8_cas.c \ + atomic_sub_64_cas.c atomic_sub_32_cas.c atomic_sub_16_cas.c atomic_sub_8_cas.c \ + atomic_nand_64_cas.c atomic_nand_32_cas.c atomic_nand_16_cas.c atomic_nand_8_cas.c \ + atomic_or_64_cas.c atomic_or_16_cas.c atomic_or_8_cas.c \ + atomic_or_64_nv_cas.c \ + atomic_and_64_cas.c atomic_and_16_cas.c atomic_and_8_cas.c \ + atomic_and_64_nv_cas.c atomic_and_16_nv_cas.c atomic_and_8_nv_cas.c \ + atomic_add_64_cas.c atomic_add_16_cas.c atomic_add_8_cas.c \ + atomic_add_64_nv_cas.c \ + atomic_swap_64_cas.c atomic_swap_16_cas.c atomic_swap_8_cas.c \ + atomic_cas_64_cas.c atomic_cas_32_cas.c atomic_cas_16_cas.c atomic_cas_8_cas.c \ atomic_c11_compare_exchange_cas_32.c \ atomic_c11_compare_exchange_cas_16.c \ atomic_c11_compare_exchange_cas_8.c \ atomic_is_lock_free.c + +# XXXNH here or above? +SRCS+= atomic_add_64_cas.c atomic_add_64_nv_cas.c \ + atomic_and_64_cas.c atomic_and_64_nv_cas.c \ + atomic_dec_64_cas.c atomic_dec_64_nv_cas.c \ + atomic_inc_64_cas.c atomic_inc_64_nv_cas.c \ + atomic_or_64_cas.c atomic_or_64_nv_cas.c + .endif .endif Index: common/lib/libc/arch/hppa/atomic/atomic_cas_up.S =================================================================== RCS file: /cvsroot/src/common/lib/libc/arch/hppa/atomic/atomic_cas_up.S,v retrieving revision 1.4 diff -u -p -r1.4 atomic_cas_up.S --- common/lib/libc/arch/hppa/atomic/atomic_cas_up.S 29 Jan 2014 11:34:25 -0000 1.4 +++ common/lib/libc/arch/hppa/atomic/atomic_cas_up.S 5 Jan 2026 20:23:28 -0000 @@ -42,9 +42,32 @@ RAS_START_ASM_HIDDEN(_atomic_cas) RAS_END_ASM_HIDDEN(_atomic_cas) 1: bv,n %r0(%rp) - EXIT(_atomic_cas_up) +#if defined(__HAVE_ASM_ATOMIC_CAS_64_UP) +ENTRY_NOPROFILE(_atomic_cas_64_up, HPPA_FRAME_SIZE) + .hidden _C_LABEL(_atomic_cas_64_up) + + ldo HPPA_FRAME_ARG(5)(%sp), %arg1 + flddx 0(%arg1), %fr23 // load new + +RAS_START_ASM_HIDDEN(_atomic_cas_64) + fldd 0(%arg0), %fr22 // load *ptr + fstd %fr22,-16(%sp) // store to tmp + + ldw -16(%sp),%ret0 // load to ret0 + ldw -12(%sp),%ret1 // ... and ret1 + + comb,<>,n %arg2, %ret0, 1f + comb,<>,n %arg3, %ret1, 1f + + fstd %fr23, 0(%arg0) // *ptr = new +RAS_END_ASM_HIDDEN(_atomic_cas_64) +1: + bv,n %r0(%rp) +EXIT(_atomic_cas_64_up) +#endif /* __HAVE_ASM_ATOMIC_64_UP */ + LEAF_ENTRY_NOPROFILE(_atomic_cas_16_up) .hidden _C_LABEL(_atomic_cas_16_up) Index: common/lib/libc/atomic/atomic_cas_64_cas.c =================================================================== RCS file: /cvsroot/src/common/lib/libc/atomic/atomic_cas_64_cas.c,v retrieving revision 1.2 diff -u -p -r1.2 atomic_cas_64_cas.c --- common/lib/libc/atomic/atomic_cas_64_cas.c 18 Feb 2014 12:23:07 -0000 1.2 +++ common/lib/libc/atomic/atomic_cas_64_cas.c 5 Jan 2026 20:23:28 -0000 @@ -29,6 +29,8 @@ * POSSIBILITY OF SUCH DAMAGE. */ +#include "atomic_op_namespace.h" + #if !defined(_KERNEL) && !defined(_STANDALONE) #include #endif Index: common/lib/libc/atomic/atomic_init_testset.c =================================================================== RCS file: /cvsroot/src/common/lib/libc/atomic/atomic_init_testset.c,v retrieving revision 1.19 diff -u -p -r1.19 atomic_init_testset.c --- common/lib/libc/atomic/atomic_init_testset.c 21 Jan 2024 03:42:08 -0000 1.19 +++ common/lib/libc/atomic/atomic_init_testset.c 5 Jan 2026 20:23:28 -0000 @@ -351,6 +351,15 @@ __strong_alias(_atomic_cas_ptr_ni,_atomi //atomic_op_alias(atomic_cas_8,_atomic_cas_8) //atomic_op_alias(atomic_cas_8_ni,_atomic_cas_8) #ifdef __HAVE_ATOMIC_CAS_64_UP +#undef atomic_cas_64 +//#undef atomic_cas_uint +//#undef atomic_cas_ulong +//#undef atomic_cas_ptr +#undef atomic_cas_64_ni +//#undef atomic_cas_uint_ni +//#undef atomic_cas_ulong_ni +//#undef atomic_cas_ptr_ni +atomic_op_alias(atomic_cas_64,_atomic_cas_64) atomic_op_alias(atomic_cas_64_ni,_atomic_cas_64) __strong_alias(_atomic_cas_64_ni,_atomic_cas_64) crt_alias(__sync_val_compare_and_swap_8,_atomic_cas_64) Index: common/lib/libc/atomic/atomic_nand_64_cas.c =================================================================== RCS file: /cvsroot/src/common/lib/libc/atomic/atomic_nand_64_cas.c,v retrieving revision 1.2 diff -u -p -r1.2 atomic_nand_64_cas.c --- common/lib/libc/atomic/atomic_nand_64_cas.c 18 Feb 2014 13:21:04 -0000 1.2 +++ common/lib/libc/atomic/atomic_nand_64_cas.c 5 Jan 2026 20:23:28 -0000 @@ -29,6 +29,8 @@ * POSSIBILITY OF SUCH DAMAGE. */ +#include "atomic_op_namespace.h" + #include #ifdef __HAVE_ATOMIC64_OPS Index: common/lib/libc/atomic/atomic_sub_64_cas.c =================================================================== RCS file: /cvsroot/src/common/lib/libc/atomic/atomic_sub_64_cas.c,v retrieving revision 1.3 diff -u -p -r1.3 atomic_sub_64_cas.c --- common/lib/libc/atomic/atomic_sub_64_cas.c 23 Jun 2014 21:53:45 -0000 1.3 +++ common/lib/libc/atomic/atomic_sub_64_cas.c 5 Jan 2026 20:23:28 -0000 @@ -29,6 +29,8 @@ * POSSIBILITY OF SUCH DAMAGE. */ +#include "atomic_op_namespace.h" + #include #ifdef __HAVE_ATOMIC64_OPS Index: common/lib/libc/atomic/atomic_xor_64_cas.c =================================================================== RCS file: /cvsroot/src/common/lib/libc/atomic/atomic_xor_64_cas.c,v retrieving revision 1.3 diff -u -p -r1.3 atomic_xor_64_cas.c --- common/lib/libc/atomic/atomic_xor_64_cas.c 23 Jun 2014 21:53:45 -0000 1.3 +++ common/lib/libc/atomic/atomic_xor_64_cas.c 5 Jan 2026 20:23:28 -0000 @@ -29,6 +29,8 @@ * POSSIBILITY OF SUCH DAMAGE. */ +#include "atomic_op_namespace.h" + #include #ifdef __HAVE_ATOMIC64_OPS Index: sys/arch/hppa/include/types.h =================================================================== RCS file: /cvsroot/src/sys/arch/hppa/include/types.h,v retrieving revision 1.33 diff -u -p -r1.33 types.h --- sys/arch/hppa/include/types.h 28 Apr 2024 10:57:34 -0000 1.33 +++ sys/arch/hppa/include/types.h 5 Jan 2026 20:23:36 -0000 @@ -96,12 +96,13 @@ typedef int __register_t; #define RAS_DECL(name) \ extern const char __CONCAT(name,_ras_start[]), __CONCAT(name,_ras_end[]) +#define __HAVE_ATOMIC64_OPS +#define __HAVE_BUS_SPACE_8 #define __HAVE_CPU_LWP_SETPRIVATE #define __HAVE_COMMON___TLS_GET_ADDR #define __HAVE___LWP_GETPRIVATE_FAST #define __HAVE_TLS_VARIANT_I #define __HAVE_NEW_STYLE_BUS_H -#define __HAVE_BUS_SPACE_8 #define __HAVE_MM_MD_DIRECT_MAPPED_PHYS #define __HAVE_MM_MD_KERNACC