Source-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: src/common/lib/libc/arch/m68k/atomic



Module Name:    src
Committed By:   thorpej
Date:           Fri Dec 19 03:29:55 UTC 2025

Modified Files:
        src/common/lib/libc/arch/m68k/atomic: Makefile.inc atomic_cas.S
            atomic_op_asm.h
Added Files:
        src/common/lib/libc/arch/m68k/atomic: atomic_cas_normc.c
            atomic_init_m68k.c
Removed Files:
        src/common/lib/libc/arch/m68k/atomic: atomic_add.S atomic_and.S
            atomic_cas_68000.S atomic_dec.S atomic_inc.S atomic_nand.S
            atomic_or.S atomic_sub.S atomic_swap.S atomic_xor.S

Log Message:
Rework atomic operations for m68k platforms.

In addition to the 68010 not having a CAS instruction, there are other
68020+ systems that cannot use CAS or TAS because they have non-working
/RMC signal handling.  Such systems (for example, 68020-based hp300
systems) will generate a bus error in response.

Combine the 68010's RAS-based CAS implementation with the 68020 CASx-
based implementation, remove the other atomic operations (some of which
use CASx directly), and re-implement all other atomic operations in
terms of _atomic_cas_{8,16,32}().  68010 always uses the RAS-based
implementation, and non-68010 will check for machdep.broken_rmc at run
time and use the RAS-based implementation if the sysctl succeeds and
returns a non-zero value.


To generate a diff of this commit:
cvs rdiff -u -r1.17 -r1.18 src/common/lib/libc/arch/m68k/atomic/Makefile.inc
cvs rdiff -u -r1.11 -r0 src/common/lib/libc/arch/m68k/atomic/atomic_add.S
cvs rdiff -u -r1.12 -r0 src/common/lib/libc/arch/m68k/atomic/atomic_and.S \
    src/common/lib/libc/arch/m68k/atomic/atomic_or.S
cvs rdiff -u -r1.15 -r1.16 src/common/lib/libc/arch/m68k/atomic/atomic_cas.S
cvs rdiff -u -r1.7 -r0 \
    src/common/lib/libc/arch/m68k/atomic/atomic_cas_68000.S \
    src/common/lib/libc/arch/m68k/atomic/atomic_dec.S \
    src/common/lib/libc/arch/m68k/atomic/atomic_inc.S
cvs rdiff -u -r0 -r1.1 \
    src/common/lib/libc/arch/m68k/atomic/atomic_cas_normc.c \
    src/common/lib/libc/arch/m68k/atomic/atomic_init_m68k.c
cvs rdiff -u -r1.3 -r0 src/common/lib/libc/arch/m68k/atomic/atomic_nand.S
cvs rdiff -u -r1.9 -r1.10 \
    src/common/lib/libc/arch/m68k/atomic/atomic_op_asm.h
cvs rdiff -u -r1.4 -r0 src/common/lib/libc/arch/m68k/atomic/atomic_sub.S \
    src/common/lib/libc/arch/m68k/atomic/atomic_xor.S
cvs rdiff -u -r1.10 -r0 src/common/lib/libc/arch/m68k/atomic/atomic_swap.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.




Home | Main Index | Thread Index | Old Index