void boot(void) { char *path=pop_fstr_copy(), *param; // char *param="root=/dev/hda2 console=ttyS0,115200n8 console=tty0"; if(!path) { printk("[x86] Booting default not supported.\n"); return; } param = strchr(path, ' '); if(param) { *param = '\0'; param++; } printk("[x86] Booting file '%s' with parameters '%s'\n",path, param); if (elf_load(&sys_info, path, param) == LOADER_NOT_SUPPORT) if (linux_load(&sys_info, path, param) == LOADER_NOT_SUPPORT) printk("Unsupported image format\n"); free(path); }
void boot(void) { char *path, *param; /* Copy the incoming path */ fword("2dup"); path = pop_fstr_copy(); /* Boot preloaded kernel */ if (kernel_size) { void (*entry)(unsigned long p1, unsigned long p2, unsigned long p3, unsigned long p4, unsigned long p5); printk("[sparc64] Kernel already loaded\n"); entry = (void *) (unsigned long)kernel_image; entry(0, 0, 0, 0, (unsigned long)&sparc64_of_client_interface); } /* Invoke Linux directly -- probably not supported */ if(!path) { /* No path specified, so grab defaults from /chosen */ push_str("bootpath"); push_str("/chosen"); fword("(find-dev)"); POP(); fword("get-package-property"); POP(); /* Update our local copy of path as well as the one on the stack */ fword("2dup"); path = pop_fstr_copy(); } if (path) { param = strchr(path, ' '); if(param) { *param = '\0'; param++; } else if (cmdline_size) { param = (char *)qemu_cmdline; } else { push_str("boot-args"); push_str("/options"); fword("(find-dev)"); POP(); fword("get-package-property"); POP(); param = pop_fstr_copy(); } /* Invoke platform-specific Linux loader */ linux_load(&sys_info, path, param); free(path); } }