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>