- } else if (image_check_magic (fdt_hdr)) {
- ulong image_start, image_end;
- ulong load_start, load_end;
-
- printf ("## Flat Device Tree at %08lX\n", fdt_hdr);
- print_image_hdr (fdt_hdr);
-
- image_start = (ulong)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_end) && (load_end > image_start)) {
- fdt_error ("fdt overwritten");
- do_reset (cmdtp, flag, argc, argv);
- }
-
- puts (" Verifying Checksum ... ");
- if (!image_check_hcrc (fdt_hdr)) {
- fdt_error ("fdt header checksum invalid");
- do_reset (cmdtp, flag, argc, argv);
- }
-
- if (!image_check_dcrc (fdt_hdr)) {
- fdt_error ("fdt checksum invalid");
- do_reset (cmdtp, flag, argc, argv);
- }
- puts ("OK\n");
-
- if (!image_check_type (fdt_hdr, IH_TYPE_FLATDT)) {
- fdt_error ("uImage is not a fdt");
- do_reset (cmdtp, flag, argc, argv);
- }
- if (image_get_comp (fdt_hdr) != IH_COMP_NONE) {
- fdt_error ("uImage is compressed");
- do_reset (cmdtp, flag, argc, argv);
- }
- if (fdt_check_header (of_flat_tree + image_get_header_size ()) != 0) {
- fdt_error ("uImage data is not a fdt");
- do_reset (cmdtp, flag, argc, argv);
- }
-
- memmove ((void *)image_get_load (fdt_hdr),
- (void *)(of_flat_tree + image_get_header_size ()),
- image_get_data_size (fdt_hdr));
-
- of_flat_tree = (char *)image_get_load (fdt_hdr);
- } else {
- fdt_error ("Did not find a Flattened Device Tree");
- do_reset (cmdtp, flag, argc, argv);
- }
- printf (" Booting using the fdt at 0x%x\n",
- of_flat_tree);
- } else if (image_check_type (hdr, IH_TYPE_MULTI)) {
- ulong fdt_data, fdt_len;