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