Module Name:    src
Committed By:   skrll
Date:           Sat Sep 26 12:58:23 UTC 2020

Modified Files:
        src/sys/arch/arm/include: cpufunc.h
        src/sys/external/bsd/vchiq/dist/interface/compat: vchi_bsd.h
        src/sys/external/bsd/vchiq/dist/interface/vchiq_arm: vchiq_2835_arm.c
            vchiq_core.c vchiq_core.h vchiq_kmod_netbsd.c

Log Message:
Define isb(), dsb(option), and dmb(option)

Catch up with vchiq upstream to allow this.


To generate a diff of this commit:
cvs rdiff -u -r1.82 -r1.83 src/sys/arch/arm/include/cpufunc.h
cvs rdiff -u -r1.16 -r1.17 \
    src/sys/external/bsd/vchiq/dist/interface/compat/vchi_bsd.h
cvs rdiff -u -r1.21 -r1.22 \
    src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_2835_arm.c
cvs rdiff -u -r1.14 -r1.15 \
    src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_core.c
cvs rdiff -u -r1.5 -r1.6 \
    src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_core.h
cvs rdiff -u -r1.11 -r1.12 \
    src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_kmod_netbsd.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/arm/include/cpufunc.h
diff -u src/sys/arch/arm/include/cpufunc.h:1.82 src/sys/arch/arm/include/cpufunc.h:1.83
--- src/sys/arch/arm/include/cpufunc.h:1.82	Tue Dec 11 19:38:42 2018
+++ src/sys/arch/arm/include/cpufunc.h	Sat Sep 26 12:58:22 2020
@@ -42,6 +42,26 @@
 #ifndef _ARM_CPUFUNC_H_
 #define _ARM_CPUFUNC_H_
 
+#define	isb()		__asm __volatile("isb" : : : "memory")
+
+/*
+ * Options for DMB and DSB:
+ *	oshld	Outer Shareable, load
+ *	oshst	Outer Shareable, store
+ *	osh	Outer Shareable, all
+ *	nshld	Non-shareable, load
+ *	nshst	Non-shareable, store
+ *	nsh	Non-shareable, all
+ *	ishld	Inner Shareable, load
+ *	ishst	Inner Shareable, store
+ *	ish	Inner Shareable, all
+ *	ld	Full system, load
+ *	st	Full system, store
+ *	sy	Full system, all
+ */
+#define	dsb(opt)	__asm __volatile("dsb " __STRING(opt) : : : "memory")
+#define	dmb(opt)	__asm __volatile("dmb " __STRING(opt) : : : "memory")
+
 #ifdef __arm__
 
 #ifdef _KERNEL

Index: src/sys/external/bsd/vchiq/dist/interface/compat/vchi_bsd.h
diff -u src/sys/external/bsd/vchiq/dist/interface/compat/vchi_bsd.h:1.16 src/sys/external/bsd/vchiq/dist/interface/compat/vchi_bsd.h:1.17
--- src/sys/external/bsd/vchiq/dist/interface/compat/vchi_bsd.h:1.16	Sat Sep 26 10:56:37 2020
+++ src/sys/external/bsd/vchiq/dist/interface/compat/vchi_bsd.h	Sat Sep 26 12:58:22 2020
@@ -302,8 +302,6 @@ typedef	off_t	loff_t;
 #define BCM2835_MBOX_CHAN_VCHIQ	3
 #define bcm_mbox_write	bcmmbox_write
 
-#define dsb	membar_producer
-
 #define device_print_prettyname(dev)	device_printf((dev), "")
 
 #endif /* __VCHI_NETBSD_H__ */

Index: src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_2835_arm.c
diff -u src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_2835_arm.c:1.21 src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_2835_arm.c:1.22
--- src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_2835_arm.c:1.21	Wed Jan 22 19:15:49 2020
+++ src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_2835_arm.c	Sat Sep 26 12:58:23 2020
@@ -181,7 +181,7 @@ vchiq_platform_init(VCHIQ_STATE_T *state
 	}
 
 	/* Send the base address of the slots to VideoCore */
-	dsb(); /* Ensure all writes have completed */
+	dsb(sy); /* Ensure all writes have completed */
 
 	bus_dmamap_sync(dma_tag, dma_map, 0, slot_mem_size,
 	    BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE);

Index: src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_core.c
diff -u src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_core.c:1.14 src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_core.c:1.15
--- src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_core.c:1.14	Wed Jan 22 19:15:49 2020
+++ src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_core.c	Sat Sep 26 12:58:23 2020
@@ -439,7 +439,7 @@ remote_event_wait(VCHIQ_STATE_T *state, 
 {
 	if (!event->fired) {
 		event->armed = 1;
-		dsb();
+		dsb(sy);
 		if (!event->fired) {
 			if (down_interruptible(
 					(struct semaphore *)

Index: src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_core.h
diff -u src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_core.h:1.5 src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_core.h:1.6
--- src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_core.h:1.5	Wed Jan 22 19:15:49 2020
+++ src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_core.h	Sat Sep 26 12:58:23 2020
@@ -185,11 +185,11 @@ enum {
 
 #define DEBUG_INITIALISE(local) int *debug_ptr = (local)->debug;
 #define DEBUG_TRACE(d) \
-	do { debug_ptr[DEBUG_ ## d] = __LINE__; dsb(); } while (0)
+	do { debug_ptr[DEBUG_ ## d] = __LINE__; dsb(sy); } while (0)
 #define DEBUG_VALUE(d, v) \
-	do { debug_ptr[DEBUG_ ## d] = (v); dsb(); } while (0)
+	do { debug_ptr[DEBUG_ ## d] = (v); dsb(sy); } while (0)
 #define DEBUG_COUNT(d) \
-	do { debug_ptr[DEBUG_ ## d]++; dsb(); } while (0)
+	do { debug_ptr[DEBUG_ ## d]++; dsb(sy); } while (0)
 
 #else /* VCHIQ_ENABLE_DEBUG */
 

Index: src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_kmod_netbsd.c
diff -u src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_kmod_netbsd.c:1.11 src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_kmod_netbsd.c:1.12
--- src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_kmod_netbsd.c:1.11	Tue Dec 31 01:00:23 2019
+++ src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_kmod_netbsd.c	Sat Sep 26 12:58:23 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: vchiq_kmod_netbsd.c,v 1.11 2019/12/31 01:00:23 jmcneill Exp $ */
+/* $NetBSD: vchiq_kmod_netbsd.c,v 1.12 2020/09/26 12:58:23 skrll Exp $ */
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vchiq_kmod_netbsd.c,v 1.11 2019/12/31 01:00:23 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vchiq_kmod_netbsd.c,v 1.12 2020/09/26 12:58:23 skrll Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -98,7 +98,7 @@ remote_event_signal(REMOTE_EVENT_T *even
 
 	event->fired = 1;
 
-	dsb();		/* data barrier operation */
+	dsb(sy);		/* data barrier operation */
 
 	if (event->armed) {
 		bus_space_write_4(vchiq_softc->sc_iot, vchiq_softc->sc_ioh,

Reply via email to