patch-2.4.21 linux-2.4.21/arch/ia64/lib/memcpy_mck.S
Next file: linux-2.4.21/arch/ia64/lib/swiotlb.c
Previous file: linux-2.4.21/arch/ia64/lib/carta_random.S
Back to the patch index
Back to the overall index
- Lines: 66
- Date:
2003-06-13 07:51:29.000000000 -0700
- Orig file:
linux-2.4.20/arch/ia64/lib/memcpy_mck.S
- Orig date:
2002-11-28 15:53:09.000000000 -0800
diff -urN linux-2.4.20/arch/ia64/lib/memcpy_mck.S linux-2.4.21/arch/ia64/lib/memcpy_mck.S
@@ -6,7 +6,10 @@
* in1: source address
* in2: number of bytes to copy
* Output:
- * 0 if success, or number of byte NOT copied if error occurred.
+ * for bcopy: return nothing
+ * for memcpy: return dest
+ * for copy_user: 0 if success,
+ * or number of bytes NOT copied if error occurred.
*
* Copyright (C) 2002 Intel Corp.
* Copyright (C) 2002 Ken Chen <kenneth.w.chen@intel.com>
@@ -21,15 +24,6 @@
# define EK(y,x...) x
#endif
-GLOBAL_ENTRY(bcopy)
- .regstk 3,0,0,0
- mov r8=in0
- mov in0=in1
- ;;
- mov in1=r8
- ;;
-END(bcopy)
-
/* McKinley specific optimization */
#define retval r8
@@ -82,10 +76,19 @@
#define in1 r33
#define in2 r34
+GLOBAL_ENTRY(bcopy)
+ .regstk 3,0,0,0
+ mov r8=in0 // swap the src and dest arguments
+ mov in0=in1
+ ;;
+ mov in1=r8
+ ;;
+END(bcopy) // fall through to memcpy
GLOBAL_ENTRY(memcpy)
and r28=0x7,in0
and r29=0x7,in1
mov f6=f0
+ mov retval=in0
br.cond.sptk .common_code
;;
END(memcpy)
@@ -97,7 +100,7 @@
mov f6=f1
mov saved_in0=in0 // save dest pointer
mov saved_in1=in1 // save src pointer
- mov saved_in2=in2 // save len
+ mov retval=r0 // initialize return value
;;
.common_code:
cmp.gt p15,p0=8,in2 // check for small size
@@ -105,7 +108,7 @@
cmp.ne p14,p0=0,r29 // check src alignment
add src0=0,in1
sub r30=8,r28 // for .align_dest
- mov retval=r0 // initialize return value
+ mov saved_in2=in2 // save len
;;
add dst0=0,in0
add dst1=1,in0 // dest odd index
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)