Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 7 Nov 2020 16:35:48 +0000 (UTC)
From:      "Bjoern A. Zeeb" <bz@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject:   svn commit: r367451 - stable/12/sys/arm64/arm64
Message-ID:  <202011071635.0A7GZmg8078233@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: bz
Date: Sat Nov  7 16:35:48 2020
New Revision: 367451
URL: https://svnweb.freebsd.org/changeset/base/367451

Log:
  MFC r367327:
  
   arm64: implement bs_sr_<N>
  
    Implement the bs_sr_<N> generic functions based on the generic
    mips implementation calling the generic bs_w_<N> functions in a loop.
  
    ral(4) (rt2860.c) panics in RAL_SET_REGION_4() because bs_sr_4()
    is NULL.  It seems ral(4) and ti(4) might be the only consumers of
    these functions I could find quickly so keeping them in C rather than asm.

Modified:
  stable/12/sys/arm64/arm64/bus_machdep.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/arm64/arm64/bus_machdep.c
==============================================================================
--- stable/12/sys/arm64/arm64/bus_machdep.c	Sat Nov  7 16:34:21 2020	(r367450)
+++ stable/12/sys/arm64/arm64/bus_machdep.c	Sat Nov  7 16:35:48 2020	(r367451)
@@ -116,6 +116,50 @@ generic_bs_subregion(void *t, bus_space_handle_t bsh, 
 	return (0);
 }
 
+/*
+ * Write `count' 1, 2, 4, or 8 byte value `val' to bus space described
+ * by tag/handle starting at `offset'.
+ */
+static void
+generic_bs_sr_1(void *t, bus_space_handle_t bsh,
+    bus_size_t offset, uint8_t value, size_t count)
+{
+	bus_addr_t addr = bsh + offset;
+
+	for (; count != 0; count--, addr++)
+		generic_bs_w_1(t, bsh, addr, value);
+}
+
+static void
+generic_bs_sr_2(void *t, bus_space_handle_t bsh,
+		       bus_size_t offset, uint16_t value, size_t count)
+{
+	bus_addr_t addr = bsh + offset;
+
+	for (; count != 0; count--, addr += 2)
+		generic_bs_w_2(t, bsh, addr, value);
+}
+
+static void
+generic_bs_sr_4(void *t, bus_space_handle_t bsh,
+    bus_size_t offset, uint32_t value, size_t count)
+{
+	bus_addr_t addr = bsh + offset;
+
+	for (; count != 0; count--, addr += 4)
+		generic_bs_w_4(t, bsh, addr, value);
+}
+
+static void
+generic_bs_sr_8(void *t, bus_space_handle_t bsh, bus_size_t offset,
+    uint64_t value, size_t count)
+{
+	bus_addr_t addr = bsh + offset;
+
+	for (; count != 0; count--, addr += 8)
+		generic_bs_w_8(t, bsh, addr, value);
+}
+
 struct bus_space memmap_bus = {
 	/* cookie */
 	.bs_cookie = NULL,
@@ -175,10 +219,10 @@ struct bus_space memmap_bus = {
 	.bs_sm_8 = NULL,
 
 	/* set region */
-	.bs_sr_1 = NULL,
-	.bs_sr_2 = NULL,
-	.bs_sr_4 = NULL,
-	.bs_sr_8 = NULL,
+	.bs_sr_1 =	generic_bs_sr_1,
+	.bs_sr_2 =	generic_bs_sr_2,
+	.bs_sr_4 =	generic_bs_sr_4,
+	.bs_sr_8 =	generic_bs_sr_8,
 
 	/* copy */
 	.bs_c_1 = NULL,



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202011071635.0A7GZmg8078233>