[U-Boot] [PATCH v2 16/18] bootvx: Exit if bootline address is not specified

Bin Meng bmeng.cn at gmail.com
Thu Apr 12 05:02:21 UTC 2018


Exit the 'bootvx' command if bootline address is not specified.

Signed-off-by: Bin Meng <bmeng.cn at gmail.com>
---

Changes in v2: None

 cmd/elf.c | 109 ++++++++++++++++++++++++++++++--------------------------------
 1 file changed, 53 insertions(+), 56 deletions(-)

diff --git a/cmd/elf.c b/cmd/elf.c
index 22ff254..0c84664 100644
--- a/cmd/elf.c
+++ b/cmd/elf.c
@@ -303,76 +303,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,
-- 
2.7.4



More information about the U-Boot mailing list