Messages in this thread | | | Date | Tue, 27 Dec 2005 22:22:32 -0600 | From | Matt Mackall <> | Subject | Re: [PATCH 2 of 3] memcpy32 for x86_64 |
| |
On Tue, Dec 27, 2005 at 03:41:56PM -0800, Bryan O'Sullivan wrote: > Introduce an x86_64-specific memcpy32 routine. The routine is similar > to memcpy, but is guaranteed to work in units of 32 bits at a time. > > Signed-off-by: Bryan O'Sullivan <bos@pathscale.com> > > diff -r 7b7b442a4d63 -r 042b7d9004ac arch/x86_64/kernel/x8664_ksyms.c > --- a/arch/x86_64/kernel/x8664_ksyms.c Tue Dec 27 15:41:48 2005 -0800 > +++ b/arch/x86_64/kernel/x8664_ksyms.c Tue Dec 27 15:41:48 2005 -0800 > @@ -150,6 +150,8 @@ > extern void * memcpy(void *,const void *,__kernel_size_t); > extern void * __memcpy(void *,const void *,__kernel_size_t); > > +extern void memcpy32(void *,const void *,__kernel_size_t);
It's better to do an include here. Duplicating prototypes in .c files is frowned upon (despite the fact that it's already done here).
> + > EXPORT_SYMBOL(memset); > EXPORT_SYMBOL(strlen); > EXPORT_SYMBOL(memmove); > @@ -164,6 +166,8 @@ > EXPORT_SYMBOL(memcpy); > EXPORT_SYMBOL(__memcpy); > > +EXPORT_SYMBOL_GPL(memcpy32); > +
We've been steadily moving towards grouping EXPORTs with function definitions. Do *_ksyms.c exist solely to provide exports for functions defined in assembly at this point? If so, perhaps we ought to come up with a suitable export macro for asm files.
> diff -r 7b7b442a4d63 -r 042b7d9004ac arch/x86_64/lib/memcpy32.S > --- /dev/null Thu Jan 1 00:00:00 1970 +0000 > +++ b/arch/x86_64/lib/memcpy32.S Tue Dec 27 15:41:48 2005 -0800 > @@ -0,0 +1,25 @@ > +/* > + * Copyright (c) 2003, 2004, 2005 PathScale, Inc. > + */ > + > +/* > + * memcpy32 - Copy a memory block, 32 bits at a time. > + * > + * Count is number of dwords; it need not be a qword multiple. > + * Input: > + * rdi destination > + * rsi source > + * rdx count > + */ > + > + .globl memcpy32 > +memcpy32: > + movl %edx,%ecx > + shrl $1,%ecx > + andl $1,%edx > + rep > + movsq > + movl %edx,%ecx > + rep > + movsd > + ret
Any reason this needs its own .S file? One wonders if the
.p2align 4
in memcpy.S is appropriate here too. Splitting rep movsq across two lines is a little weird to me too, but I see Andi did it too.
-- Mathematics is the supreme nostalgia of our time. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |