/* Initialize OF interface */
prom_init ((prom_entry) r5);
+ prom_print_available();
+
/* Allocate some memory for malloc'ator */
- malloc_base = prom_claim_chunk((void *)MALLOCADDR, MALLOCSIZE, 0);
+ malloc_base = prom_claim_chunk_top(MALLOCSIZE, 0);
if (malloc_base == (void *)-1) {
- prom_printf("Can't claim malloc buffer (%d bytes at 0x%08x)\n",
- MALLOCSIZE, MALLOCADDR);
+ prom_printf("Can't claim malloc buffer of %d bytes\n",
+ MALLOCSIZE);
return -1;
}
malloc_init(malloc_base, MALLOCSIZE);
if (!imagename) {
if (bootoncelabel[0] != 0)
imagename = bootoncelabel;
- else if (bootlastlabel[0] != 0)
- imagename = bootlastlabel;
- else
+ else if (bootlastlabel[0] != 0) {
+ imagename = bootlastlabel;
+ word_split(&imagename, ¶ms->args);
+ } else
imagename = cfg_get_default();
}
if (imagename)
imagename = cfg_get_default();
/* write the imagename out so it can be reused on reboot if necessary */
- prom_set_options("boot-last-label", imagename, strlen(imagename));
+ strcpy(bootlastlabel, imagename);
+ if (params->args && params->args[0]) {
+ strcat(bootlastlabel, " ");
+ strcat(bootlastlabel, params->args);
+ }
+ prom_set_options("boot-last-label", bootlastlabel,
+ strlen(bootlastlabel) + 1);
label = 0;
defdevice = boot.dev;
DEBUG_F("Entering kernel...\n");
+ prom_print_available();
+
/* call the kernel with our stack. */
kernel_entry(initrd_base + loadinfo.load_loc, initrd_size, prom, 0, 0);
continue;