diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c
index 3f09988..ce2de2e 100644
--- a/common/cmd_bootm.c
+++ b/common/cmd_bootm.c
@@ -65,10 +65,8 @@
 static void fixup_silent_linux (void);
 #endif
 
-static void *get_kernel (cmd_tbl_t *cmdtp, int flag,
-		int argc, char *argv[], int verify,
-		bootm_headers_t *images,
-		ulong *os_data, ulong *os_len);
+static void *get_kernel (cmd_tbl_t *cmdtp, int flag,int argc, char *argv[],
+		bootm_headers_t *images, ulong *os_data, ulong *os_len);
 extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
 
 /*
@@ -81,8 +79,7 @@
  */
 typedef void boot_os_fn (cmd_tbl_t *cmdtp, int flag,
 			int argc, char *argv[],
-			bootm_headers_t *images,/* pointers to os/initrd/fdt */
-			int verify);		/* getenv("verify")[0] != 'n' */
+			bootm_headers_t *images); /* pointers to os/initrd/fdt */
 
 extern boot_os_fn do_bootm_linux;
 static boot_os_fn do_bootm_netbsd;
@@ -114,7 +111,6 @@
 	ulong		iflag;
 	const char	*type_name;
 	uint		unc_len = CFG_BOOTM_LEN;
-	int		verify = getenv_verify();
 	uint8_t		comp, type, os;
 
 	void		*os_hdr;
@@ -123,9 +119,10 @@
 	ulong		load_start, load_end;
 
 	memset ((void *)&images, 0, sizeof (images));
+	images.verify = getenv_verify();
 
 	/* get kernel image header, start address and length */
-	os_hdr = get_kernel (cmdtp, flag, argc, argv, verify,
+	os_hdr = get_kernel (cmdtp, flag, argc, argv,
 			&images, &os_data, &os_len);
 	if (os_len == 0)
 		return 1;
@@ -246,36 +243,36 @@
 #ifdef CONFIG_SILENT_CONSOLE
 	    fixup_silent_linux();
 #endif
-	    do_bootm_linux (cmdtp, flag, argc, argv, &images, verify);
+	    do_bootm_linux (cmdtp, flag, argc, argv, &images);
 	    break;
 
 	case IH_OS_NETBSD:
-	    do_bootm_netbsd (cmdtp, flag, argc, argv, &images, verify);
+	    do_bootm_netbsd (cmdtp, flag, argc, argv, &images);
 	    break;
 
 #ifdef CONFIG_LYNXKDI
 	case IH_OS_LYNXOS:
-	    do_bootm_lynxkdi (cmdtp, flag, argc, argv, &images, verify);
+	    do_bootm_lynxkdi (cmdtp, flag, argc, argv, &images);
 	    break;
 #endif
 
 	case IH_OS_RTEMS:
-	    do_bootm_rtems (cmdtp, flag, argc, argv, &images, verify);
+	    do_bootm_rtems (cmdtp, flag, argc, argv, &images);
 	    break;
 
 #if defined(CONFIG_CMD_ELF)
 	case IH_OS_VXWORKS:
-	    do_bootm_vxworks (cmdtp, flag, argc, argv, &images, verify);
+	    do_bootm_vxworks (cmdtp, flag, argc, argv, &images);
 	    break;
 
 	case IH_OS_QNX:
-	    do_bootm_qnxelf (cmdtp, flag, argc, argv, &images, verify);
+	    do_bootm_qnxelf (cmdtp, flag, argc, argv, &images);
 	    break;
 #endif
 
 #ifdef CONFIG_ARTOS
 	case IH_OS_ARTOS:
-	    do_bootm_artos (cmdtp, flag, argc, argv, &images, verify);
+	    do_bootm_artos (cmdtp, flag, argc, argv, &images);
 	    break;
 #endif
 	}
@@ -300,10 +297,8 @@
  *     pointer to image header if valid image was found, plus kernel start
  *     address and length, otherwise NULL
  */
-static void *get_kernel (cmd_tbl_t *cmdtp, int flag,
-		int argc, char *argv[], int verify,
-		bootm_headers_t *images,
-		ulong *os_data, ulong *os_len)
+static void *get_kernel (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
+		bootm_headers_t *images, ulong *os_data, ulong *os_len)
 {
 	image_header_t	*hdr;
 	ulong		img_addr;
@@ -362,7 +357,7 @@
 		show_boot_progress (3);
 		image_print_contents (hdr);
 
-		if (verify) {
+		if (images->verify) {
 			puts ("   Verifying Checksum ... ");
 			if (!image_check_dcrc (hdr)) {
 				printf ("Bad Data CRC\n");
@@ -648,7 +643,7 @@
 
 static void do_bootm_netbsd (cmd_tbl_t *cmdtp, int flag,
 			    int argc, char *argv[],
-			    bootm_headers_t *images, int verify)
+			    bootm_headers_t *images)
 {
 	void (*loader)(bd_t *, image_header_t *, char *, char *);
 	image_header_t *os_hdr, *hdr;
@@ -731,7 +726,7 @@
 #ifdef CONFIG_LYNXKDI
 static void do_bootm_lynxkdi (cmd_tbl_t *cmdtp, int flag,
 			     int argc, char *argv[],
-			     bootm_headers_t *images, int verify)
+			     bootm_headers_t *images)
 {
 	image_header_t *hdr = images->legacy_hdr_os;
 
@@ -748,7 +743,7 @@
 
 static void do_bootm_rtems (cmd_tbl_t *cmdtp, int flag,
 			   int argc, char *argv[],
-			   bootm_headers_t *images, int verify)
+			   bootm_headers_t *images)
 {
 	image_header_t *hdr = images->legacy_hdr_os;
 	void (*entry_point)(bd_t *);
@@ -777,7 +772,7 @@
 #if defined(CONFIG_CMD_ELF)
 static void do_bootm_vxworks (cmd_tbl_t *cmdtp, int flag,
 			     int argc, char *argv[],
-			     bootm_headers_t *images, int verify)
+			     bootm_headers_t *images)
 {
 	char str[80];
 	image_header_t *hdr = images->legacy_hdr_os;
@@ -796,7 +791,7 @@
 
 static void do_bootm_qnxelf(cmd_tbl_t *cmdtp, int flag,
 			    int argc, char *argv[],
-			    bootm_headers_t *images, int verify)
+			    bootm_headers_t *images)
 {
 	char *local_args[2];
 	char str[16];
@@ -819,7 +814,7 @@
 #if defined(CONFIG_ARTOS) && defined(CONFIG_PPC)
 static void do_bootm_artos (cmd_tbl_t *cmdtp, int flag,
 			   int argc, char *argv[],
-			   bootm_headers_t *images, int verify)
+			   bootm_headers_t *images)
 {
 	ulong top;
 	char *s, *cmdline;
