Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 1 Jan 2003 14:08:56 -0800 (PST)
From:      Marcel Moolenaar <marcel@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 23030 for review
Message-ID:  <200301012208.h01M8uvE028288@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help

http://perforce.freebsd.org/chv.cgi?CH=23030

Change 23030 by marcel@marcel_nfs on 2003/01/01 14:08:12

	In map_pal_code() and map_port_space(), purge the TRs
	before we insert a new translation. This avoids machine
	checks when overlapping translations already exist.

Affected files ...

.. //depot/projects/ia64/sys/ia64/ia64/machdep.c#58 edit

Differences ...

==== //depot/projects/ia64/sys/ia64/ia64/machdep.c#58 (text+ko) ====

@@ -293,19 +293,20 @@
 	pte.pte_ar = PTE_AR_RWX;
 	pte.pte_ppn = ia64_pal_base >> 12;
 
-	__asm __volatile("mov	%0=psr;;" : "=r" (psr));
-	__asm __volatile("rsm	psr.ic|psr.i;;");
-	__asm __volatile("srlz.d");
+	__asm __volatile("ptr.d %0,%1; ptr.i %0,%1" ::
+	    "r"(IA64_PHYS_TO_RR7(ia64_pal_base)), "r"(28 << 2));
+
+	__asm __volatile("mov	%0=psr" : "=r"(psr));
+	__asm __volatile("rsm	psr.ic|psr.i");
+	__asm __volatile("srlz.i");
 	__asm __volatile("mov	cr.ifa=%0" ::
 	    "r"(IA64_PHYS_TO_RR7(ia64_pal_base)));
-	__asm __volatile("mov	cr.itir=%0;;" :: "r"(28 << 2));
-	__asm __volatile("itr.d	dtr[%0]=%1;;" :: "r"(1),
-	    "r"(*(u_int64_t*)&pte));
+	__asm __volatile("mov	cr.itir=%0" :: "r"(28 << 2));
+	__asm __volatile("itr.d	dtr[%0]=%1" :: "r"(1), "r"(*(u_int64_t*)&pte));
 	__asm __volatile("srlz.d");		/* XXX not needed. */
-	__asm __volatile("itr.i	itr[%0]=%1;;" :: "r"(1),
-	    "r"(*(u_int64_t*)&pte));
+	__asm __volatile("itr.i	itr[%0]=%1" :: "r"(1), "r"(*(u_int64_t*)&pte));
 	__asm __volatile("mov	psr.l=%0" :: "r" (psr));
-	__asm __volatile("srlz.i;;");
+	__asm __volatile("srlz.i");
 }
 
 void
@@ -327,14 +328,15 @@
 	pte.pte_ar = PTE_AR_RW;
 	pte.pte_ppn = ia64_port_base >> 12;
 
-	__asm __volatile("mov	%0=psr;;" : "=r" (psr));
-	__asm __volatile("rsm	psr.ic|psr.i;;");
+	__asm __volatile("ptr.d %0,%1" :: "r"(ia64_port_base), "r"(24 << 2));
+
+	__asm __volatile("mov	%0=psr" : "=r" (psr));
+	__asm __volatile("rsm	psr.ic|psr.i");
 	__asm __volatile("srlz.d");
 	__asm __volatile("mov	cr.ifa=%0" :: "r"(ia64_port_base));
 	/* XXX We should use the size from the memory descriptor. */
-	__asm __volatile("mov	cr.itir=%0;;" :: "r"(24 << 2));
-	__asm __volatile("itr.d dtr[%0]=%1;;" :: "r"(2),
-	    "r"(*(u_int64_t*)&pte));
+	__asm __volatile("mov	cr.itir=%0" :: "r"(24 << 2));
+	__asm __volatile("itr.d dtr[%0]=%1" :: "r"(2), "r"(*(u_int64_t*)&pte));
 	__asm __volatile("mov	psr.l=%0" :: "r" (psr));
 	__asm __volatile("srlz.d");
 }

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe p4-projects" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200301012208.h01M8uvE028288>