Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

openrisc: use qspinlocks and qrwlocks

Enable OpenRISC to use qspinlocks and qrwlocks for upcoming SMP support.

Signed-off-by: Stafford Horne <shorne@gmail.com>

+24 -1
+2
arch/openrisc/Kconfig
··· 28 28 select OR1K_PIC 29 29 select CPU_NO_EFFICIENT_FFS if !OPENRISC_HAVE_INST_FF1 30 30 select NO_BOOTMEM 31 + select ARCH_USE_QUEUED_SPINLOCKS 32 + select ARCH_USE_QUEUED_RWLOCKS 31 33 32 34 config CPU_BIG_ENDIAN 33 35 def_bool y
+4
arch/openrisc/include/asm/Kbuild
··· 28 28 generic-y += pci.h 29 29 generic-y += percpu.h 30 30 generic-y += preempt.h 31 + generic-y += qspinlock_types.h 32 + generic-y += qspinlock.h 33 + generic-y += qrwlock_types.h 34 + generic-y += qrwlock.h 31 35 generic-y += sections.h 32 36 generic-y += segment.h 33 37 generic-y += string.h
+11 -1
arch/openrisc/include/asm/spinlock.h
··· 19 19 #ifndef __ASM_OPENRISC_SPINLOCK_H 20 20 #define __ASM_OPENRISC_SPINLOCK_H 21 21 22 - #error "or32 doesn't do SMP yet" 22 + #include <asm/qspinlock.h> 23 + 24 + #include <asm/qrwlock.h> 25 + 26 + #define arch_read_lock_flags(lock, flags) arch_read_lock(lock) 27 + #define arch_write_lock_flags(lock, flags) arch_write_lock(lock) 28 + 29 + #define arch_spin_relax(lock) cpu_relax() 30 + #define arch_read_relax(lock) cpu_relax() 31 + #define arch_write_relax(lock) cpu_relax() 32 + 23 33 24 34 #endif
+7
arch/openrisc/include/asm/spinlock_types.h
··· 1 + #ifndef _ASM_OPENRISC_SPINLOCK_TYPES_H 2 + #define _ASM_OPENRISC_SPINLOCK_TYPES_H 3 + 4 + #include <asm/qspinlock_types.h> 5 + #include <asm/qrwlock_types.h> 6 + 7 + #endif /* _ASM_OPENRISC_SPINLOCK_TYPES_H */