[U-Boot] [RFC][PATCH 02/19] relocation: fixup cmdtable

Peter Tyser ptyser at xes-inc.com
Thu Jul 29 17:38:24 CEST 2010


> +#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;
> +		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++;
> +	}
> +}

A number of other arches have this same logic in arch-specific code, eg
arch/mips/lib/board.c.  Could you also convert them to use the new
fixup_cmdtable() in this patch?

Best,
Peter



More information about the U-Boot mailing list