Dear Albert, Am Mi 21 Sep 2011 16:23:56 CEST schrieb Albert ARIBAUD: > Le 21/09/2011 14:31, Andreas Bießmann a écrit : >> Dear Albert, >> >> Am Mi 21 Sep 2011 14:03:09 CEST schrieb Albert ARIBAUD: >>> Le 21/09/2011 13:20, Andreas Bießmann a écrit : >>>> Dear "GROYER, Anthony", >>>> Dear Albert, >>>> >>>> Am Mi 21 Sep 2011 12:51:33 CEST schrieb Albert ARIBAUD: >>>>> Le 21/09/2011 11:29, GROYER, Anthony a écrit :
<snip> > Apart from your question (how are the number of registers in ldmia and > stmia speed related to the speed of the copy loop?) there is another > one: how do we handle the fact that the length to copy may not be a > multiple of the ldmia/stmia 'width'? Even in arm926ejs/start.S, two > registers are used, but the alignment for text+data is 4 bytes, not 8. Good point. Well, we could implement some 'rewind' apart from .bss zeroing, if we care about it. I guess this could be done without any impact to copy time, if we really save time by using more regs for ldmia/stmia. But how about reading beyond the _end symbol from flash crossing some border e.g. end of address space, end of flash space ... ? > This did not bite us so far, and should not, since we're going to copy > into the space after .text, which *should* be .bss, which we'll zero > right after. But Murphy's law could hit... > >>> As for r8, it should be preserved as it points to gd, but that is >>> ensured by the C code already IIRC. >> >> We use -ffixed-r8 therefore the compiler takes care for the C part, but >> we need to respect this in asm. > > in arm926ejs/start.S we do. If there are other start.S files where r8 > is trashed, they should be fixed indeed. There should no one else left, my last changeset fixed it globally: http://thread.gmane.org/gmane.comp.boot-loaders.u-boot/90010/focus=90013 best regards Andreas Bießmann _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot