diff options
Diffstat (limited to 'lib_arm/armlinux.c')
| -rw-r--r-- | lib_arm/armlinux.c | 23 | 
1 files changed, 23 insertions, 0 deletions
| diff --git a/lib_arm/armlinux.c b/lib_arm/armlinux.c index 33f86e9ff..2fb8db871 100644 --- a/lib_arm/armlinux.c +++ b/lib_arm/armlinux.c @@ -56,6 +56,13 @@ static void setup_videolfb_tag(gd_t *gd);  static struct tag *params;  #endif /* CONFIG_SETUP_MEMORY_TAGS || CONFIG_CMDLINE_TAG || CONFIG_INITRD_TAG */ +#ifdef CONFIG_SHOW_BOOT_PROGRESS +# include <status_led.h> +# define SHOW_BOOT_PROGRESS(arg)	show_boot_progress(arg) +#else +# define SHOW_BOOT_PROGRESS(arg) +#endif +  extern image_header_t header;           /* from cmd_bootm.c */ @@ -80,6 +87,8 @@ void do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],       * Check if there is an initrd image       */      if (argc >= 3) { +	SHOW_BOOT_PROGRESS (9); +  	addr = simple_strtoul(argv[2], NULL, 16);  	printf ("## Loading Ramdisk Image at %08lx ...\n", addr); @@ -89,6 +98,7 @@ void do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],  	if (ntohl(hdr->ih_magic) != IH_MAGIC) {  	    printf ("Bad Magic Number\n"); +	    SHOW_BOOT_PROGRESS (-10);  	    do_reset (cmdtp, flag, argc, argv);  	} @@ -100,9 +110,12 @@ void do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],  	if (crc32 (0, (char *)data, len) != checksum) {  	    printf ("Bad Header Checksum\n"); +	    SHOW_BOOT_PROGRESS (-11);  	    do_reset (cmdtp, flag, argc, argv);  	} +	SHOW_BOOT_PROGRESS (10); +  	print_image_hdr (hdr);  	data = addr + sizeof(image_header_t); @@ -115,15 +128,19 @@ void do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],  	    csum = crc32 (0, (char *)data, len);  	    if (csum != ntohl(hdr->ih_dcrc)) {  		printf ("Bad Data CRC\n"); +	        SHOW_BOOT_PROGRESS (-12);  		do_reset (cmdtp, flag, argc, argv);  	    }  	    printf ("OK\n");  	} +	SHOW_BOOT_PROGRESS (11); +  	if ((hdr->ih_os   != IH_OS_LINUX)	||  	    (hdr->ih_arch != IH_CPU_ARM)	||  	    (hdr->ih_type != IH_TYPE_RAMDISK)	) {  	    printf ("No Linux ARM Ramdisk Image\n"); +	    SHOW_BOOT_PROGRESS (-13);  	    do_reset (cmdtp, flag, argc, argv);  	} @@ -134,6 +151,8 @@ void do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],  	ulong tail    = ntohl(len_ptr[0]) % 4;  	int i; +	SHOW_BOOT_PROGRESS (13); +  	/* skip kernel length and terminator */  	data = (ulong)(&len_ptr[2]);  	/* skip any additional image length fields */ @@ -151,6 +170,8 @@ void do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],  	/*  	 * no initrd image  	 */ +        SHOW_BOOT_PROGRESS (14); +  	data = 0;      } @@ -168,6 +189,8 @@ void do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],  	initrd_end = 0;      } +    SHOW_BOOT_PROGRESS (15); +  #ifdef DEBUG      printf ("## Transferring control to Linux (at address %08lx) ...\n",  	    (ulong)theKernel); |