env: fix cmd_env_sub fct pointers if CONFIG_RELOC_FIXUP_WORKS is not defined
authorHeiko Schocher <hs@denx.de>
Tue, 5 Oct 2010 12:17:00 +0000 (14:17 +0200)
committerWolfgang Denk <wd@denx.de>
Wed, 6 Oct 2010 20:34:30 +0000 (22:34 +0200)
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 these fixups for this sub command table too.

Tested on arm/qong board.
          mips board (Ben NanoNote) from Xiangfu Liu
          arm/AT91 board from Reinhard Meyer

Signed-off-by: Heiko Schocher <hs@denx.de>
cc: Wolfgang Denk <wd@denx.de>
cc: Shinya Kuribayashi <skuribay@ruby.dti.ne.jp>
cc: Xiangfu Liu <xiangfu@openmobilefree.net>
cc: Reinhard Meyer <u-boot@emk-elektronik.de>
cc: sshtylyov@mvista.com

common/cmd_nvedit.c
common/env_common.c

index c3d63b8a4329b11ad113b985772809a9c1b437b9..3d30c321d5bae2a845fa2d00ab3db3ed8d4d3a4c 100644 (file)
@@ -837,6 +837,13 @@ 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;
index a415ef8efe5d9ba19e2eff4b5c1a990cae08f3fb..88f068cc38b8e9785569d87c328ae70034a4d395 100644 (file)
@@ -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);