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
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to