mirror of https://gitee.com/openkylin/linux.git
b0d8003ef4
Mostly complete rewrite of the FRV atomic implementation, instead of using assembly files, use inline assembler. The out-of-line CONFIG option makes a bit of a mess of things, but a little CPP trickery gets that done too. FRV already had the atomic logic ops but under a non standard name, the reimplementation provides the generic names and provides the intermediate form required for the bitops implementation. The slightly inconsistent __atomic32_fetch_##op naming is because __atomic_fetch_##op conlicts with GCC builtin functions. The 64bit atomic ops use the inline assembly %Ln construct to access the low word register (r+1), afaik this construct was not previously used in the kernel and is completely undocumented, but I found it in the FRV GCC code and it seems to work. FRV had a non-standard definition of atomic_{clear,set}_mask() which would work types other than atomic_t, the one user relying on that (arch/frv/kernel/dma.c) got converted to use the new intermediate form. Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> |
||
---|---|---|
.. | ||
Makefile | ||
asm-offsets.c | ||
break.S | ||
cmode.S | ||
debug-stub.c | ||
dma.c | ||
entry-table.S | ||
entry.S | ||
frv_ksyms.c | ||
futex.c | ||
gdb-io.c | ||
gdb-io.h | ||
gdb-stub.c | ||
head-mmu-fr451.S | ||
head-uc-fr401.S | ||
head-uc-fr451.S | ||
head-uc-fr555.S | ||
head.S | ||
head.inc | ||
irq-mb93091.c | ||
irq-mb93093.c | ||
irq-mb93493.c | ||
irq.c | ||
local.h | ||
local64.h | ||
module.c | ||
pm-mb93093.c | ||
pm.c | ||
process.c | ||
ptrace.c | ||
setup.c | ||
signal.c | ||
sleep.S | ||
switch_to.S | ||
sys_frv.c | ||
sysctl.c | ||
time.c | ||
traps.c | ||
uaccess.c | ||
vmlinux.lds.S |