freebsd-skq/sys/powerpc
Conrad Meyer ca0ec73c11 Expand generic subword atomic primitives
The goal of this change is to make the atomic_load_acq_{8,16},
atomic_testandset{,_acq}_long, and atomic_testandclear_long primitives
available in MI-namespace.

The second goal is to get this draft out of my local tree, as anything that
requires a full tinderbox is a big burden out of tree.  MD specifics can be
refined individually afterwards.

The generic implementations may not be ideal for your architecture; feel
free to implement better versions.  If no subword_atomic definitions are
needed, the include can be removed from your arch's machine/atomic.h.
Generic definitions are guarded by defined macros of the same name.  To
avoid picking up conflicting generic definitions, some macro defines are
added to various MD machine/atomic.h to register an existing implementation.

Include _atomic_subword.h in arm and arm64 machine/atomic.h.

For some odd reason, KCSAN only generates some versions of primitives.
Generate the _acq variants of atomic_load.*_8, atomic_load.*_16, and
atomic_testandset.*_long.  There are other questionably disabled primitives,
but I didn't run into them, so I left them alone.  KCSAN is only built for
amd64 in tinderbox for now.

Add atomic_subword implementations of atomic_load_acq_{8,16} implemented
using masking and atomic_load_acq_32.

Add generic atomic_subword implementations of atomic_testandset_long(),
atomic_testandclear_long(), and atomic_testandset_acq_long(), using
atomic_fcmpset_long() and atomic_fcmpset_acq_long().

On x86, add atomic_testandset_acq_long as an alias for
atomic_testandset_long.

Reviewed by:	kevans, rlibby (previous versions both)
Differential Revision:	https://reviews.freebsd.org/D22963
2020-03-25 23:12:43 +00:00
..
aim powerpc: unconditionally mark SLB zones UMA_ZONE_CONTIG 2020-02-19 04:46:41 +00:00
amigaone Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
booke powerpc: Axe PPC4xx support. 2020-03-18 01:09:43 +00:00
conf powerpc: Axe PPC4xx support. 2020-03-18 01:09:43 +00:00
cpufreq powerpc: Fix cpufreq statement scoping 2019-03-08 03:59:53 +00:00
fpu Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
include Expand generic subword atomic primitives 2020-03-25 23:12:43 +00:00
mambo
mikrotik
mpc85xx powerpc/mpc85xx: Partially revert r356640 2020-01-13 23:09:00 +00:00
ofw Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
powermac Revert 2020-03-06 23:01:49 +00:00
powernv powerpc/powernv: powernv_node_numa_domain() fix non-NUMA case 2020-03-03 03:22:00 +00:00
powerpc [PowerPC] fix panic reading /dev/kmem on !DMAP machines 2020-03-20 11:51:08 +00:00
ps3 Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many) 2020-02-26 14:26:36 +00:00
pseries This is Ethernet driver so mark the interrupt appropriately. 2020-01-23 01:46:05 +00:00
psim Remove more needless <sys/tty.h> includes 2019-12-01 20:43:37 +00:00