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

Heiko Schocher hs at denx.de
Fri Jul 30 08:00:14 CEST 2010


Hello Peter,

Peter Tyser wrote:
>> +#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?

Ah, Ok, I can try it. This will then result, that this patch can go
direct to mainline, right?

As I see in the code, this should be possible for the following
architectures:

avr32
m68k
mips

I make a patch for this, but couldn;t test it ...

bye
Heiko
-- 
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