patch-2.3.48 linux/arch/mips/lib/strncpy_user.S

Next file: linux/arch/mips/lib/strnlen_user.S
Previous file: linux/arch/mips/lib/strlen_user.S
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.3.47/linux/arch/mips/lib/strncpy_user.S linux/arch/mips/lib/strncpy_user.S
@@ -1,13 +1,10 @@
-/*
- * arch/mips/lib/strncpy_user.S
+/* $Id: strncpy_user.S,v 1.4 1999/12/04 03:59:00 ralf Exp $
  *
  * This file is subject to the terms and conditions of the GNU General Public
  * License.  See the file "COPYING" in the main directory of this archive
  * for more details.
  *
- * Copyright (c) 1996 by Ralf Baechle
- *
- * $Id: strncpy_user.S,v 1.2 1998/05/04 09:12:54 ralf Exp $
+ * Copyright (c) 1996, 1999 by Ralf Baechle
  */
 #include <linux/errno.h>
 #include <asm/asm.h>
@@ -32,32 +29,31 @@
  */
 
 LEAF(__strncpy_from_user_asm)
-	lw	v0, THREAD_CURDS($28)		# pointer ok?
-	subu	v0, zero, v0
+	lw	v0, THREAD_CURDS($28)	# pointer ok?
 	and	v0, a1
-	nor	v0, zero, v0
-	beqz	v0, fault
+	bltz	v0, fault
+
 EXPORT(__strncpy_from_user_nocheck_asm)
-	move		v0,zero
-	move		v1,a1
-	.set		noreorder
+	move	v0, zero
+	move	v1, a1
+	.set	noreorder
 1:	EX(lbu,	 t0, (v1), fault)
-	LONG_ADDIU	v1,1
-	beqz		t0,2f
-	 sb		t0,(a0)
-	LONG_ADDIU	v0,1
-	bne		v0,a2,1b
-	 LONG_ADDIU	a0,1
-	.set		reorder
-2:	LONG_ADDU	t0,a1,v0
-	xor		t0,a1
-	bltz		t0,fault
-	jr		ra			# return n
+	addiu	v1, v1, 1
+	beqz	t0, 2f
+	 sb	t0, (a0)
+	addiu	v0, 1
+	bne	v0, a2, 1b
+	 addiu	a0, 1
+	.set	reorder
+2:	addu	t0, a1, v0
+	xor	t0, a1
+	bltz	t0, fault
+	jr	ra				# return n
 	END(__strncpy_from_user_asm)
 
-fault:	li		v0,-EFAULT
-	jr		ra
+fault:	li	v0, -EFAULT
+	jr	ra
 
-	.section	__ex_table,"a"
-	PTR		1b,fault
+	.section __ex_table,"a"
+	PTR	1b, fault
 	.previous

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)