PERFORCE change 101790 for review
    Oleksandr Tymoshenko 
    gonzo at FreeBSD.org
       
    Mon Jul 17 19:22:44 UTC 2006
    
    
  
http://perforce.freebsd.org/chv.cgi?CH=101790
Change 101790 by gonzo at gonzo_hq on 2006/07/17 19:22:02
	o Fixed stupid bug in bcmp(3) funtion.
	o copystr(9) implementation added.
Affected files ...
.. //depot/projects/mips2/src/sys/mips/mips/copystr.S#3 edit
.. //depot/projects/mips2/src/sys/mips/mips/support.S#6 edit
Differences ...
==== //depot/projects/mips2/src/sys/mips/mips/copystr.S#3 (text+ko) ====
@@ -36,11 +36,35 @@
 /*
  * XXXMIPS: Implement these routines
  */
-
+/*
+ * copystr(9)
+ * <v0>int copystr(<a0>const void *src, <a1>void *dst, <a2>size_t len,
+ *                 <a3>size_t *done)
+ */
 ENTRY(copystr)
-	break
+	move	v0, zero
+	beqz	a2, 2f
+	move	t1, zero
+1:	subu	a2, 1
+	lbu	t0, 0(a0)
+	addu	a0, 1
+	sb	t0, 0(a1)
+	addu	a1, 1
+	beqz	t0, 3f /* NULL  - end of string*/
+	addu	t1, 1
+	bnez	a2, 1b
+	nop
+2:	/* ENAMETOOLONG */
+	li	v0, ENAMETOOLONG
+3:	/* done != NULL -> how many bytes were copied */
+	beqz	a3, 4f
+	nop
+	sw	t1, 0(a3)
+4:	jr	ra
+	nop
 END(copystr)
 
+
 ENTRY(copyinstr)
 	break
 END(copyinstr)
==== //depot/projects/mips2/src/sys/mips/mips/support.S#6 (text+ko) ====
@@ -58,7 +58,7 @@
 	nop
 END(bcopy)
 
-/* XXXMIPS: test/optimize this function. 
+/* 
  * The normal C bcmp(3),
  * <v0>int bcmp(<a0>const void *b1, <a1>const void *b2, <a2>size_t len)
  */
@@ -68,7 +68,8 @@
 1:	subu	a2, 1
 	lbu	t0, 0(a0)
 	lbu	t1, 0(a1)
-	bne	t0, t1, 3f
+	bne	t0, t1, 2f
+	nop
 	addu	a0, 1
 	addu	a1, 1
 	bnezl	a2, 1b
    
    
More information about the p4-projects
mailing list