svn commit: r212277 - in user/nwhitehorn/ps3: dev/ofw powerpc/aim
powerpc/ps3
Nathan Whitehorn
nwhitehorn at FreeBSD.org
Mon Sep 6 23:05:39 UTC 2010
Author: nwhitehorn
Date: Mon Sep 6 23:05:38 2010
New Revision: 212277
URL: http://svn.freebsd.org/changeset/base/212277
Log:
Set the Data Address Breakpoint Register to throw exceptions on NULL
pointer dereferences. Fix two that appeared related to FDT.
Modified:
user/nwhitehorn/ps3/dev/ofw/ofw_fdt.c
user/nwhitehorn/ps3/powerpc/aim/nexus.c
user/nwhitehorn/ps3/powerpc/ps3/platform_ps3.c
Modified: user/nwhitehorn/ps3/dev/ofw/ofw_fdt.c
==============================================================================
--- user/nwhitehorn/ps3/dev/ofw/ofw_fdt.c Mon Sep 6 22:59:58 2010 (r212276)
+++ user/nwhitehorn/ps3/dev/ofw/ofw_fdt.c Mon Sep 6 23:05:38 2010 (r212277)
@@ -95,6 +95,7 @@ OFW_DEF(ofw_fdt);
static void *fdtp = NULL;
+extern int pmap_bootstrapped;
static int
ofw_fdt_init(ofw_t ofw, void *data)
{
@@ -138,6 +139,9 @@ ofw_fdt_peer(ofw_t ofw, phandle_t node)
phandle_t p;
int depth, offset;
+ if (fdtp == NULL)
+ return (-1);
+
if (node == 0) {
/* Find root node */
offset = fdt_path_offset(fdtp, "/");
@@ -382,6 +386,9 @@ ofw_fdt_finddevice(ofw_t ofw, const char
phandle_t p;
int offset;
+ if (fdtp == NULL)
+ return (-1);
+
offset = fdt_path_offset(fdtp, device);
p = (phandle_t)(uintptr_t)fdt_offset_ptr(fdtp, offset, sizeof(p));
Modified: user/nwhitehorn/ps3/powerpc/aim/nexus.c
==============================================================================
--- user/nwhitehorn/ps3/powerpc/aim/nexus.c Mon Sep 6 22:59:58 2010 (r212276)
+++ user/nwhitehorn/ps3/powerpc/aim/nexus.c Mon Sep 6 23:05:38 2010 (r212277)
@@ -211,9 +211,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;
@@ -227,6 +224,10 @@ nexus_attach(device_t dev)
rman_manage_region(&sc->sc_rman, start, end))
panic("nexus_probe IRQ rman");
+ if ((root = OF_peer(0)) == -1)
+ return (bus_generic_attach(dev));
+
+
/*
* Now walk the OFW tree to locate top-level devices
*/
Modified: user/nwhitehorn/ps3/powerpc/ps3/platform_ps3.c
==============================================================================
--- user/nwhitehorn/ps3/powerpc/ps3/platform_ps3.c Mon Sep 6 22:59:58 2010 (r212276)
+++ user/nwhitehorn/ps3/powerpc/ps3/platform_ps3.c Mon Sep 6 23:05:38 2010 (r212277)
@@ -156,6 +156,9 @@ ps3_attach(platform_t plat)
pmap_mmu_install("mmu_ps3", BUS_PROBE_SPECIFIC);
cpu_idle_hook = ps3_cpu_idle;
+ /* Set a breakpoint to make NULL an invalid address */
+ lv1_set_dabr(0x7 /* read and write, MMU on */, 2 /* kernel accesses */);
+
return (0);
}
More information about the svn-src-user
mailing list