[PATCH] env: fix cmd_env_sub fct pointers if CONFIG_RELOC_FIXUP_WORKS is not defined

Heiko Schocher hs at denx.de
Mon Oct 4 10:28:58 CEST 2010


commit ea882baf9c17cd142c99e3ff640d3ab01daa5cec introduces
a command_sub_table for the "env" command. On arm, avr32, m68k,
mips and sparc architectures, relocation needs manual fixups,
so add this for this sub command table too.

Tested on the qong board.

Signed-off-by: Heiko Schocher <hs at denx.de>
---
 common/cmd_nvedit.c |    6 ++++++
 common/env_common.c |    5 +++++
 2 files changed, 11 insertions(+), 0 deletions(-)

diff --git a/common/cmd_nvedit.c b/common/cmd_nvedit.c
index c3d63b8..16f5fb0 100644
--- a/common/cmd_nvedit.c
+++ b/common/cmd_nvedit.c
@@ -837,6 +837,12 @@ static cmd_tbl_t cmd_env_sub[] = {
 	U_BOOT_CMD_MKENT(set, CONFIG_SYS_MAXARGS, 0, do_env_set, "", ""),
 };

+#if !defined(CONFIG_RELOC_FIXUP_WORKS)
+void env_reloc(void) {
+	fixup_cmdtable(cmd_env_sub, ARRAY_SIZE(cmd_env_sub));
+}
+#endif
+
 static int do_env (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
 	cmd_tbl_t *cp;
diff --git a/common/env_common.c b/common/env_common.c
index a415ef8..88f068c 100644
--- a/common/env_common.c
+++ b/common/env_common.c
@@ -227,6 +227,11 @@ int env_import(const char *buf, int check)

 void env_relocate (void)
 {
+#if !defined(CONFIG_RELOC_FIXUP_WORKS)
+	extern void env_reloc(void);
+
+	env_reloc();
+#endif
 	if (gd->env_valid == 0) {
 #if defined(CONFIG_ENV_IS_NOWHERE)	/* Environment not changable */
 		set_default_env(NULL);
-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany


More information about the U-Boot mailing list