if (!image_check_magic(rd_hdr)) {
puts("Bad Magic Number\n");
- show_boot_progress(-10);
+ show_boot_error(10);
return NULL;
}
if (!image_check_hcrc(rd_hdr)) {
puts("Bad Header Checksum\n");
- show_boot_progress(-11);
+ show_boot_error(11);
return NULL;
}
puts(" Verifying Checksum ... ");
if (!image_check_dcrc(rd_hdr)) {
puts("Bad Data CRC\n");
- show_boot_progress(-12);
+ show_boot_error(12);
return NULL;
}
puts("OK\n");
!image_check_type(rd_hdr, IH_TYPE_RAMDISK)) {
printf("No Linux %s Ramdisk Image\n",
genimg_get_arch_name(arch));
- show_boot_progress(-13);
+ show_boot_error(13);
return NULL;
}
show_boot_progress(120);
if (!fit_check_format(fit_hdr)) {
puts("Bad FIT ramdisk image format!\n");
- show_boot_progress(-120);
+ show_boot_error(120);
return 1;
}
show_boot_progress(121);
if (cfg_noffset < 0) {
puts("Could not find configuration "
"node\n");
- show_boot_progress(-122);
+ show_boot_error(122);
return 1;
}
fit_uname_config = fdt_get_name(fit_hdr,
}
if (rd_noffset < 0) {
puts("Could not find subimage node\n");
- show_boot_progress(-124);
+ show_boot_error(124);
return 1;
}
if (fit_image_get_data(fit_hdr, rd_noffset, &data,
&size)) {
puts("Could not find ramdisk subimage data!\n");
- show_boot_progress(-127);
+ show_boot_error(127);
return 1;
}
show_boot_progress(128);
if (fit_image_get_load(fit_hdr, rd_noffset, &rd_load)) {
puts("Can't get ramdisk subimage load "
"address!\n");
- show_boot_progress(-129);
+ show_boot_error(129);
return 1;
}
show_boot_progress(129);
const image_header_t *fdt_hdr;
ulong fdt_addr;
char *fdt_blob = NULL;
- ulong image_start, image_end;
+ ulong image_start, image_data, image_end;
ulong load_start, load_end;
#if defined(CONFIG_FIT)
void *fit_hdr;
* make sure we don't overwrite initial image
*/
image_start = (ulong)fdt_hdr;
+ image_data = (ulong)image_get_data(fdt_hdr);
image_end = image_get_image_end(fdt_hdr);
load_start = image_get_load(fdt_hdr);
load_end = load_start + image_get_data_size(fdt_hdr);
+ if (load_start == image_start ||
+ load_start == image_data) {
+ fdt_blob = (char *)image_data;
+ break;
+ }
+
if ((load_start < image_end) && (load_end > image_start)) {
fdt_error("fdt overwritten");
goto error;
}
debug(" Loading FDT from 0x%08lx to 0x%08lx\n",
- image_get_data(fdt_hdr), load_start);
+ image_data, load_start);
memmove((void *)load_start,
- (void *)image_get_data(fdt_hdr),
+ (void *)image_data,
image_get_data_size(fdt_hdr));
fdt_blob = (char *)load_start;
puts(" Verifying Hash Integrity ... ");
if (!fit_image_check_hashes(fit, rd_noffset)) {
puts("Bad Data Hash\n");
- show_boot_progress(-125);
+ show_boot_error(125);
return 0;
}
puts("OK\n");
!fit_image_check_type(fit, rd_noffset, IH_TYPE_RAMDISK)) {
printf("No Linux %s Ramdisk Image\n",
genimg_get_arch_name(arch));
- show_boot_progress(-126);
+ show_boot_error(126);
return 0;
}