patch-2.4.0-test2 linux/arch/ia64/lib/copy_user.S

Next file: linux/arch/ia64/lib/do_csum.S
Previous file: linux/arch/ia64/lib/copy_page.S
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.4.0-test1/linux/arch/ia64/lib/copy_user.S linux/arch/ia64/lib/copy_user.S
@@ -29,6 +29,8 @@
  * 	- fix extraneous stop bit introduced by the EX() macro.
  */
 
+#include <asm/asmmacro.h>
+
 // The label comes first because our store instruction contains a comma
 // and confuse the preprocessor otherwise
 //
@@ -81,10 +83,9 @@
  	.psr	abi64
  	.psr	lsb
 
- 	.align	16
- 	.global	__copy_user
- 	.proc	__copy_user
-__copy_user:
+GLOBAL_ENTRY(__copy_user)
+	UNW(.prologue)
+	UNW(.save ar.pfs, saved_pfs)
 	alloc saved_pfs=ar.pfs,3,((2*PIPE_DEPTH+7)&~7),0,((2*PIPE_DEPTH+7)&~7)
 
 	.rotr val1[PIPE_DEPTH],val2[PIPE_DEPTH]
@@ -95,13 +96,17 @@
 
 	;;			// RAW of cfm when len=0
 	cmp.eq p8,p0=r0,len	// check for zero length
+	UNW(.save ar.lc, saved_lc)
 	mov saved_lc=ar.lc	// preserve ar.lc (slow)
 (p8)	br.ret.spnt.few rp	// empty mempcy()
 	;;
 	add enddst=dst,len	// first byte after end of source
 	add endsrc=src,len	// first byte after end of destination
+	UNW(.save pr, saved_pr)
 	mov saved_pr=pr		// preserve predicates
 
+	UNW(.body)
+
 	mov dst1=dst		// copy because of rotation
 	mov ar.ec=PIPE_DEPTH
 	mov pr.rot=1<<16	// p16=true all others are false
@@ -400,7 +405,4 @@
 
 	mov ar.pfs=saved_pfs
 	br.ret.dptk.few rp
-
-
- 	.endp __copy_user
-
+END(__copy_user)

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