summaryrefslogtreecommitdiffstats
path: root/sys/boot/sparc64/loader/main.c
diff options
context:
space:
mode:
authormarius <marius@FreeBSD.org>2010-10-29 20:42:02 +0000
committermarius <marius@FreeBSD.org>2010-10-29 20:42:02 +0000
commit430f89aef8d51435e4e5d275c23fd58116bf94ef (patch)
treeba6825138512fa9d5d6348d455cb7cb002920ab3 /sys/boot/sparc64/loader/main.c
parentb6e7fcf97b25d0864fdbf27be65c34ec8bf3ea90 (diff)
downloadFreeBSD-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/loader/main.c')
-rw-r--r--sys/boot/sparc64/loader/main.c8
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));
OpenPOWER on IntegriCloud