[U-Boot] [PATCH V2 1/3] memcpy: copy one word at a time if possible
Mark Jackson
mpfj-list at mimc.co.uk
Fri Oct 9 12:11:16 CEST 2009
Chris Moore wrote:
> I agree wholeheartedly with the idea but shouldn't it be more like this
> (untested) code :
>
> void * memcpy(void *dest, const void *src, size_t count)
>
> {
> char *d8, *s8;
> unsigned long *dl = dest, *sl = src;
>
In here, would it be overkill to add byte copying until data is aligned, and
then fall into the aligned copy code.
In that case, you'd still gain a speed increase if you're starting at an unaligned
address ?
> /* while all data is aligned (common case), copy multiple bytes at a time */
> if ( (((int)(long)dest | (int)(long)src) & (sizeof(*dl) - 1)) == 0) {
> while (count >= sizeof(*dl)) {
> *dl++ = *sl++;
> count -= sizeof(*dl);
> }
> }
>
> d8 = (char *)dl;
> s8 = (char *)sl;
>
> /* copy any remaining data byte by byte */
> while (count--)
> *d8++ = *s8++;
>
> return dest;
> }
Regards
Mark
More information about the U-Boot
mailing list