[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v2 07/17] xen: arm32: add optimised memchr routine
This isn't used enough to be critical, but it completes the set of mem*. Taken from Linux v3.14-rc7. Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> Acked-by: Julien Grall <julien.grall@xxxxxxxxxx> --- xen/arch/arm/arm32/lib/Makefile | 2 +- xen/arch/arm/arm32/lib/memchr.S | 28 ++++++++++++++++++++++++++++ xen/include/asm-arm/string.h | 3 +++ 3 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 xen/arch/arm/arm32/lib/memchr.S diff --git a/xen/arch/arm/arm32/lib/Makefile b/xen/arch/arm/arm32/lib/Makefile index 4cf41f4..fa4e241 100644 --- a/xen/arch/arm/arm32/lib/Makefile +++ b/xen/arch/arm/arm32/lib/Makefile @@ -1,4 +1,4 @@ -obj-y += memcpy.o memmove.o memset.o memzero.o +obj-y += memcpy.o memmove.o memset.o memchr.o memzero.o obj-y += findbit.o setbit.o obj-y += setbit.o clearbit.o changebit.o obj-y += testsetbit.o testclearbit.o testchangebit.o diff --git a/xen/arch/arm/arm32/lib/memchr.S b/xen/arch/arm/arm32/lib/memchr.S new file mode 100644 index 0000000..fd64ed8 --- /dev/null +++ b/xen/arch/arm/arm32/lib/memchr.S @@ -0,0 +1,28 @@ +/* + * linux/arch/arm/lib/memchr.S + * + * Copyright (C) 1995-2000 Russell King + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * ASM optimised string functions + */ + +#include <xen/config.h> + +#include "assembler.h" + + .text + .align 5 +ENTRY(memchr) +1: subs r2, r2, #1 + bmi 2f + ldrb r3, [r0], #1 + teq r3, r1 + bne 1b + sub r0, r0, #1 +2: movne r0, #0 + mov pc, lr +ENDPROC(memchr) diff --git a/xen/include/asm-arm/string.h b/xen/include/asm-arm/string.h index abfa9d2..2c9f4f7 100644 --- a/xen/include/asm-arm/string.h +++ b/xen/include/asm-arm/string.h @@ -14,6 +14,9 @@ extern void *memmove(void *dest, const void *src, size_t n); #define __HAVE_ARCH_MEMSET extern void * memset(void *, int, __kernel_size_t); +#define __HAVE_ARCH_MEMCHR +extern void * memchr(const void *, int, __kernel_size_t); + extern void __memzero(void *ptr, __kernel_size_t n); #define memset(p,v,n) \ -- 1.7.10.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |