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
- Lines: 70
- Date:
Thu Feb 24 22:52:30 2000
- Orig file:
v2.3.47/linux/arch/mips/lib/strncpy_user.S
- Orig date:
Fri Jun 25 17:40:13 1999
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)