svn commit: r213757 - in user/nwhitehorn/ps3/powerpc: aim booke
powerpc
Nathan Whitehorn
nwhitehorn at FreeBSD.org
Wed Oct 13 02:09:06 UTC 2010
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
More information about the svn-src-user
mailing list