diff options
| author | Wolfgang Denk <wd@denx.de> | 2010-09-28 23:30:47 +0200 | 
|---|---|---|
| committer | Wolfgang Denk <wd@denx.de> | 2010-09-28 23:30:47 +0200 | 
| commit | 2e6e1772c0e34871769be4aef79748fe3e47d953 (patch) | |
| tree | 00e4e19d7bccd2a1cd5753854ff4c2b8a26bebb0 /common/command.c | |
| parent | 1e4e5ef0469050f014aee1204dae8a9ab6053e49 (diff) | |
| parent | 3df61957938586c512c17e72d83551d190400981 (diff) | |
| download | olio-uboot-2014.01-2e6e1772c0e34871769be4aef79748fe3e47d953.tar.xz olio-uboot-2014.01-2e6e1772c0e34871769be4aef79748fe3e47d953.zip | |
Merge branch 'next' of /home/wd/git/u-boot/next
Conflicts:
	include/ppc4xx.h
Signed-off-by: Wolfgang Denk <wd@denx.de>
Diffstat (limited to 'common/command.c')
| -rw-r--r-- | common/command.c | 40 | 
1 files changed, 39 insertions, 1 deletions
| diff --git a/common/command.c b/common/command.c index 30a9801d9..d47d71977 100644 --- a/common/command.c +++ b/common/command.c @@ -160,6 +160,7 @@ int cmd_usage(cmd_tbl_t *cmdtp)  int var_complete(int argc, char * const argv[], char last_char, int maxv, char *cmdv[])  { +#if 0 /* need to reimplement */  	static char tmp_buf[512];  	int space; @@ -170,7 +171,7 @@ int var_complete(int argc, char * const argv[], char last_char, int maxv, char *  	if (!space && argc == 2)  		return env_complete(argv[1], maxv, cmdv, sizeof(tmp_buf), tmp_buf); - +#endif  	return 0;  } @@ -464,3 +465,40 @@ int cmd_get_data_size(char* arg, int default_size)  	return default_size;  }  #endif + +#if !defined(CONFIG_RELOC_FIXUP_WORKS) +DECLARE_GLOBAL_DATA_PTR; + +void fixup_cmdtable(cmd_tbl_t *cmdtp, int size) +{ +	int	i; + +	if (gd->reloc_off == 0) +		return; + +	for (i = 0; i < size; i++) { +		ulong addr; + +		addr = (ulong) (cmdtp->cmd) + gd->reloc_off; +#if DEBUG_COMMANDS +		printf("Command \"%s\": 0x%08lx => 0x%08lx\n", +		       cmdtp->name, (ulong) (cmdtp->cmd), addr); +#endif +		cmdtp->cmd = +			(int (*)(struct cmd_tbl_s *, int, int, char * const []))addr; +		addr = (ulong)(cmdtp->name) + gd->reloc_off; +		cmdtp->name = (char *)addr; +		if (cmdtp->usage) { +			addr = (ulong)(cmdtp->usage) + gd->reloc_off; +			cmdtp->usage = (char *)addr; +		} +#ifdef	CONFIG_SYS_LONGHELP +		if (cmdtp->help) { +			addr = (ulong)(cmdtp->help) + gd->reloc_off; +			cmdtp->help = (char *)addr; +		} +#endif +		cmdtp++; +	} +} +#endif |