}
strncpy(msgpath, filename, sizeof(msgpath));
+ msgfile = boot; /* Copy all the original paramters */
if (!parse_device_path(msgpath, defdev, defpart, "/etc/yaboot.msg", &msgfile)) {
prom_printf("%s: Unable to parse\n", msgpath);
goto done;
int minlen;
packet = prom_get_netinfo();
+ if (!packet)
+ goto out;
/*
* First, try to match on mac address with the hardware type
if (!label && password)
check_password ("To boot a custom image you must enter the password.");
+ params->kernel = boot; /* Copy all the original paramters */
if (!parse_device_path(imagepath, defdevice, defpart,
"/vmlinux", ¶ms->kernel)) {
prom_printf("%s: Unable to parse\n", imagepath);
strncpy(initrdpath, p, 1024);
DEBUG_F("Parsing initrd path <%s>\n", initrdpath);
+ params->rd = boot; /* Copy all the original paramters */
if (!parse_device_path(initrdpath, defdevice, defpart,
"/root.bin", ¶ms->rd)) {
prom_printf("%s: Unable to parse\n", imagepath);
if (p && *p) {
DEBUG_F("Parsing sysmap path <%s>\n", p);
strncpy(sysmappath, p, 1024);
+ params->sysmap = boot; /* Copy all the original paramters */
if (!parse_device_path(sysmappath, defdevice, defpart,
"/boot/System.map", ¶ms->sysmap)) {
prom_printf("%s: Unable to parse\n", imagepath);
e->e_ident[EI_MAG3] == ELFMAG3 &&
e->e_ident[EI_CLASS] == ELFCLASS64 &&
e->e_ident[EI_DATA] == ELFDATA2MSB &&
- e->e_type == ET_EXEC &&
+ (e->e_type == ET_EXEC || e->e_type == ET_DYN) &&
e->e_machine == EM_PPC64);
}
prom_printf("%s: Unable to parse\n", bootdevice);
return -1;
}
- if (_machine == _MACH_bplan)
+ if (_machine == _MACH_bplan && !conf_given)
boot.part++;
DEBUG_F("After parse_device_path: dev=%s, part=%d, file=%s\n",
boot.dev, boot.part, boot.file);