Module Name:    src
Committed By:   nakayama
Date:           Sun Nov 29 03:31:33 UTC 2009

Modified Files:
        src/sys/arch/sparc64/sparc64: locore.s

Log Message:
- calculate end PA correctly.
- wrap more spitfire specific (flushing I$) code.
- fix inverted #if condition for flushing I$ (and restore ASI_ICACHE_TAG).


To generate a diff of this commit:
cvs rdiff -u -r1.295 -r1.296 src/sys/arch/sparc64/sparc64/locore.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/sparc64/sparc64/locore.s
diff -u src/sys/arch/sparc64/sparc64/locore.s:1.295 src/sys/arch/sparc64/sparc64/locore.s:1.296
--- src/sys/arch/sparc64/sparc64/locore.s:1.295	Sat Nov 28 21:38:55 2009
+++ src/sys/arch/sparc64/sparc64/locore.s	Sun Nov 29 03:31:33 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore.s,v 1.295 2009/11/28 21:38:55 mrg Exp $	*/
+/*	$NetBSD: locore.s,v 1.296 2009/11/29 03:31:33 nakayama Exp $	*/
 
 /*
  * Copyright (c) 1996-2002 Eduardo Horvath
@@ -5948,6 +5948,7 @@
 	tnz	1		! Error!
 #endif
 	add	%o0, %o1, %o1	! End PA
+	dec	%o1
 
 	!!
 	!! Both D$ and I$ tags match pa bits 40-13, but
@@ -5973,7 +5974,9 @@
 	and	%o3, %o2, %o3	! Mask out trash
 	cmp	%o0, %o3
 	blt,pt	%xcc, 2f	! Too low
+#ifdef SPITFIRE
 	 sllx	%g1, 40-35, %g1	! Shift I$ tag into place
+#endif
 	cmp	%o1, %o3
 	bgt,pt	%xcc, 2f	! Too high
 	 nop
@@ -5985,13 +5988,14 @@
 	stxa	%g0, [%o4] ASI_DCACHE_INVALIDATE ! Just right
 #endif
 2:
-#ifndef SPITFIRE
+#ifdef SPITFIRE
+	and	%g1, %o2, %g1	! Mask out trash
 	cmp	%o0, %g1
 	blt,pt	%xcc, 3f
 	 cmp	%o1, %g1
-	bgt,pt	%icc, 3f
+	bgt,pt	%xcc, 3f
 	 nop
-	stxa	%g0, [%o4] ASI_DCACHE_INVALIDATE
+	stxa	%g0, [%o4] ASI_ICACHE_TAG
 3:
 #endif
 	membar	#StoreLoad

Reply via email to