MIPS: cmpxchg: Implement 1 byte & 2 byte xchg()
authorPaul Burton <paul.burton@imgtec.com>
Sat, 10 Jun 2017 00:26:39 +0000 (17:26 -0700)
committerRalf Baechle <ralf@linux-mips.org>
Thu, 29 Jun 2017 00:42:25 +0000 (02:42 +0200)
commitb70eb30056dc84568f3d32440d9be6a558025843
tree2e0ab36189d3eb6dbf5bbb995b9aa7bf896a6e0f
parent8263db4d7768448cb06adbbdd14c613a1ea09830
MIPS: cmpxchg: Implement 1 byte & 2 byte xchg()

Implement 1 & 2 byte xchg() using read-modify-write atop a 4 byte
cmpxchg(). This allows us to support these atomic operations despite the
MIPS ISA only providing for 4 & 8 byte atomic operations.

This is required in order to support queued spinlocks (qspinlock) in a
later patch, since these make use of a 2 byte xchg() in their slow path.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/16354/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/include/asm/cmpxchg.h
arch/mips/kernel/Makefile
arch/mips/kernel/cmpxchg.c [new file with mode: 0644]