[U-Boot-Users] [PATCH] Memory footprint optimizations

Bartlomiej Sieka tur at semihalf.com
Wed Apr 9 23:37:34 CEST 2008


As suggested by Wolfgang Denk:
- remove wrappers for image printing function
- merge getenv_verify and getenv_autostart into one parametrized function

Signed-off-by: Bartlomiej Sieka <tur at semihalf.com>
---

 board/mpl/common/common_util.c |    2 +-
 board/siemens/common/fpga.c    |    2 +-
 common/cmd_autoscript.c        |    2 +-
 common/cmd_bootm.c             |   14 +++++++------
 common/cmd_doc.c               |    4 ++--
 common/cmd_fdc.c               |    4 ++--
 common/cmd_ide.c               |    4 ++--
 common/cmd_nand.c              |    8 ++++---
 common/cmd_scsi.c              |    4 ++--
 common/cmd_usb.c               |    4 ++--
 common/cmd_ximg.c              |    4 ++--
 common/image.c                 |   43 ++++++++--------------------------------
 include/image.h                |    9 +++-----
 lib_ppc/bootm.c                |    2 +-
 tools/mkimage.c                |    6 +++---
 15 files changed, 42 insertions(+), 70 deletions(-)

diff --git a/board/mpl/common/common_util.c b/board/mpl/common/common_util.c
index 785d204..5bbd0d3 100644
--- a/board/mpl/common/common_util.c
+++ b/board/mpl/common/common_util.c
@@ -192,7 +192,7 @@ mpl_prg_image(uchar *ld_addr)
 		puts("Bad Magic Number\n");
 		return 1;
 	}
