
30 Jul
2010
30 Jul
'10
8 a.m.
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