freebsd-dev/sys/powerpc
Justin Hibbits 84046d16eb powerpc: Implement atomic_(f)cmpset_ for short and char
|
This adds two implementations for each atomic_fcmpset_ and atomic_cmpset_
short and char functions, selectable at compile time for the target
architecture.  By default, it uses a generic shift-and-mask to perform atomic
updates to sub-components of 32-bit words from <sys/_atomic_subword.h>.
However, if ISA_206_ATOMICS is defined it uses the ll/sc instructions for
halfword and bytes, introduced in PowerISA 2.06.  These instructions are
supported by all IBM processors from POWER7 on, as well as the Freescale/NXP
e6500 core.  Although the e5500 and e500mc both implement PowerISA 2.06 they
do not implement these instructions.

As part of this, clean up the atomic_(f)cmpset_acq and _rel wrappers, by
using macros to reduce code duplication.

ISA_206_ATOMICS requires clang or newer binutils (2.20 or later).

Differential Revision:	https://reviews.freebsd.org/D21682
2019-10-08 01:36:34 +00:00
..
aim powerpc64/pmap: Fix release order to match lock order in moea64_enter() 2019-10-07 02:36:42 +00:00
booke powerpc/booke64: Align initial stack setting to match that of aim64's 2019-09-28 03:33:07 +00:00
conf Fix bogusly declared WERRORs in kernel build 2019-08-25 19:39:31 +00:00
cpufreq
fpu
include powerpc: Implement atomic_(f)cmpset_ for short and char 2019-10-08 01:36:34 +00:00
mambo
mikrotik
mpc85xx powerpc/mpc85xx: Use the proper (EREF) form of writing to DBCR0 2019-05-23 03:47:25 +00:00
ofw powerpc: Get 32-bit AIM building with secure-PLT 2019-08-05 01:37:18 +00:00
powermac Extract eventfilter declarations to sys/_eventfilter.h 2019-05-20 00:38:23 +00:00
powernv powerpc64/powernv: Add opal NVRAM driver for PowerNV systems 2019-09-14 03:30:34 +00:00
powerpc Improve MD page fault handlers. 2019-09-27 18:43:36 +00:00
ps3 powerpc/pmap64: Make moea64 statistics optional 2019-07-25 03:47:27 +00:00
pseries powerpc/pmap64: Make moea64 statistics optional 2019-07-25 03:47:27 +00:00
psim