]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
openrisc: use qspinlocks and qrwlocks
authorStafford Horne <shorne@gmail.com>
Thu, 23 Mar 2017 22:13:03 +0000 (07:13 +0900)
committerStafford Horne <shorne@gmail.com>
Fri, 3 Nov 2017 05:01:12 +0000 (14:01 +0900)
Enable OpenRISC to use qspinlocks and qrwlocks for upcoming SMP support.

Signed-off-by: Stafford Horne <shorne@gmail.com>
arch/openrisc/Kconfig
arch/openrisc/include/asm/Kbuild
arch/openrisc/include/asm/spinlock.h
arch/openrisc/include/asm/spinlock_types.h [new file with mode: 0644]

index 356dd67a86ea855a3f20bd1b3af945ef8e7ddf50..b49acda5e8f4dfe53d36f7b82d2fba1e30834b74 100644 (file)
@@ -28,6 +28,8 @@ config OPENRISC
        select OR1K_PIC
        select CPU_NO_EFFICIENT_FFS if !OPENRISC_HAVE_INST_FF1
        select NO_BOOTMEM
+       select ARCH_USE_QUEUED_SPINLOCKS
+       select ARCH_USE_QUEUED_RWLOCKS
 
 config CPU_BIG_ENDIAN
        def_bool y
index 5bea416a779270713ea614d3260e8f16fb0c766a..5f066780d8705a2ca82e71411d19f06ba8189cad 100644 (file)
@@ -28,6 +28,10 @@ generic-y += module.h
 generic-y += pci.h
 generic-y += percpu.h
 generic-y += preempt.h
+generic-y += qspinlock_types.h
+generic-y += qspinlock.h
+generic-y += qrwlock_types.h
+generic-y += qrwlock.h
 generic-y += sections.h
 generic-y += segment.h
 generic-y += string.h
index fd00a3a24123e7efd7359beed04ae7ff2894af95..9b761e0e22c358230b7d6a305281988a142cb6a8 100644 (file)
 #ifndef __ASM_OPENRISC_SPINLOCK_H
 #define __ASM_OPENRISC_SPINLOCK_H
 
-#error "or32 doesn't do SMP yet"
+#include <asm/qspinlock.h>
+
+#include <asm/qrwlock.h>
+
+#define arch_read_lock_flags(lock, flags) arch_read_lock(lock)
+#define arch_write_lock_flags(lock, flags) arch_write_lock(lock)
+
+#define arch_spin_relax(lock)  cpu_relax()
+#define arch_read_relax(lock)  cpu_relax()
+#define arch_write_relax(lock) cpu_relax()
+
 
 #endif
diff --git a/arch/openrisc/include/asm/spinlock_types.h b/arch/openrisc/include/asm/spinlock_types.h
new file mode 100644 (file)
index 0000000..7c6fb12
--- /dev/null
@@ -0,0 +1,7 @@
+#ifndef _ASM_OPENRISC_SPINLOCK_TYPES_H
+#define _ASM_OPENRISC_SPINLOCK_TYPES_H
+
+#include <asm/qspinlock_types.h>
+#include <asm/qrwlock_types.h>
+
+#endif /* _ASM_OPENRISC_SPINLOCK_TYPES_H */