diff options
author | Bin Meng <bmeng.cn@gmail.com> | 2018-04-11 22:02:21 -0700 |
---|---|---|
committer | Bin Meng <bmeng.cn@gmail.com> | 2018-04-16 22:38:53 +0800 |
commit | ced71a2f72e296d08d87ec377ea91e9c48b528d6 (patch) | |
tree | 0a1695f22a504579a83b5b50b16f51d8f41f22c6 | |
parent | 7824ad6ad494c4489fdd997212b5566638fc840b (diff) | |
download | u-boot-ced71a2f72e296d08d87ec377ea91e9c48b528d6.tar.gz u-boot-ced71a2f72e296d08d87ec377ea91e9c48b528d6.tar.bz2 u-boot-ced71a2f72e296d08d87ec377ea91e9c48b528d6.zip |
bootvx: Exit if bootline address is not specified
Exit the 'bootvx' command if bootline address is not specified.
Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
-rw-r--r-- | cmd/elf.c | 109 |
1 files changed, 53 insertions, 56 deletions
@@ -304,76 +304,73 @@ int do_bootvx(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) tmp = env_get("bootaddr"); if (!tmp) { printf("## VxWorks bootline address not specified\n"); - } else { - bootaddr = simple_strtoul(tmp, NULL, 16); + return 1; + } + + bootaddr = simple_strtoul(tmp, NULL, 16); + + /* + * Check to see if the bootline is defined in the 'bootargs' parameter. + * If it is not defined, we may be able to construct the info. + */ + bootline = env_get("bootargs"); + if (!bootline) { + tmp = env_get("bootdev"); + if (tmp) { + strcpy(build_buf, tmp); + ptr = strlen(tmp); + } else { + printf("## VxWorks boot device not specified\n"); + } + + tmp = env_get("bootfile"); + if (tmp) + ptr += sprintf(build_buf + ptr, "host:%s ", tmp); + else + ptr += sprintf(build_buf + ptr, "host:vxWorks "); /* - * Check to see if the bootline is defined in the 'bootargs' - * parameter. If it is not defined, we may be able to - * construct the info. + * The following parameters are only needed if 'bootdev' + * is an ethernet device, otherwise they are optional. */ - bootline = env_get("bootargs"); - if (!bootline) { - tmp = env_get("bootdev"); + tmp = env_get("ipaddr"); + if (tmp) { + ptr += sprintf(build_buf + ptr, "e=%s", tmp); + tmp = env_get("netmask"); if (tmp) { - strcpy(build_buf, tmp); - ptr = strlen(tmp); - } else - printf("## VxWorks boot device not specified\n"); - - tmp = env_get("bootfile"); - if (tmp) - ptr += sprintf(build_buf + ptr, - "host:%s ", tmp); - else + u32 mask = env_get_ip("netmask").s_addr; ptr += sprintf(build_buf + ptr, - "host:vxWorks "); - - /* - * The following parameters are only needed if 'bootdev' - * is an ethernet device, otherwise they are optional. - */ - tmp = env_get("ipaddr"); - if (tmp) { - ptr += sprintf(build_buf + ptr, "e=%s", tmp); - tmp = env_get("netmask"); - if (tmp) { - u32 mask = env_get_ip("netmask").s_addr; - ptr += sprintf(build_buf + ptr, - ":%08x ", ntohl(mask)); - } else { - ptr += sprintf(build_buf + ptr, " "); - } + ":%08x ", ntohl(mask)); + } else { + ptr += sprintf(build_buf + ptr, " "); } + } - tmp = env_get("serverip"); - if (tmp) - ptr += sprintf(build_buf + ptr, "h=%s ", tmp); - - tmp = env_get("gatewayip"); - if (tmp) - ptr += sprintf(build_buf + ptr, "g=%s ", tmp); + tmp = env_get("serverip"); + if (tmp) + ptr += sprintf(build_buf + ptr, "h=%s ", tmp); - tmp = env_get("hostname"); - if (tmp) - ptr += sprintf(build_buf + ptr, "tn=%s ", tmp); + tmp = env_get("gatewayip"); + if (tmp) + ptr += sprintf(build_buf + ptr, "g=%s ", tmp); - tmp = env_get("othbootargs"); - if (tmp) { - strcpy(build_buf + ptr, tmp); - ptr += strlen(tmp); - } + tmp = env_get("hostname"); + if (tmp) + ptr += sprintf(build_buf + ptr, "tn=%s ", tmp); - bootline = build_buf; + tmp = env_get("othbootargs"); + if (tmp) { + strcpy(build_buf + ptr, tmp); + ptr += strlen(tmp); } - memcpy((void *)bootaddr, bootline, - max(strlen(bootline), (size_t)255)); - flush_cache(bootaddr, max(strlen(bootline), (size_t)255)); - printf("## Using bootline (@ 0x%lx): %s\n", bootaddr, - (char *)bootaddr); + bootline = build_buf; } + memcpy((void *)bootaddr, bootline, max(strlen(bootline), (size_t)255)); + flush_cache(bootaddr, max(strlen(bootline), (size_t)255)); + printf("## Using bootline (@ 0x%lx): %s\n", bootaddr, (char *)bootaddr); + #ifdef CONFIG_X86 /* * Get VxWorks's physical memory base address from environment, |