patch-2.1.80 linux/arch/arm/lib/memfastset.S

Next file: linux/arch/arm/lib/string.S
Previous file: linux/arch/arm/lib/memcpy.S
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.1.79/linux/arch/arm/lib/memfastset.S linux/arch/arm/lib/memfastset.S
@@ -0,0 +1,35 @@
+/*
+ * linux/arch/arm/lib/memfastset.S
+ *
+ * Copyright (C) 1995, 1996 Russell King
+ */
+#include <linux/linkage.h>
+#include <asm/assembler.h>
+		.text
+@ Prototype: void memsetl (unsigned long *d, unsigned long c, size_t n);
+
+ENTRY(memsetl)
+		stmfd	sp!, {lr}
+		cmp	r2, #16
+		blt	5f
+		mov	r3, r1
+		mov	ip, r1
+		mov	lr, r1
+		subs	r2, r2, #32
+		bmi	2f
+1:		stmia	r0!, {r1, r3, ip, lr}
+		stmia	r0!, {r1, r3, ip, lr}
+		LOADREGS(eqfd, sp!, {pc})
+		subs	r2, r2, #32
+		bpl	1b
+2:		adds	r2, r2, #16
+		bmi	4f
+3:		stmia	r0!, {r1, r3, ip, lr}
+		LOADREGS(eqfd, sp!, {pc})
+		subs	r2, r2, #16
+		bpl	3b
+4:		add	r2, r2, #16
+5:		subs	r2, r2, #4
+		strge	r1, [r0], #4
+		bgt	5b 
+		LOADREGS(fd, sp!, {pc})

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov