summaryrefslogtreecommitdiffstats
path: root/arch/sparc64/lib/VIScsum.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sparc64/lib/VIScsum.S')
-rw-r--r--arch/sparc64/lib/VIScsum.S15
1 files changed, 8 insertions, 7 deletions
diff --git a/arch/sparc64/lib/VIScsum.S b/arch/sparc64/lib/VIScsum.S
index 81b020c49..a370bdff3 100644
--- a/arch/sparc64/lib/VIScsum.S
+++ b/arch/sparc64/lib/VIScsum.S
@@ -1,4 +1,4 @@
-/* $Id: VIScsum.S,v 1.2 1997/08/08 08:34:05 jj Exp $
+/* $Id: VIScsum.S,v 1.3 1998/06/12 14:53:57 jj Exp $
* VIScsum.S: High bandwidth IP checksumming utilizing the UltraSparc
* Visual Instruction Set.
*
@@ -26,6 +26,7 @@
#ifdef __KERNEL__
#include <asm/head.h>
#include <asm/asi.h>
+#include <asm/visasm.h>
#else
#define ASI_BLK_P 0xf0
#define FRPS_FEF 0x04
@@ -278,13 +279,13 @@ csum_partial:
add %o2, 1, %o2 /* IEU0 */
3: cmp %o1, 0xc0 /* IEU1 Group */
blu,pn %icc, 20f /* CTI */
- sllx %o2, 32, %g1 /* IEU0 */
- addcc %o2, %g1, %o2 /* IEU1 Group */
- sub %o1, 0xc0, %o1 /* IEU0 */
- wr %g0, ASI_BLK_P, %asi /* LSU Group */
+ sllx %o2, 32, %g5 /* IEU0 */
#ifdef __KERNEL__
- wr %g0, FPRS_FEF, %fprs /* LSU Group */
+ VISEntry
#endif
+ addcc %o2, %g5, %o2 /* IEU1 Group */
+ sub %o1, 0xc0, %o1 /* IEU0 */
+ wr %g0, ASI_BLK_P, %asi /* LSU Group */
membar #StoreLoad /* LSU Group */
srlx %o2, 32, %o2 /* IEU0 Group */
bcs,a,pn %xcc, 1f /* CTI */
@@ -340,7 +341,7 @@ csum_partial:
END_THE_TRICK(f60,f62,f0,f2,f4,f6,f8,f10,f12,f14,f16,f18,f20,f22,f24,f26,f28,f30)
and %o1, 0x3f, %o1 /* IEU0 Group */
#ifdef __KERNEL__
- wr %g0, 0, %fprs /* LSU Group */
+ VISExit
#endif
20: andcc %o1, 0xf0, %g1 /* IEU1 Group */
be,pn %icc, 23f /* CTI */