aboutsummaryrefslogtreecommitdiffstats
path: root/lib_sparc
diff options
context:
space:
mode:
authorKumar Gala <galak@kernel.crashing.org>2008-08-15 08:24:41 -0500
committerWolfgang Denk <wd@denx.de>2008-08-26 23:41:43 +0200
commit396f635b8ff3ccbc38d75d5eda98444c6466810a (patch)
treeb819dfe09006f81737958700fc697458568c0c12 /lib_sparc
parente906cfae08e8cc2447f59b1bc4c22ab9c3c286d2 (diff)
downloadu-boot-midas-396f635b8ff3ccbc38d75d5eda98444c6466810a.tar.gz
u-boot-midas-396f635b8ff3ccbc38d75d5eda98444c6466810a.tar.bz2
u-boot-midas-396f635b8ff3ccbc38d75d5eda98444c6466810a.zip
bootm: refactor image detection and os load steps
Created a bootm_start() that handles the parsing and detection of all the images that will be used by the bootm command (OS, ramdisk, fdt). As part of this we now tract all the relevant image offsets in the bootm_headers_t struct. This will allow us to have all the needed state for future sub-commands and lets us reduce a bit of arch specific code on SPARC. Created a bootm_load_os() that deals with decompression and loading the OS image. Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
Diffstat (limited to 'lib_sparc')
-rw-r--r--lib_sparc/bootm.c19
1 files changed, 1 insertions, 18 deletions
diff --git a/lib_sparc/bootm.c b/lib_sparc/bootm.c
index aac05e4b26..f3abdcfdc4 100644
--- a/lib_sparc/bootm.c
+++ b/lib_sparc/bootm.c
@@ -87,7 +87,6 @@ void do_bootm_linux(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[],
bootm_headers_t * images)
{
char *bootargs;
- ulong load;
ulong initrd_start, initrd_end;
ulong rd_len;
unsigned int data, len, checksum;
@@ -96,24 +95,8 @@ void do_bootm_linux(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[],
struct lmb *lmb = &images->lmb;
int ret;
- if (images->legacy_hdr_valid) {
- load = image_get_load(images->legacy_hdr_os);
-#if defined(CONFIG_FIT)
- } else if (images->fit_uname_os) {
- ret = fit_image_get_load(images->fit_hdr_os,
- images->fit_noffset_os, &load);
- if (ret) {
- puts("Can't get load address property!\n");
- goto error;
- }
-#endif
- } else {
- puts("Could not find kernel entry point!\n");
- goto error;
- }
-
/* Get virtual address of kernel start */
- linux_hdr = (void *)load;
+ linux_hdr = (void *)images->os.load;
/* */
kernel = (void (*)(struct linux_romvec *, void *))images->ep;