diff options
author | marius <marius@FreeBSD.org> | 2010-10-29 20:42:02 +0000 |
---|---|---|
committer | marius <marius@FreeBSD.org> | 2010-10-29 20:42:02 +0000 |
commit | 430f89aef8d51435e4e5d275c23fd58116bf94ef (patch) | |
tree | ba6825138512fa9d5d6348d455cb7cb002920ab3 /sys/boot/sparc64 | |
parent | b6e7fcf97b25d0864fdbf27be65c34ec8bf3ea90 (diff) | |
download | FreeBSD-src-430f89aef8d51435e4e5d275c23fd58116bf94ef.zip FreeBSD-src-430f89aef8d51435e4e5d275c23fd58116bf94ef.tar.gz |
Partially revert r203829; as it turns out what the PowerPC OFW loader did
was incorrect as further down the road cons_probe() calls malloc() so the
former can't be called before init_heap() has succeed. Instead just exit
to the firmware in case init_heap() fails like OF_init() does when hitting
a problem as we're then likely running in a very broken environment where
hardly anything can be trusted to work.
Diffstat (limited to 'sys/boot/sparc64')
-rw-r--r-- | sys/boot/sparc64/loader/main.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/sys/boot/sparc64/loader/main.c b/sys/boot/sparc64/loader/main.c index b3e7908..97f566c 100644 --- a/sys/boot/sparc64/loader/main.c +++ b/sys/boot/sparc64/loader/main.c @@ -811,15 +811,15 @@ main(int (*openfirm)(void *)) archsw.arch_autoload = sparc64_autoload; archsw.arch_maphint = sparc64_maphint; + if (init_heap() == (vm_offset_t)-1) + OF_exit(); + setheap((void *)heapva, (void *)(heapva + HEAPSZ)); + /* * Probe for a console. */ cons_probe(); - if (init_heap() == (vm_offset_t)-1) - panic("%s: can't claim heap", __func__); - setheap((void *)heapva, (void *)(heapva + HEAPSZ)); - if ((root = OF_peer(0)) == -1) panic("%s: can't get root phandle", __func__); OF_getprop(root, "compatible", compatible, sizeof(compatible)); |