On 01/30/2014 10:17 AM, Peter Zijlstra wrote:On Thu, Jan 30, 2014 at 02:04:53PM +0100, Peter Zijlstra wrote:So I took out that ugly union and rewrote the code to be mostlyI did wreck it.. :-)
atomic_*(), gcc generates acceptable code and its smaller too.
824 0 0 824 338 defconfig-build/kernel/locking/qrwlock.o
776 0 0 776 308 defconfig-build/kernel/locking/qrwlock.o
I don't think I wrecked it, but I've not actually tried it yet.
The below is still small and actually works.
---
arch/x86/Kconfig | 1
arch/x86/include/asm/spinlock.h | 2
arch/x86/include/asm/spinlock_types.h | 4
b/arch/x86/include/asm/qrwlock.h | 18 +++
b/include/asm-generic/qrwlock.h | 174 ++++++++++++++++++++++++++++++++++
b/include/asm-generic/qrwlock_types.h | 17 +++
b/kernel/locking/qrwlock.c | 157 ++++++++++++++++++++++++++++++
kernel/Kconfig.locks | 7 +
kernel/locking/Makefile | 1
9 files changed, 381 insertions(+)
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
OK, I see what you are trying to do. I can apply the change to my patch & send out v12. So I presume that you are now OK with it. Can I add your sign-off line?
-Longman