Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 13 Oct 2010 02:09:06 +0000 (UTC)
From:      Nathan Whitehorn <nwhitehorn@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r213757 - in user/nwhitehorn/ps3/powerpc: aim booke powerpc
Message-ID:  <201010130209.o9D296wh069117@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: nwhitehorn
Date: Wed Oct 13 02:09:06 2010
New Revision: 213757
URL: http://svn.freebsd.org/changeset/base/213757

Log:
  Unify Book-E/AIM mem_valid() implementation in terms of the
  platform-specific mem_regions() routine.

Modified:
  user/nwhitehorn/ps3/powerpc/aim/ofw_machdep.c
  user/nwhitehorn/ps3/powerpc/booke/machdep.c
  user/nwhitehorn/ps3/powerpc/powerpc/platform.c

Modified: user/nwhitehorn/ps3/powerpc/aim/ofw_machdep.c
==============================================================================
--- user/nwhitehorn/ps3/powerpc/aim/ofw_machdep.c	Wed Oct 13 00:57:14 2010	(r213756)
+++ user/nwhitehorn/ps3/powerpc/aim/ofw_machdep.c	Wed Oct 13 02:09:06 2010	(r213757)
@@ -367,7 +367,7 @@ OF_bootstrap()
 		 * background processes.
 		 */
 		ofw_quiesce();
-	} else {
+	} else if (fdt != NULL) {
 		ofw_real_mode = 1;  /* XXX: don't use special virt mode code */
 		status = OF_install(OFW_FDT, 0);
 
@@ -693,16 +693,3 @@ OF_decode_addr(phandle_t dev, int regno,
 	return (bus_space_map(*tag, addr, size, 0, handle));
 }
 
-int
-mem_valid(vm_offset_t addr, int len)
-{
-	int i;
-
-	for (i = 0; i < nOFmem; i++)
-		if ((addr >= OFmem[i].mr_start) 
-		    && (addr + len < OFmem[i].mr_start + OFmem[i].mr_size))
-			return (0);
-
-	return (EFAULT);
-}
-

Modified: user/nwhitehorn/ps3/powerpc/booke/machdep.c
==============================================================================
--- user/nwhitehorn/ps3/powerpc/booke/machdep.c	Wed Oct 13 00:57:14 2010	(r213756)
+++ user/nwhitehorn/ps3/powerpc/booke/machdep.c	Wed Oct 13 02:09:06 2010	(r213757)
@@ -591,12 +591,3 @@ bzero(void *buf, size_t len)
 	}
 }
 
-/*
- * XXX what is the better/proper place for this routine?
- */
-int
-mem_valid(vm_offset_t addr, int len)
-{
-
-	return (1);
-}

Modified: user/nwhitehorn/ps3/powerpc/powerpc/platform.c
==============================================================================
--- user/nwhitehorn/ps3/powerpc/powerpc/platform.c	Wed Oct 13 00:57:14 2010	(r213756)
+++ user/nwhitehorn/ps3/powerpc/powerpc/platform.c	Wed Oct 13 02:09:06 2010	(r213757)
@@ -48,6 +48,7 @@ __FBSDID("$FreeBSD$");
 #include <vm/vm_page.h>
 
 #include <machine/cpu.h>
+#include <machine/md_var.h>
 #include <machine/platform.h>
 #include <machine/platformvar.h>
 #include <machine/smp.h>
@@ -63,11 +64,39 @@ static char plat_name[64] = "";
 SYSCTL_STRING(_hw, OID_AUTO, platform, CTLFLAG_RD | CTLFLAG_TUN,
     plat_name, 0, "Platform currently in use");
 
+static struct mem_region *pregions = NULL;
+static struct mem_region *aregions = NULL;
+static int npregions, naregions;
+
 void
 mem_regions(struct mem_region **phys, int *physsz, struct mem_region **avail,
     int *availsz)
 {
-	PLATFORM_MEM_REGIONS(plat_obj, phys, physsz, avail, availsz);
+	if (pregions == NULL)
+		PLATFORM_MEM_REGIONS(plat_obj, &pregions, &npregions,
+		    &aregions, &naregions);
+
+	*phys = pregions;
+	*avail = aregions;
+	*physsz = npregions;
+	*availsz = naregions;
+}
+
+int
+mem_valid(vm_offset_t addr, int len)
+{
+	int i;
+
+	if (pregions == NULL)
+		PLATFORM_MEM_REGIONS(plat_obj, &pregions, &npregions,
+		    &aregions, &naregions);
+
+	for (i = 0; i < npregions; i++)
+		if ((addr >= pregions[i].mr_start) 
+		   && (addr + len < pregions[i].mr_start + pregions[i].mr_size))
+			return (0);
+
+	return (EFAULT);
 }
 
 vm_offset_t



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