linux_dsm_epyc7002/include/asm-generic
Mark Rutland 18cc1814d4 atomics/treewide: Make test ops optional
Some of the atomics return the result of a test applied after the atomic
operation, and almost all architectures implement these as trivial
wrappers around the underlying atomic. Specifically:

 * <atomic>_inc_and_test(v)    is (<atomic>_inc_return(v)    == 0)
 * <atomic>_dec_and_test(v)    is (<atomic>_dec_return(v)    == 0)
 * <atomic>_sub_and_test(i, v) is (<atomic>_sub_return(i, v) == 0)
 * <atomic>_add_negative(i, v) is (<atomic>_add_return(i, v)  < 0)

Rather than have these definitions duplicated in all architectures, with
minor inconsistencies in formatting and documentation, let's make these
operations optional, with default fallbacks as above. Implementations
must now provide a preprocessor symbol.

The instrumented atomics are updated accordingly.

Both x86 and m68k have custom implementations, which are left as-is,
given preprocessor symbols to avoid being overridden.

There should be no functional change as a result of this patch.

Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Reviewed-by: Will Deacon <will.deacon@arm.com>
Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Acked-by: Palmer Dabbelt <palmer@sifive.com>
Cc: Boqun Feng <boqun.feng@gmail.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/lkml/20180621121321.4761-16-mark.rutland@arm.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2018-06-21 14:25:24 +02:00
..
bitops locking/atomics, asm-generic/bitops/lock.h: Rewrite using atomic_fetch_*() 2018-06-21 12:52:12 +02:00
4level-fixup.h
5level-fixup.h x86/mm: Make PGDIR_SHIFT and PTRS_PER_P4D variable 2018-02-14 13:11:14 +01:00
asm-offsets.h
asm-prototypes.h
atomic64.h atomics/treewide: Make test ops optional 2018-06-21 14:25:24 +02:00
atomic-instrumented.h atomics/treewide: Make test ops optional 2018-06-21 14:25:24 +02:00
atomic-long.h locking/mutex: Optimize __mutex_trylock_fast() 2018-05-04 10:02:39 +02:00
atomic.h atomics/treewide: Make test ops optional 2018-06-21 14:25:24 +02:00
audit_change_attr.h
audit_dir_write.h
audit_read.h
audit_signal.h
audit_write.h
barrier.h locking/barriers: Introduce smp_cond_load_relaxed() and atomic_cond_read_relaxed() 2018-04-27 09:48:44 +02:00
bitops.h
bitsperlong.h
bug.h bug.h: work around GCC PR82365 in BUG() 2018-02-21 15:35:43 -08:00
bugs.h
cache.h
cacheflush.h
checksum.h
cmpxchg-local.h
cmpxchg.h
compat.h time: Add an asm-generic/compat.h file 2018-04-19 13:28:51 +02:00
current.h
delay.h
device.h
div64.h
dma-contiguous.h
dma-mapping.h dma-mapping: provide a generic dma-noncoherent implementation 2018-05-19 08:46:12 +02:00
dma.h
early_ioremap.h
emergency-restart.h
error-injection.h
exec.h mn10300: Remove the architecture 2018-03-09 23:19:56 +01:00
export.h export.h: remove code for prefixing symbols with underscore 2018-05-17 22:44:57 +09:00
extable.h
fb.h
fixmap.h
ftrace.h
futex.h
getorder.h
gpio.h
hardirq.h
hugetlb.h
hw_irq.h
ide_iops.h
int-ll64.h int-ll64.h: define u{8,16,32,64} and s{8,16,32,64} based on uapi header 2018-06-07 17:34:38 -07:00
io.h asm-generic fixes for v4.17-rc1 2018-04-12 09:15:48 -07:00
ioctl.h
iomap.h
irq_regs.h
irq_work.h
irq.h
irqflags.h
kdebug.h
kmap_types.h
kprobes.h
kvm_para.h KVM: Introduce paravirtualization hints and KVM_HINTS_DEDICATED 2018-03-06 18:40:44 +01:00
linkage.h
local64.h
local.h
mcs_spinlock.h
memory_model.h
mm_hooks.h
mm-arch-hooks.h
mmu_context.h
mmu.h
module.h
msi.h
page.h
param.h
parport.h
pci_iomap.h mn10300: Remove the architecture 2018-03-09 23:19:56 +01:00
pci.h PCI: remove PCI_DMA_BUS_IS_PHYS 2018-05-07 07:15:41 +02:00
percpu.h
pgalloc.h
pgtable-nop4d-hack.h
pgtable-nop4d.h x86/mm: Make PGDIR_SHIFT and PTRS_PER_P4D variable 2018-02-14 13:11:14 +01:00
pgtable-nopmd.h
pgtable-nopud.h
pgtable.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-next 2018-04-03 14:08:58 -07:00
preempt.h
ptrace.h
qrwlock_types.h
qrwlock.h
qspinlock_types.h locking/qspinlock: Merge 'struct __qspinlock' into 'struct qspinlock' 2018-04-27 09:48:45 +02:00
qspinlock.h locking/spinlocks: Clean up comment and #ifndef for {,queued_}spin_is_locked() 2018-05-15 08:11:15 +02:00
resource.h
rwsem.h
seccomp.h
sections.h
segment.h
serial.h
set_memory.h
signal.h
simd.h
sizes.h
spinlock.h
statfs.h
string.h
switch_to.h mn10300: Remove the architecture 2018-03-09 23:19:56 +01:00
syscall.h
syscalls.h
termios-base.h
termios.h
timex.h
tlb.h
tlbflush.h
topology.h
trace_clock.h
uaccess.h
unaligned.h
unistd.h
user.h
vga.h
vmlinux.lds.h kbuild: Fix asm-generic/vmlinux.lds.h for LD_DEAD_CODE_DATA_ELIMINATION 2018-05-17 22:45:00 +09:00
vtime.h
word-at-a-time.h
xor.h