Date: Tue, 9 Nov 2010 23:53:47 +0000 (UTC) From: Nathan Whitehorn <nwhitehorn@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r215067 - head/sys/powerpc/aim Message-ID: <201011092353.oA9NrlVi062164@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: nwhitehorn Date: Tue Nov 9 23:53:47 2010 New Revision: 215067 URL: http://svn.freebsd.org/changeset/base/215067 Log: Make AIM early-boot code function correctly without Open Firmware. Modified: head/sys/powerpc/aim/mmu_oea64.c head/sys/powerpc/aim/nexus.c head/sys/powerpc/aim/ofw_machdep.c Modified: head/sys/powerpc/aim/mmu_oea64.c ============================================================================== --- head/sys/powerpc/aim/mmu_oea64.c Tue Nov 9 22:32:11 2010 (r215066) +++ head/sys/powerpc/aim/mmu_oea64.c Tue Nov 9 23:53:47 2010 (r215067) @@ -274,7 +274,6 @@ static struct mem_region *regions; static struct mem_region *pregions; static u_int phys_avail_count; static int regions_sz, pregions_sz; -extern int ofw_real_mode; extern struct pmap ofw_pmap; @@ -1118,7 +1117,8 @@ moea64_bootstrap(mmu_t mmup, vm_offset_t * mode. */ - if (!ofw_real_mode) { + chosen = OF_finddevice("/chosen"); + if (chosen != -1 && OF_getprop(chosen, "mmu", &mmui, 4) != -1) { #ifndef __powerpc64__ moea64_pinit(mmup, &ofw_pmap); @@ -1126,10 +1126,6 @@ moea64_bootstrap(mmu_t mmup, vm_offset_t ofw_pmap.pm_sr[i] = kernel_pmap->pm_sr[i]; #endif - if ((chosen = OF_finddevice("/chosen")) == -1) - panic("moea64_bootstrap: can't find /chosen"); - OF_getprop(chosen, "mmu", &mmui, 4); - if ((mmu = OF_instance_to_package(mmui)) == -1) panic("moea64_bootstrap: can't get mmu package"); if ((sz = OF_getproplen(mmu, "translations")) == -1) Modified: head/sys/powerpc/aim/nexus.c ============================================================================== --- head/sys/powerpc/aim/nexus.c Tue Nov 9 22:32:11 2010 (r215066) +++ head/sys/powerpc/aim/nexus.c Tue Nov 9 23:53:47 2010 (r215067) @@ -213,9 +213,6 @@ nexus_attach(device_t dev) struct nexus_softc *sc; u_long start, end; - if ((root = OF_peer(0)) == -1) - panic("nexus_probe: OF_peer failed."); - sc = device_get_softc(dev); start = 0; @@ -229,6 +226,9 @@ nexus_attach(device_t dev) rman_manage_region(&sc->sc_rman, start, end)) panic("nexus_probe IRQ rman"); + if ((root = OF_peer(0)) == 0) + return (bus_generic_attach(dev)); + /* * Now walk the OFW tree to locate top-level devices */ Modified: head/sys/powerpc/aim/ofw_machdep.c ============================================================================== --- head/sys/powerpc/aim/ofw_machdep.c Tue Nov 9 22:32:11 2010 (r215066) +++ head/sys/powerpc/aim/ofw_machdep.c Tue Nov 9 23:53:47 2010 (r215067) @@ -333,6 +333,12 @@ OF_initial_setup(void *fdt_ptr, void *ju #endif fdt = fdt_ptr; + + #ifdef FDT_DTB_STATIC + /* Check for a statically included blob */ + if (fdt == NULL) + fdt = &fdt_static_dtb; + #endif } boolean_t @@ -361,7 +367,7 @@ OF_bootstrap() * background processes. */ ofw_quiesce(); - } else { + } else if (fdt != NULL) { status = OF_install(OFW_FDT, 0); if (status != TRUE)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201011092353.oA9NrlVi062164>