Module Name: src
Committed By: riastradh
Date: Thu Mar 10 00:14:16 UTC 2022
Modified Files:
src/sys/arch/evbppc/virtex: dcr.c dcr.h
src/sys/arch/powerpc/include: bus_defs.h bus_funcs.h
src/sys/arch/powerpc/powerpc: bus_space.c
Log Message:
powerpc: Implement bus_space_barrier as eieio.
To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/evbppc/virtex/dcr.c \
src/sys/arch/evbppc/virtex/dcr.h
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/powerpc/include/bus_defs.h
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/powerpc/include/bus_funcs.h
cvs rdiff -u -r1.38 -r1.39 src/sys/arch/powerpc/powerpc/bus_space.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/evbppc/virtex/dcr.c
diff -u src/sys/arch/evbppc/virtex/dcr.c:1.2 src/sys/arch/evbppc/virtex/dcr.c:1.3
--- src/sys/arch/evbppc/virtex/dcr.c:1.2 Fri Jul 1 19:03:50 2011
+++ src/sys/arch/evbppc/virtex/dcr.c Thu Mar 10 00:14:16 2022
@@ -1,4 +1,4 @@
-/* $NetBSD: dcr.c,v 1.2 2011/07/01 19:03:50 dyoung Exp $ */
+/* $NetBSD: dcr.c,v 1.3 2022/03/10 00:14:16 riastradh Exp $ */
/*
* Copyright (c) 2006 Jachym Holecek
@@ -37,7 +37,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: dcr.c,v 1.2 2011/07/01 19:03:50 dyoung Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dcr.c,v 1.3 2022/03/10 00:14:16 riastradh Exp $");
#include <sys/types.h>
#include <sys/bus.h>
@@ -66,3 +66,10 @@ dcr_subregion(bus_space_tag_t bst, bus_s
return (0);
}
+
+void
+dcr_barrier(bus_space_tag_t bst, bus_space_handle_t bsh, bus_size_t offset,
+ bus_size_t size, int flags)
+{
+ /* XXX EIEIO? */
+}
Index: src/sys/arch/evbppc/virtex/dcr.h
diff -u src/sys/arch/evbppc/virtex/dcr.h:1.2 src/sys/arch/evbppc/virtex/dcr.h:1.3
--- src/sys/arch/evbppc/virtex/dcr.h:1.2 Thu Oct 21 13:21:54 2021
+++ src/sys/arch/evbppc/virtex/dcr.h Thu Mar 10 00:14:16 2022
@@ -1,4 +1,4 @@
-/* $NetBSD: dcr.h,v 1.2 2021/10/21 13:21:54 andvar Exp $ */
+/* $NetBSD: dcr.h,v 1.3 2022/03/10 00:14:16 riastradh Exp $ */
/*
* Copyright (c) 2006 Jachym Holecek
@@ -52,6 +52,8 @@ int dcr_subregion(bus_space_tag_t, bus_
int dcr_map(bus_space_tag_t, bus_addr_t, bus_size_t, int,
bus_space_handle_t *);
void dcr_unmap(bus_space_tag_t, bus_space_handle_t, bus_size_t);
+void dcr_barrier(bus_space_tag_t, bus_space_handle_t, bus_size_t,
+ bus_size_t, int);
/* Bus space tag contents, one tag per DCR device. */
#define DCR_BST_BODY(base, read, write) \
Index: src/sys/arch/powerpc/include/bus_defs.h
diff -u src/sys/arch/powerpc/include/bus_defs.h:1.4 src/sys/arch/powerpc/include/bus_defs.h:1.5
--- src/sys/arch/powerpc/include/bus_defs.h:1.4 Mon Jul 6 09:34:17 2020
+++ src/sys/arch/powerpc/include/bus_defs.h Thu Mar 10 00:14:16 2022
@@ -1,4 +1,4 @@
-/* $NetBSD: bus_defs.h,v 1.4 2020/07/06 09:34:17 rin Exp $ */
+/* $NetBSD: bus_defs.h,v 1.5 2022/03/10 00:14:16 riastradh Exp $ */
/* $OpenBSD: bus.h,v 1.1 1997/10/13 10:53:42 pefo Exp $ */
/*-
@@ -220,6 +220,9 @@ struct powerpc_bus_space {
const struct powerpc_bus_space_set *pbs_set;
const struct powerpc_bus_space_set *pbs_set_stream;
const struct powerpc_bus_space_copy *pbs_copy;
+
+ void (*pbs_barrier)(bus_space_tag_t, bus_space_handle_t, bus_size_t,
+ bus_size_t, int);
};
#define _BUS_SPACE_STRIDE(t, o) \
Index: src/sys/arch/powerpc/include/bus_funcs.h
diff -u src/sys/arch/powerpc/include/bus_funcs.h:1.1 src/sys/arch/powerpc/include/bus_funcs.h:1.2
--- src/sys/arch/powerpc/include/bus_funcs.h:1.1 Fri Jul 1 17:10:00 2011
+++ src/sys/arch/powerpc/include/bus_funcs.h Thu Mar 10 00:14:16 2022
@@ -1,4 +1,4 @@
-/* $NetBSD: bus_funcs.h,v 1.1 2011/07/01 17:10:00 dyoung Exp $ */
+/* $NetBSD: bus_funcs.h,v 1.2 2022/03/10 00:14:16 riastradh Exp $ */
/* $OpenBSD: bus.h,v 1.1 1997/10/13 10:53:42 pefo Exp $ */
/*-
@@ -485,7 +485,7 @@ void bus_space_mallocok(void);
*
*/
#define bus_space_barrier(t, h, o, l, f) \
- ((void)((void)(t), (void)(h), (void)(o), (void)(l), (void)(f)))
+ ((*(t)->pbs_barrier)((t), (h), (o), (l), (f)))
#endif /* !__HAVE_LOCAL_BUS_SPACE */
Index: src/sys/arch/powerpc/powerpc/bus_space.c
diff -u src/sys/arch/powerpc/powerpc/bus_space.c:1.38 src/sys/arch/powerpc/powerpc/bus_space.c:1.39
--- src/sys/arch/powerpc/powerpc/bus_space.c:1.38 Mon Jul 6 10:31:24 2020
+++ src/sys/arch/powerpc/powerpc/bus_space.c Thu Mar 10 00:14:16 2022
@@ -1,4 +1,4 @@
-/* $NetBSD: bus_space.c,v 1.38 2020/07/06 10:31:24 rin Exp $ */
+/* $NetBSD: bus_space.c,v 1.39 2022/03/10 00:14:16 riastradh Exp $ */
/*-
* Copyright (c) 1996, 1997, 1998 The NetBSD Foundation, Inc.
@@ -33,7 +33,7 @@
#define _POWERPC_BUS_SPACE_PRIVATE
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: bus_space.c,v 1.38 2020/07/06 10:31:24 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bus_space.c,v 1.39 2022/03/10 00:14:16 riastradh Exp $");
#ifdef _KERNEL_OPT
#include "opt_ppcarch.h"
@@ -395,6 +395,8 @@ static void memio_unmap(bus_space_tag_t,
static int memio_alloc(bus_space_tag_t, bus_addr_t, bus_addr_t, bus_size_t,
bus_size_t, bus_size_t, int, bus_addr_t *, bus_space_handle_t *);
static void memio_free(bus_space_tag_t, bus_space_handle_t, bus_size_t);
+static void memio_barrier(bus_space_tag_t, bus_space_handle_t, bus_size_t,
+ bus_size_t, int);
static int extent_flags;
@@ -416,6 +418,7 @@ bus_space_init(struct powerpc_bus_space
t->pbs_unmap = memio_unmap;
t->pbs_alloc = memio_alloc;
t->pbs_free = memio_free;
+ t->pbs_barrier = memio_barrier;
if (t->pbs_flags & _BUS_SPACE_STRIDE_MASK) {
t->pbs_scalar_stream = scalar_strided_ops;
@@ -763,3 +766,10 @@ memio_free(bus_space_tag_t t, bus_space_
/* memio_unmap() does all that we need to do. */
memio_unmap(t, bsh, size);
}
+
+void
+memio_barrier(bus_space_tag_t t, bus_space_handle_t bsh, bus_size_t size,
+ bus_size_t offset, int flags)
+{
+ __asm volatile("eieio" ::: "memory");
+}