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,