Module Name:    src
Committed By:   scole
Date:           Fri Aug  5 16:53:36 UTC 2016

Modified Files:
        src/sys/arch/ia64/ia64: support.S

Log Message:
PR port-ia64/51261

Use common/lib/libc/arch/ia64/string/bzero.S and other string functions


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/ia64/ia64/support.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/ia64/ia64/support.S
diff -u src/sys/arch/ia64/ia64/support.S:1.6 src/sys/arch/ia64/ia64/support.S:1.7
--- src/sys/arch/ia64/ia64/support.S:1.6	Sun Aug  8 18:18:58 2010
+++ src/sys/arch/ia64/ia64/support.S	Fri Aug  5 16:53:36 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: support.S,v 1.6 2010/08/08 18:18:58 chs Exp $	*/
+/*	$NetBSD: support.S,v 1.7 2016/08/05 16:53:36 scole Exp $	*/
 
 /*-
  * Copyright (c) 1998 Doug Rabson
@@ -769,84 +769,10 @@ ENTRY(copyoutstr, 4)
 	st8	[loc2]=r0			// kill the fault handler.
 	mov	ar.pfs=loc0			// restore ar.pfs
 	mov	rp=loc1				// restore ra.
-	br.ret.sptk.few rp			// ret0 left over from bcopy
+	br.ret.sptk.few rp			// ret0 left over from copystr
 END(copyoutstr)
 
 /*
- * Not the fastest bcopy in the world.
- */
-ENTRY(bcopy, 3)
-	mov	ret0=r0				// return zero for copy{in,out}
-	;;
-	cmp.le	p6,p0=in2,r0			// bail if len <= 0
-(p6)	br.ret.spnt.few rp
-
-	sub	r14=in1,in0 ;;			// check for overlap
-	cmp.ltu	p6,p0=r14,in2			// dst-src < len
-(p6)	br.cond.spnt.few 5f
-
-	extr.u	r14=in0,0,3			// src & 7
-	extr.u	r15=in1,0,3 ;;			// dst & 7
-	cmp.eq	p6,p0=r14,r15			// different alignment?
-(p6)	br.cond.spnt.few 2f			// branch if same alignment
-
-1:	ld1	r14=[in0],1 ;;			// copy bytewise
-	st1	[in1]=r14,1
-	add	in2=-1,in2 ;;			// len--
-	cmp.ne	p6,p0=r0,in2
-(p6)	br.cond.dptk.few 1b			// loop
-	br.ret.sptk.few rp			// done
-
-2:	cmp.eq	p6,p0=r14,r0			// aligned?
-(p6)	br.cond.sptk.few 4f
-
-3:	ld1	r14=[in0],1 ;;			// copy bytewise
-	st1	[in1]=r14,1
-	extr.u	r15=in0,0,3			// src & 7
-	add	in2=-1,in2 ;;			// len--
-	cmp.eq	p6,p0=r0,in2			// done?
-	cmp.eq	p7,p0=r0,r15 ;;			// aligned now?
-(p6)	br.ret.spnt.few rp			// return if done
-(p7)	br.cond.spnt.few 4f			// go to main copy
-	br.cond.sptk.few 3b			// more bytes to copy
-
-	// At this point, in2 is non-zero
-
-4:	mov	r14=8 ;;
-	cmp.ltu	p6,p0=in2,r14 ;;		// len < 8?
-(p6)	br.cond.spnt.few 1b			// byte copy the end
-	ld8	r15=[in0],8 ;;			// copy word
-	st8	[in1]=r15,8
-	add	in2=-8,in2 ;;			// len -= 8
-	cmp.ne	p6,p0=r0,in2			// done?
-(p6)	br.cond.spnt.few 4b			// again
-
-	br.ret.sptk.few rp			// return
-
-	// Don't bother optimising overlap case
-
-5:	add	in0=in0,in2
-	add	in1=in1,in2 ;;
-	add	in0=-1,in0
-	add	in1=-1,in1 ;;
-
-6:	ld1	r14=[in0],-1 ;;
-	st1	[in1]=r14,-1
-	add	in2=-1,in2 ;;
-	cmp.ne	p6,p0=r0,in2
-(p6)	br.cond.spnt.few 6b
-
-	br.ret.sptk.few rp
-END(bcopy)
-
-ENTRY(memcpy,3)
-	mov	r14=in0 ;;
-	mov	in0=in1 ;;
-	mov	in1=r14
-	br.cond.sptk.few bcopy
-END(memcpy)
-
-/*
  * int kcopy(const void *from, void *to, size_t len);
  * Copy len bytes, abort on fault.
  */
@@ -876,12 +802,13 @@ ENTRY(kcopy, 3)
 	mov	out0=in0
 	mov	out1=in1
 	mov	out2=in2
+	mov	ret0=r0				// XXX netbsd kcopy same as freebsd?
 	;;
 	br.call.sptk.few rp=bcopy		// do the copy.
 	st8	[loc2]=r0			// kill the fault handler.
 	mov	ar.pfs=loc0			// restore ar.pfs
 	mov	rp=loc1				// restore ra.
-	br.ret.sptk.few rp			// ret0 left over from bcopy
+	br.ret.sptk.few rp
 END(kcopy)
 
 ENTRY(copyin, 3)
@@ -914,12 +841,13 @@ ENTRY(copyin, 3)
 	mov	out0=in0
 	mov	out1=in1
 	mov	out2=in2
+	mov	ret0=r0				// return zero for copy{in,out}
 	;;
 	br.call.sptk.few rp=bcopy		// do the copy.
 	st8	[loc2]=r0			// kill the fault handler.
 	mov	ar.pfs=loc0			// restore ar.pfs
 	mov	rp=loc1				// restore ra.
-	br.ret.sptk.few rp			// ret0 left over from bcopy
+	br.ret.sptk.few rp
 END(copyin)
 
 ENTRY(copyout, 3)
@@ -952,12 +880,13 @@ ENTRY(copyout, 3)
 	mov	out0=in0
 	mov	out1=in1
 	mov	out2=in2
+	mov	ret0=r0				// return zero for copy{in,out}
 	;;
 	br.call.sptk.few rp=bcopy		// do the copy.
 	st8	[loc2]=r0			// kill the fault handler.
 	mov	ar.pfs=loc0			// restore ar.pfs
 	mov	rp=loc1				// restore ra.
-	br.ret.sptk.few rp			// ret0 left over from bcopy
+	br.ret.sptk.few rp
 END(copyout)
 
 ENTRY(copyerr, 0)

Reply via email to