-	image_print_contents (hdr);
+	image_print_contents (hdr, "   ");
 	if (!image_check_os (hdr, IH_OS_U_BOOT)) {
 		puts("No U-Boot Image\n");
 		return 1;
diff --git a/board/siemens/common/fpga.c b/board/siemens/common/fpga.c
index 48c1850..ac0022e 100644
--- a/board/siemens/common/fpga.c
+++ b/board/siemens/common/fpga.c
@@ -160,7 +160,7 @@ static int fpga_load (fpga_t* fpga, ulong addr, int checkall)
     data = (uchar*)image_get_data (hdr);
     len  = image_get_data_size (hdr);
 
-    verify = getenv_verify ();
+    verify = getenv_yesno ("verify");
     if (verify) {
 	if (!image_check_dcrc (hdr)) {
 	    strcpy (msg, "Bad Image Data CRC");
diff --git a/common/cmd_autoscript.c b/common/cmd_autoscript.c
index 1a37b90..932f638 100644
--- a/common/cmd_autoscript.c
+++ b/common/cmd_autoscript.c
@@ -65,7 +65,7 @@ autoscript (ulong addr, const char *fit_uname)
 	size_t		fit_len;
 #endif
 
-	verify = getenv_verify ();
+	verify = getenv_yesno ("verify");
 
 	switch (genimg_get_format ((void *)addr)) {
 	case IMAGE_FORMAT_LEGACY:
diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c
index 9e5ce4b..94988d9 100644
--- a/common/cmd_bootm.c
+++ b/common/cmd_bootm.c
@@ -133,8 +133,8 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 	struct lmb lmb;
 
 	memset ((void *)&images, 0, sizeof (images));
-	images.verify = getenv_verify();
-	images.autostart = getenv_autostart();
+	images.verify = getenv_yesno ("verify");
+	images.autostart = getenv_yesno ("autostart");
 	images.lmb = &lmb;
 
 	lmb_init(&lmb);
@@ -377,7 +377,7 @@ static image_header_t *image_get_kernel (ulong img_addr, int verify)
 	}
 
 	show_boot_progress (3);
-	image_print_contents (hdr);
+	image_print_contents (hdr, "   ");
 
 	if (verify) {
 		puts ("   Verifying Checksum ... ");
@@ -714,7 +714,7 @@ static int image_info (ulong addr)
 			return 1;
 		}
 
-		image_print_contents (hdr);
+		image_print_contents (hdr, "   ");
 
 		puts ("   Verifying Checksum ... ");
 		if (!image_check_dcrc (hdr)) {
@@ -732,7 +732,7 @@ static int image_info (ulong addr)
 			return 1;
 		}
 
-		fit_print_contents (hdr);
+		fit_print_contents (hdr, "   ");
 		return 0;
 #endif
 	default:
@@ -781,7 +781,7 @@ int do_imls (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 					goto next_sector;
 
 				printf ("Legacy Image at %08lX:\n", (ulong)hdr);
-				image_print_contents (hdr);
+				image_print_contents (hdr, "   ");
 
 				puts ("   Verifying Checksum ... ");
 				if (!image_check_dcrc (hdr)) {
@@ -796,7 +796,7 @@ int do_imls (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 					goto next_sector;
 
 				printf ("FIT Image at %08lX:\n", (ulong)hdr);
-				fit_print_contents (hdr);
+				fit_print_contents (hdr, "   ");
 				break;
 #endif
 			default:
diff --git a/common/cmd_doc.c b/common/cmd_doc.c
index 83aba37..1b645e5 100644
--- a/common/cmd_doc.c
+++ b/common/cmd_doc.c
@@ -268,7 +268,7 @@ int do_docboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 	case IMAGE_FORMAT_LEGACY:
 		hdr = (image_header_t *)addr;
 
-		image_print_contents (hdr);
+		image_print_contents (hdr, "   ");
 
 		cnt = image_get_image_size (hdr);
 		break;
@@ -305,7 +305,7 @@ int do_docboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 #if defined(CONFIG_FIT)
 	/* This cannot be done earlier, we need complete FIT image in RAM first */
 	if (genimg_get_format ((void *)addr) == IMAGE_FORMAT_FIT)
-		fit_print_contents ((const void *)addr);
+		fit_print_contents ((const void *)addr, "   ");
 #endif
 
 	/* Loading ok, update default load address */
diff --git a/common/cmd_fdc.c b/common/cmd_fdc.c
index bf28370..2097a54 100644
--- a/common/cmd_fdc.c
+++ b/common/cmd_fdc.c
@@ -842,7 +842,7 @@ int do_fdcboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 	switch (genimg_get_format ((void *)addr)) {
 	case IMAGE_FORMAT_LEGACY:
 		hdr = (image_header_t *)addr;
-		image_print_contents (hdr);
+		image_print_contents (hdr, "   ");
 
 		imsize = image_get_image_size (hdr);
 		break;
@@ -882,7 +882,7 @@ int do_fdcboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 #if defined(CONFIG_FIT)
 	/* This cannot be done earlier, we need complete FIT image in RAM first */
 	if (genimg_get_format ((void *)addr) == IMAGE_FORMAT_FIT)
-		fit_print_contents ((const void *)addr);
+		fit_print_contents ((const void *)addr, "   ");
 #endif
 
 	/* Loading ok, update default load address */
diff --git a/common/cmd_ide.c b/common/cmd_ide.c
index 8ace970..c2ba996 100644
--- a/common/cmd_ide.c
+++ b/common/cmd_ide.c
@@ -462,7 +462,7 @@ int do_diskboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 		}
 		show_boot_progress (50);
 
-		image_print_contents (hdr);
+		image_print_contents (hdr, "   ");
 
 		cnt = image_get_image_size (hdr);
 		break;
@@ -501,7 +501,7 @@ int do_diskboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 #if defined(CONFIG_FIT)
 	/* This cannot be done earlier, we need complete FIT image in RAM first */
 	if (genimg_get_format ((void *)addr) == IMAGE_FORMAT_FIT)
-		fit_print_contents ((const void *)addr);
+		fit_print_contents ((const void *)addr, "   ");
 #endif
 
 	/* Loading ok, update default load address */
diff --git a/common/cmd_nand.c b/common/cmd_nand.c
index 7b1f830..d92c554 100644
--- a/common/cmd_nand.c
+++ b/common/cmd_nand.c
@@ -520,7 +520,7 @@ static int nand_load_image(cmd_tbl_t *cmdtp, nand_info_t *nand,
 		hdr = (image_header_t *)addr;
 
 		show_boot_progress (57);
-		image_print_contents (hdr);
+		image_print_contents (hdr, "   ");
 
 		cnt = image_get_image_size (hdr);
 		break;
@@ -566,7 +566,7 @@ static int nand_load_image(cmd_tbl_t *cmdtp, nand_info_t *nand,
 #if defined(CONFIG_FIT)
 	/* This cannot be done earlier, we need complete FIT image in RAM first */
 	if (genimg_get_format ((void *)addr) == IMAGE_FORMAT_FIT)
-		fit_print_contents ((const void *)addr);
+		fit_print_contents ((const void *)addr, "   ");
 #endif
 
 	/* Loading ok, update default load address */
@@ -1013,7 +1013,7 @@ int do_nandboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 	switch (genimg_get_format ((void *)addr)) {
 	case IMAGE_FORMAT_LEGACY:
 		hdr = (image_header_t *)addr;
-		image_print_contents (hdr);
+		image_print_contents (hdr, "   ");
 
 		cnt = image_get_image_size (hdr);
 		cnt -= SECTORSIZE;
@@ -1051,7 +1051,7 @@ int do_nandboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 #if defined(CONFIG_FIT)
 	/* This cannot be done earlier, we need complete FIT image in RAM first */
 	if (genimg_get_format ((void *)addr) == IMAGE_FORMAT_FIT)
-		fit_print_contents ((const void *)addr);
+		fit_print_contents ((const void *)addr, "   ");
 #endif
 
 	/* Loading ok, update default load address */
diff --git a/common/cmd_scsi.c b/common/cmd_scsi.c
index f49531e..bc3dedb 100644
--- a/common/cmd_scsi.c
+++ b/common/cmd_scsi.c
@@ -285,7 +285,7 @@ int do_scsiboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 			return 1;
 		}
 
-		image_print_contents (hdr);
+		image_print_contents (hdr, "   ");
 		cnt = image_get_image_size (hdr);
 		break;
 #if defined(CONFIG_FIT)
@@ -318,7 +318,7 @@ int do_scsiboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 #if defined(CONFIG_FIT)
 	/* This cannot be done earlier, we need complete FIT image in RAM first */
 	if (genimg_get_format ((void *)addr) == IMAGE_FORMAT_FIT)
-		fit_print_contents ((const void *)addr);
+		fit_print_contents ((const void *)addr, "   ");
 #endif
 
 	/* Loading ok, update default load address */
diff --git a/common/cmd_usb.c b/common/cmd_usb.c
index 23413b5..62dead5 100644
--- a/common/cmd_usb.c
+++ b/common/cmd_usb.c
@@ -397,7 +397,7 @@ int do_usbboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 			return 1;
 		}
 
-		image_print_contents (hdr);
+		image_print_contents (hdr, "   ");
 
 		cnt = image_get_image_size (hdr);
 		break;
@@ -431,7 +431,7 @@ int do_usbboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 #if defined(CONFIG_FIT)
 	/* This cannot be done earlier, we need complete FIT image in RAM first */
 	if (genimg_get_format ((void *)addr) == IMAGE_FORMAT_FIT)
-		fit_print_contents ((const void *)addr);
+		fit_print_contents ((const void *)addr, "   ");
 #endif
 
 	/* Loading ok, update default load address */
diff --git a/common/cmd_ximg.c b/common/cmd_ximg.c
index 7916fc1..9e94e1e 100644
--- a/common/cmd_ximg.c
+++ b/common/cmd_ximg.c
@@ -51,7 +51,7 @@ do_imgextract(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
 	size_t		fit_len;
 #endif
 
-	verify = getenv_verify ();
+	verify = getenv_yesno ("verify");
 
 	if (argc > 1) {
 		addr = simple_strtoul(argv[1], NULL, 16);
@@ -83,7 +83,7 @@ do_imgextract(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
 			return 1;
 		}
 #ifdef DEBUG
-		image_print_contents (hdr);
+		image_print_contents (hdr, "   ");
 #endif
 
 		if (!image_check_type (hdr, IH_TYPE_MULTI)) {
diff --git a/common/image.c b/common/image.c
index f04826a..35356bd 100644
--- a/common/image.c
+++ b/common/image.c
@@ -316,18 +316,18 @@ static void image_print_type (image_header_t *hdr)
 }
 
 /**
- * __image_print_contents - prints out the contents of the legacy format image
+ * image_print_contents - prints out the contents of the legacy format image
  * @hdr: pointer to the legacy format image header
  * @p: pointer to prefix string
  *
- * __image_print_contents() formats a multi line legacy image contents description.
+ * image_print_contents() formats a multi line legacy image contents description.
  * The routine prints out all header fields followed by the size/offset data
  * for MULTI/SCRIPT images.
  *
  * returns:
  *     no returned results
  */
-static void __image_print_contents (image_header_t *hdr, const char *p)
+void image_print_contents (image_header_t *hdr, const char *p)
 {
 	printf ("%sImage Name:   %.*s\n", p, IH_NMLEN, image_get_name (hdr));
 #if defined(CONFIG_TIMESTAMP) || defined(CONFIG_CMD_DATE) || defined(USE_HOSTCC)
@@ -366,15 +366,6 @@ static void __image_print_contents (image_header_t *hdr, const char *p)
 	}
 }
 
-inline void image_print_contents (image_header_t *hdr)
-{
-	__image_print_contents (hdr, "   ");
-}
-
-inline void image_print_contents_noindent (image_header_t *hdr)
-{
-	__image_print_contents (hdr, "");
-}
 
 #ifndef USE_HOSTCC
 /**
@@ -413,7 +404,7 @@ static image_header_t* image_get_ramdisk (ulong rd_addr, uint8_t arch,
 	}
 
 	show_boot_progress (10);
-	image_print_contents (rd_hdr);
+	image_print_contents (rd_hdr, "   ");
 
 	if (verify) {
 		puts("   Verifying Checksum ... ");
@@ -444,15 +435,9 @@ static image_header_t* image_get_ramdisk (ulong rd_addr, uint8_t arch,
 /* Shared dual-format routines */
 /*****************************************************************************/
 #ifndef USE_HOSTCC
-int getenv_verify (void)
+int getenv_yesno (char *var)
 {
-	char *s = getenv ("verify");
-	return (s && (*s == 'n')) ? 0 : 1;
-}
-
-int getenv_autostart (void)
-{
-	char *s = getenv ("autostart");
+	char *s = getenv (var);
 	return (s && (*s == 'n')) ? 0 : 1;
 }
 
@@ -1265,18 +1250,18 @@ static void fit_get_debug (const void *fit, int noffset,
 }
 
 /**
- * __fit_print_contents - prints out the contents of the FIT format image
+ * fit_print_contents - prints out the contents of the FIT format image
  * @fit: pointer to the FIT format image header
  * @p: pointer to prefix string
  *
- * __fit_print_contents() formats a multi line FIT image contents description.
+ * fit_print_contents() formats a multi line FIT image contents description.
  * The routine prints out FIT image properties (root node level) follwed by
  * the details of each component image.
  *
  * returns:
  *     no returned results
  */
-static void __fit_print_contents (const void *fit, const char *p)
+void fit_print_contents (const void *fit, const char *p)
 {
 	char *desc;
 	char *uname;
@@ -1361,16 +1346,6 @@ static void __fit_print_contents (const void *fit, const char *p)
 	}
 }
 
-inline void fit_print_contents (const void *fit)
-{
-	__fit_print_contents (fit, "   ");
-}
-
-inline void fit_print_contents_noindent (const void *fit)
-{
-	__fit_print_contents (fit, "");
-}
-
 /**
  * fit_image_print - prints out the FIT component image details
  * @fit: pointer to the FIT format image header
diff --git a/include/image.h b/include/image.h
index 36143e2..dbcee1c 100644
--- a/include/image.h
+++ b/include/image.h
@@ -363,8 +363,7 @@ int image_check_hcrc (image_header_t *hdr);
 int image_check_dcrc (image_header_t *hdr);
 #ifndef USE_HOSTCC
 int image_check_dcrc_wd (image_header_t *hdr, ulong chunksize);
-int getenv_verify (void);
-int getenv_autostart (void);
+int getenv_yesno (char *var);
 ulong getenv_bootm_low(void);
 ulong getenv_bootm_size(void);
 void memmove_wd (void *to, void *from, size_t len, ulong chunksz);
@@ -391,8 +390,7 @@ ulong image_multi_count (image_header_t *hdr);
 void image_multi_getimg (image_header_t *hdr, ulong idx,
 			ulong *data, ulong *len);
 
-inline void image_print_contents (image_header_t *hdr);
-inline void image_print_contents_noindent (image_header_t *hdr);
+void image_print_contents (image_header_t *hdr, const char *p);
 
 #ifndef USE_HOSTCC
 static inline int image_check_target_arch (image_header_t *hdr)
@@ -466,8 +464,7 @@ inline int fit_parse_conf (const char *spec, ulong addr_curr,
 inline int fit_parse_subimage (const char *spec, ulong addr_curr,
 		ulong *addr, const char **image_name);
 
-inline void fit_print_contents (const void *fit);
-inline void fit_print_contents_noindent (const void *fit);
+void fit_print_contents (const void *fit, const char *p);
 void fit_image_print (const void *fit, int noffset, const char *p);
 void fit_image_print_hash (const void *fit, int noffset, const char *p);
 
diff --git a/lib_ppc/bootm.c b/lib_ppc/bootm.c
index 2901607..7ba0138 100644
--- a/lib_ppc/bootm.c
+++ b/lib_ppc/bootm.c
@@ -319,7 +319,7 @@ static image_header_t *image_get_fdt (ulong fdt_addr)
 {
 	image_header_t *fdt_hdr = (image_header_t *)fdt_addr;
 
-	image_print_contents (fdt_hdr);
+	image_print_contents (fdt_hdr, "   ");
 
 	puts ("   Verifying Checksum ... ");
 	if (!image_check_hcrc (fdt_hdr)) {
diff --git a/tools/mkimage.c b/tools/mkimage.c
index 6e1ff2b..8a55793 100644
--- a/tools/mkimage.c
+++ b/tools/mkimage.c
@@ -229,10 +229,10 @@ NXTARG:		;
 		if (fdt_check_header (ptr)) {
 			/* old-style image */
 			image_verify_header ((char *)ptr, sbuf.st_size);
-			image_print_contents_noindent ((image_header_t *)ptr);
+			image_print_contents ((image_header_t *)ptr, "");
 		} else {
 			/* FIT image */
-			fit_print_contents_noindent (ptr);
+			fit_print_contents (ptr, "");
 		}
 
 		(void) munmap((void *)ptr, sbuf.st_size);
@@ -363,7 +363,7 @@ NXTARG:		;
 
 	image_set_hcrc (hdr, checksum);
 
-	image_print_contents_noindent (hdr);
+	image_print_contents (hdr, "");
 
 	(void) munmap((void *)ptr, sbuf.st_size);
 





More information about the U-Boot mailing list