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"); +}