diff options
Diffstat (limited to 'common/cmd_pxe.c')
| -rw-r--r-- | common/cmd_pxe.c | 11 | 
1 files changed, 10 insertions, 1 deletions
| diff --git a/common/cmd_pxe.c b/common/cmd_pxe.c index 5e3505c24..4e2811e15 100644 --- a/common/cmd_pxe.c +++ b/common/cmd_pxe.c @@ -579,6 +579,7 @@ static int label_localboot(struct pxe_label *label)  static int label_boot(struct pxe_label *label)  {  	char *bootm_argv[] = { "bootm", NULL, NULL, NULL, NULL }; +	char initrd_str[22];  	int bootm_argc = 3;  	label_print(label); @@ -604,7 +605,10 @@ static int label_boot(struct pxe_label *label)  			return 1;  		} -		bootm_argv[2] = getenv("ramdisk_addr_r"); +		bootm_argv[2] = initrd_str; +		strcpy(bootm_argv[2], getenv("ramdisk_addr_r")); +		strcat(bootm_argv[2], ":"); +		strcat(bootm_argv[2], getenv("filesize"));  	} else {  		bootm_argv[2] = "-";  	} @@ -649,6 +653,11 @@ static int label_boot(struct pxe_label *label)  		bootm_argc = 4;  	do_bootm(NULL, 0, bootm_argc, bootm_argv); + +#ifdef CONFIG_CMD_BOOTZ +	/* Try booting a zImage if do_bootm returns */ +	do_bootz(NULL, 0, bootm_argc, bootm_argv); +#endif  	return 1;  } |