aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Swetland <swetland@google.com>2011-01-31 01:11:58 -0800
committerVikram Pandita <vikram.pandita@ti.com>2011-01-31 09:57:05 -0800
commit9661a5172098ebb5253cf243434d528c2046eaf7 (patch)
tree4013e3d93d16fc6e94b5331a1c9dce75d4012d7a
parent06412edffa3bd5941888f07fa7b6505e1a3db908 (diff)
downloadu-boot-pandroid-9661a5172098ebb5253cf243434d528c2046eaf7.tar.gz
further booti cleanup
- print kernel/ramdisk addresses before booting - deal with no-ramdisk case correctly Signed-off-by: Brian Swetland <swetland@google.com>
-rw-r--r--common/cmd_bootm.c23
-rw-r--r--lib_arm/armlinux.c18
2 files changed, 19 insertions, 22 deletions
diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c
index fe794817..8cf22c68 100644
--- a/common/cmd_bootm.c
+++ b/common/cmd_bootm.c
@@ -1483,6 +1483,8 @@ int do_booti (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
return -1;
#endif
} else {
+ unsigned kaddr, raddr;
+
/* set this aside somewhere safe */
memcpy(hdr, (void*) addr, sizeof(*hdr));
@@ -1491,18 +1493,19 @@ int do_booti (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
return do_fastboot(NULL, 0, 0, NULL);
}
- memmove((void*) hdr->kernel_addr,
- (void*) (addr + hdr->page_size),
- hdr->kernel_size);
- memmove((void*) hdr->ramdisk_addr,
- (void*) (addr + hdr->page_size +
- ALIGN(hdr->kernel_size, hdr->page_size)),
- hdr->ramdisk_size);
- }
+ bootimg_print_image_hdr(hdr);
+ kaddr = addr + hdr->page_size;
+ raddr = kaddr + ALIGN(hdr->kernel_size, hdr->page_size);
+
+ memmove((void*) hdr->kernel_addr, kaddr, hdr->kernel_size);
+ memmove((void*) hdr->ramdisk_addr, raddr, hdr->ramdisk_size);
+ }
- bootimg_print_image_hdr(hdr);
- do_booti_linux(hdr->ramdisk_addr, hdr);
+ printf("kernel @ %08x (%d)\n", hdr->kernel_addr, hdr->kernel_size);
+ printf("ramdisk @ %08x (%d)\n", hdr->ramdisk_addr, hdr->ramdisk_size);
+
+ do_booti_linux(hdr);
puts ("booti: Control returned to monitor - resetting...\n");
do_reset (cmdtp, flag, argc, argv);
diff --git a/lib_arm/armlinux.c b/lib_arm/armlinux.c
index cde82f0f..06573729 100644
--- a/lib_arm/armlinux.c
+++ b/lib_arm/armlinux.c
@@ -272,7 +272,7 @@ void do_bootm_linux (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
}
-void do_booti_linux (ulong initrd_start_addr, boot_img_hdr *bootimg_header_data)
+void do_booti_linux (boot_img_hdr *hdr)
{
ulong initrd_start, initrd_end;
void (*theKernel)(int zero, int arch, uint params);
@@ -281,18 +281,12 @@ void do_booti_linux (ulong initrd_start_addr, boot_img_hdr *bootimg_header_data)
char *commandline = getenv ("bootargs");
#endif
- theKernel = (void (*)(int, int, uint))(bootimg_header_data->kernel_addr);
+ theKernel = (void (*)(int, int, uint))(hdr->kernel_addr);
- initrd_start = initrd_start_addr;;
- initrd_end = initrd_start + bootimg_header_data->ramdisk_size;
+ initrd_start = hdr->ramdisk_addr;
+ initrd_end = initrd_start + hdr->ramdisk_size;
-#if defined (CONFIG_SETUP_MEMORY_TAGS) || \
- defined (CONFIG_CMDLINE_TAG) || \
- defined (CONFIG_INITRD_TAG) || \
- defined (CONFIG_SERIAL_TAG) || \
- defined (CONFIG_REVISION_TAG) || \
- defined (CONFIG_LCD) || \
- defined (CONFIG_VFD)
+#if defined (CONFIG_SETUP_MEMORY_TAGS)
setup_start_tag (bd);
#ifdef CONFIG_SERIAL_TAG
setup_serial_tag (&params);
@@ -307,7 +301,7 @@ void do_booti_linux (ulong initrd_start_addr, boot_img_hdr *bootimg_header_data)
setup_commandline_tag (bd, commandline);
#endif
#ifdef CONFIG_INITRD_TAG
- if (initrd_start && initrd_end)
+ if (hdr->ramdisk_size)
setup_initrd_tag (bd, initrd_start, initrd_end);
#endif
#if defined (CONFIG_VFD) || defined (CONFIG_LCD)