diff --git a/common/env_common.c b/common/env_common.c
index a188fa3..2b11e73 100755
--- a/common/env_common.c
+++ b/common/env_common.c
@@ -303,3 +303,54 @@
 	return found;
 }
 #endif
+
+int env_restore_defaults(void)
+{
+	int i;
+	const uchar delim = '=';
+	const int default_env_size = sizeof(default_environment) - 1;
+	char *s;
+	uchar *key = NULL;
+	uchar *val = NULL;
+	uchar *tmp_null = NULL;
+	for (i = 0; i < default_env_size; ++i) {
+		if (key == NULL) {
+			key = default_environment + i;
+		}
+		/* If delim is encountered, we know to check for key/val. */
+		if (default_environment[i] == delim) {
+			/* Ignore empty keys. */
+			if (key == (default_environment + i)) {
+				return -1;
+			}
+			/*
+			 * Does in-place changing of null terminator to avoid
+			 * extra buffers.
+			 */
+			tmp_null = default_environment + i;
+			val = tmp_null + 1;
+			*tmp_null = '\0';
+			s = getenv(key);
+			if (!s) {
+				setenv(key, val);
+			}
+			*tmp_null = delim;
+			/*
+			 * Advances pointer until we encounter the end of the
+			 * 'val' string.
+			 */
+			for ( ; i < default_env_size; ++i) {
+				if (default_environment[i] == '\0') {
+					break;
+				}
+			}
+			key = NULL;
+		}
+	}
+	if (key != NULL && *key != '\0') {
+		printf("%s: incomplete parsing while restoring env.\n", __FILE__);
+		printf("\tPlease check default_environment var\n");
+		return -1;
+	}
+	return 0;
+}
diff --git a/common/main.c b/common/main.c
index 46b2564..80e16bb 100755
--- a/common/main.c
+++ b/common/main.c
@@ -29,6 +29,9 @@
 #include <watchdog.h>
 #include <command.h>
 
+#define XMK_STR(x)	#x
+#define MK_STR(x)	XMK_STR(x)
+
 #ifdef CONFIG_MODEM_SUPPORT
 #include <malloc.h>		/* for free() prototype */
 #endif
@@ -405,24 +408,20 @@
 	}
 	else
 #endif /* CONFIG_BOOTCOUNT_LIMIT */
-		s = getenv ("bootcmd");
-       if (!s) {
-#ifdef CONFIG_ROOTFS_FLASH
-           /* XXX if rootfs is in flash, expect uImage to be in flash */
-#ifdef CONFIG_AR7100
-           setenv ("bootcmd", "bootm 0xbf200000");
-#else
-           setenv ("bootcmd", "bootm 0xbf450000");
-#endif /* CONFIG_AR7100 */
-#else
-           setenv ("bootcmd", "tftpboot 0x8022c090 uImage; bootm 0x8022c090");
-#endif
-       }
 
 #ifdef CONFIG_DUALIMAGE_SUPPORT
 		findbdr(0);
 #endif
-		s = getenv ("bootcmd");
+
+	if (env_restore_defaults()) {
+		printf("Warning: Unable to completely restore default env.\n");
+	}
+
+	s = getenv ("bootcmd");
+	if (!s) {
+		setenv("bootcmd", CONFIG_BOOTCOMMAND);
+		s = CONFIG_BOOTCOMMAND;
+	}
 
 //	debug ("### main_loop: bootcmd=\"%s\"\n", s ? s : "<UNDEFINED>");
 
diff --git a/include/common.h b/include/common.h
index a39a27c..2d7aa6c 100755
--- a/include/common.h
+++ b/include/common.h
@@ -223,6 +223,9 @@
 const char *get_uboot_name(const char *sysvar_name);
 void delete_uboot_vars(void);
 
+/* common/env_common.c */
+int env_restore_defaults(void);
+
 /* common/cmd_nvedit.c */
 int	env_init     (void);
 void	env_relocate (void);
