On Mon, Feb 24, 2014 at 11:08:11AM -0800, H. Peter Anvin wrote: > On 01/27/2014 10:57 AM, Vivek Goyal wrote: > > + > > +/** > > + * memcpy - Copy one area of memory to another > > + * @dest: Where to copy to > > + * @src: Where to copy from > > + * @count: The size of the area. > > + */ > > +static void *memcpy(void *dest, const void *src, unsigned long count) > > +{ > > + char *tmp = dest; > > + const char *s = src; > > + > > + while (count--) > > + *tmp++ = *s++; > > + return dest; > > +} > > + > > +static int memcmp(const void *cs, const void *ct, size_t count) > > +{ > > + const unsigned char *su1, *su2; > > + int res = 0; > > + > > + for (su1 = cs, su2 = ct; 0 < count; ++su1, ++su2, count--) > > + if ((res = *su1 - *su2) != 0) > > + break; > > + return res; > > +} > > + > > <bikeshed> > > There multiple implementations of memcpy(), memcmp() and memset() in > this patchset, and they make my eyes want to bleed (especially > memcmp()). Can we centralize there, and perhaps even share code with > the stuff in arch/x86/boot already? > > </bikeshed> Hi hpa, There is multiple implementation of memcpy() only (sha256.c and purgatory.c). I will merge the two and make them use single definition of memcpy(). I can't see multiple implementation of memcpy() and memcmp() in purgatory code. W.r.t sharing the code with arch/x86/boot/, I am not sure how to do it. I see two implementations of memcpy() under arch/x86/boot. One is in copy.S. This is assembly code and looks like is supposed to run in 16bit mode. (code16). Other one is in compressed/misc.c and there are two definitions, one for 32bit and one fore 64bit. I am not sure why there is a need to write memcpy() in assembly when C will do just fine for my case. I don't have to write two versions of memcpy() and use it both for 32bit and 64bit. So I can just make all the purgatory code share same version of memcpy(), memcmp() and memset(), is that fine. I have taken implementations of these functions from lib/string.c Thanks Vivek > > -hpa