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