Module Name:    src
Committed By:   nakayama
Date:           Mon Jul 14 12:40:38 UTC 2014

Modified Files:
        src/sys/arch/sparc64/include: bus_funcs.h
        src/sys/arch/sparc64/sparc64: machdep.c

Log Message:
Make bus_space_barrier inline to avoid unnecessary argument handling.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/sparc64/include/bus_funcs.h
cvs rdiff -u -r1.277 -r1.278 src/sys/arch/sparc64/sparc64/machdep.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/sparc64/include/bus_funcs.h
diff -u src/sys/arch/sparc64/include/bus_funcs.h:1.2 src/sys/arch/sparc64/include/bus_funcs.h:1.3
--- src/sys/arch/sparc64/include/bus_funcs.h:1.2	Sun Jul 17 23:29:10 2011
+++ src/sys/arch/sparc64/include/bus_funcs.h	Mon Jul 14 12:40:38 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: bus_funcs.h,v 1.2 2011/07/17 23:29:10 dyoung Exp $	*/
+/*	$NetBSD: bus_funcs.h,v 1.3 2014/07/14 12:40:38 nakayama Exp $	*/
 
 /*-
  * Copyright (c) 1996, 1997, 1998, 2001 The NetBSD Foundation, Inc.
@@ -125,6 +125,30 @@ bus_intr_establish(bus_space_tag_t t, in
 #define	bus_space_vaddr(t, h)	(PHYS_ASI((h)._asi) ? \
 			NULL : (void *)(vaddr_t)((h)._ptr))
 
+#define bus_space_barrier(t, h, o, s, f)	\
+	sparc_bus_space_barrier((t), (h), (o), (s), (f))
+
+static __inline void
+sparc_bus_space_barrier(bus_space_tag_t t, bus_space_handle_t h,
+    bus_size_t o, bus_size_t s, int f)
+{
+	/*
+	 * We have a bit of a problem with the bus_space_barrier()
+	 * interface.  It defines a read barrier and a write barrier
+	 * which really don't map to the 7 different types of memory
+	 * barriers in the SPARC v9 instruction set.
+	 */
+	if (f == BUS_SPACE_BARRIER_READ)
+		/* A load followed by a load to the same location? */
+		__asm volatile("membar #Lookaside");
+	else if (f == BUS_SPACE_BARRIER_WRITE)
+		/* A store followed by a store? */
+		__asm volatile("membar #StoreStore");
+	else 
+		/* A store followed by a load? */
+		__asm volatile("membar #StoreLoad|#MemIssue|#Lookaside");
+}
+
 /*
  *	uintN_t bus_space_read_N(bus_space_tag_t tag,
  *	    bus_space_handle_t bsh, bus_size_t offset);

Index: src/sys/arch/sparc64/sparc64/machdep.c
diff -u src/sys/arch/sparc64/sparc64/machdep.c:1.277 src/sys/arch/sparc64/sparc64/machdep.c:1.278
--- src/sys/arch/sparc64/sparc64/machdep.c:1.277	Tue May 13 19:39:40 2014
+++ src/sys/arch/sparc64/sparc64/machdep.c	Mon Jul 14 12:40:38 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: machdep.c,v 1.277 2014/05/13 19:39:40 palle Exp $ */
+/*	$NetBSD: machdep.c,v 1.278 2014/07/14 12:40:38 nakayama Exp $ */
 
 /*-
  * Copyright (c) 1996, 1997, 1998 The NetBSD Foundation, Inc.
@@ -71,7 +71,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.277 2014/05/13 19:39:40 palle Exp $");
+__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.278 2014/07/14 12:40:38 nakayama Exp $");
 
 #include "opt_ddb.h"
 #include "opt_multiprocessor.h"
@@ -1611,27 +1611,6 @@ static void	sparc_bus_free(bus_space_tag
 
 struct extent *io_space = NULL;
 
-void
-bus_space_barrier(bus_space_tag_t t, bus_space_handle_t h,
-	bus_size_t o, bus_size_t s, int f)
-{
-	/*
-	 * We have a bit of a problem with the bus_space_barrier()
-	 * interface.  It defines a read barrier and a write barrier
-	 * which really don't map to the 7 different types of memory
-	 * barriers in the SPARC v9 instruction set.
-	 */
-	if (f == BUS_SPACE_BARRIER_READ)
-		/* A load followed by a load to the same location? */
-		__asm volatile("membar #Lookaside");
-	else if (f == BUS_SPACE_BARRIER_WRITE)
-		/* A store followed by a store? */
-		__asm volatile("membar #StoreStore");
-	else 
-		/* A store followed by a load? */
-		__asm volatile("membar #StoreLoad|#MemIssue|#Lookaside");
-}
-
 int
 bus_space_alloc(bus_space_tag_t t, bus_addr_t rs, bus_addr_t re, bus_size_t s,
 	bus_size_t a, bus_size_t b, int f, bus_addr_t *ap,

Reply via email to