Module Name:    src
Committed By:   matt
Date:           Mon Jul 22 03:30:38 UTC 2013

Modified Files:
        src/sys/arch/m68k/m68k: oc_cksum.s

Log Message:
Use motorola syntax
Adjust for coldfire
(no binary difference for non-coldfire


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/m68k/m68k/oc_cksum.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/m68k/m68k/oc_cksum.s
diff -u src/sys/arch/m68k/m68k/oc_cksum.s:1.6 src/sys/arch/m68k/m68k/oc_cksum.s:1.7
--- src/sys/arch/m68k/m68k/oc_cksum.s:1.6	Fri Dec 23 05:06:19 2011
+++ src/sys/arch/m68k/m68k/oc_cksum.s	Mon Jul 22 03:30:38 2013
@@ -1,4 +1,4 @@
-|	$NetBSD: oc_cksum.s,v 1.6 2011/12/23 05:06:19 tsutsui Exp $
+|	$NetBSD: oc_cksum.s,v 1.7 2013/07/22 03:30:38 matt Exp $
 
 | Copyright (c) 1988 Regents of the University of California.
 | All rights reserved.
@@ -91,10 +91,10 @@
 	.text
 
 ENTRY(oc_cksum)
-	movl	%sp@(4),%a0	| get buffer ptr
-	movl	%sp@(8),%d1	| get byte count
-	movl	%sp@(12),%d0	| get starting value
-	movl	%d2,%sp@-	| free a reg
+	movl	4(%sp),%a0	| get buffer ptr
+	movl	8(%sp),%d1	| get byte count
+	movl	12(%sp),%d0	| get starting value
+	movl	%d2,-(%sp)	| free a reg
 
 	| test for possible 1, 2 or 3 bytes of excess at end
 	| of buffer.  The usual case is no excess (the usual
@@ -108,56 +108,85 @@ ENTRY(oc_cksum)
 	btst	#1,%d1
 	jne	L7		| if two bytes excess
 L1:
-	movl	%d1,%d2
+#ifdef __mcoldfire__
+	movq	#-4,%d2		| mask to clear bottom two bits
+	andl	%d2,%d1		| longword truncate length
+	movl	%d1,%d2		| move length to d2
+	movl	%d1,%a1		| move length to a1
+	addl	%a0,%a1		| add start so a1 now points to end
+	movq	#0x3c,%d1	| then find fractions of a chunk
+	andl	%d1,%d2
+	negl	%d2
+	subl	%d1,%d1		| this can never carry so X is cleared
+#else
+	movl	%d1,%d2		| move to d2
 	lsrl	#6,%d1		| make cnt into # of 64 byte chunks
 	andl	#0x3c,%d2	| then find fractions of a chunk
 	negl	%d2
 	andb	#0xf,%cc	| clear X
-	jmp	%pc@(L3-.-2:b,%d2)
+#endif
+	jmp	(L3-.-2:b,%pc,%d2)
 L2:
-	movl	%a0@+,%d2
+	movl	(%a0)+,%d2
 	addxl	%d2,%d0
-	movl	%a0@+,%d2
+	movl	(%a0)+,%d2
 	addxl	%d2,%d0
-	movl	%a0@+,%d2
+	movl	(%a0)+,%d2
 	addxl	%d2,%d0
-	movl	%a0@+,%d2
+	movl	(%a0)+,%d2
 	addxl	%d2,%d0
-	movl	%a0@+,%d2
+	movl	(%a0)+,%d2
 	addxl	%d2,%d0
-	movl	%a0@+,%d2
+	movl	(%a0)+,%d2
 	addxl	%d2,%d0
-	movl	%a0@+,%d2
+	movl	(%a0)+,%d2
 	addxl	%d2,%d0
-	movl	%a0@+,%d2
+	movl	(%a0)+,%d2
 	addxl	%d2,%d0
-	movl	%a0@+,%d2
+	movl	(%a0)+,%d2
 	addxl	%d2,%d0
-	movl	%a0@+,%d2
+	movl	(%a0)+,%d2
 	addxl	%d2,%d0
-	movl	%a0@+,%d2
+	movl	(%a0)+,%d2
 	addxl	%d2,%d0
-	movl	%a0@+,%d2
+	movl	(%a0)+,%d2
 	addxl	%d2,%d0
-	movl	%a0@+,%d2
+	movl	(%a0)+,%d2
 	addxl	%d2,%d0
-	movl	%a0@+,%d2
+	movl	(%a0)+,%d2
 	addxl	%d2,%d0
-	movl	%a0@+,%d2
+	movl	(%a0)+,%d2
 	addxl	%d2,%d0
-	movl	%a0@+,%d2
+	movl	(%a0)+,%d2
 	addxl	%d2,%d0
 L3:
+#ifdef __mcoldfire__
+	cmpal	%a0,%a1		| cmpa doesn't affect X
+	bne	L2		| loop until reached
+#else
 	dbra	%d1,L2		| (NB- dbra doesn't affect X)
+#endif
 
 	movl	%d0,%d1		| fold 32 bit sum to 16 bits
 	swap	%d1		| (NB- swap doesn't affect X)
+#ifdef __mcoldfire__
+	mvzw	%d1,%d1		| zero extend %d1 (doesn't affect X)
+	mvzw	%d0,%d0		| zero extend %d0 (doesn't affect X)
+	addxl	%d1,%d0		| 
+	jcc	L4
+	addql	#1,%d0
+#else
 	addxw	%d1,%d0
 	jcc	L4
 	addw	#1,%d0
+#endif
 L4:
+#ifdef __mcoldfire__
+	mvzw	%d0,%d0
+#else
 	andl	#0xffff,%d0
-	movl	%sp@+,%d2
+#endif
+	movl	(%sp)+,%d2
 	rts
 
 L5:	| deal with 1 or 3 excess bytes at the end of the buffer.
@@ -166,18 +195,18 @@ L5:	| deal with 1 or 3 excess bytes at t
 
 	| 3 bytes excess
 	clrl	%d2
-	movw	%a0@(-3,%d1:l),%d2	| add in last full word then drop
+	movw	(-3,%a0,%d1:l),%d2	| add in last full word then drop
 	addl	%d2,%d0		|  through to pick up last byte
 
 L6:	| 1 byte excess
 	clrl	%d2
-	movb	%a0@(-1,%d1:l),%d2
+	movb	(-1,%a0,%d1:l),%d2
 	lsll	#8,%d2
 	addl	%d2,%d0
 	jra	L1
 
 L7:	| 2 bytes excess
 	clrl	%d2
-	movw	%a0@(-2,%d1:l),%d2
+	movw	(-2,%a0,%d1:l),%d2
 	addl	%d2,%d0
 	jra	L1

Reply via email to