[OpenBIOS] r234 - openbios-devel/arch/sparc64

svn at openbios.org svn at openbios.org
Tue Sep 2 17:59:29 CEST 2008


Author: blueswirl
Date: 2008-09-02 17:59:28 +0200 (Tue, 02 Sep 2008)
New Revision: 234

Modified:
   openbios-devel/arch/sparc64/openbios.c
Log:
Implement itlb/dtlb directed writes (Igor Kovalenko)

Modified: openbios-devel/arch/sparc64/openbios.c
===================================================================
--- openbios-devel/arch/sparc64/openbios.c	2008-09-02 15:46:27 UTC (rev 233)
+++ openbios-devel/arch/sparc64/openbios.c	2008-09-02 15:59:28 UTC (rev 234)
@@ -132,6 +132,16 @@
           "r" (tte_data), "i" (ASI_DTLB_DATA_IN));
 }
 
+static void
+dtlb_load3(unsigned long vaddr, unsigned long tte_data,
+           unsigned long tte_index)
+{
+    asm("stxa %0, [%1] %2\n"
+        "stxa %3, [%4] %5\n"
+        : : "r" (vaddr), "r" (48), "i" (ASI_DMMU),
+          "r" (tte_data), "r" (tte_index << 3), "i" (ASI_DTLB_DATA_ACCESS));
+}
+
 /*
   ( index tte_data vaddr -- ? )
 */
@@ -143,7 +153,7 @@
     vaddr = POP();
     tte_data = POP();
     idx = POP();
-    dtlb_load2(vaddr, tte_data);
+    dtlb_load3(vaddr, tte_data, idx);
 }
 
 static void
@@ -155,6 +165,16 @@
           "r" (tte_data), "i" (ASI_ITLB_DATA_IN));
 }
 
+static void
+itlb_load3(unsigned long vaddr, unsigned long tte_data,
+           unsigned long tte_index)
+{
+    asm("stxa %0, [%1] %2\n"
+        "stxa %3, [%4] %5\n"
+        : : "r" (vaddr), "r" (48), "i" (ASI_IMMU),
+          "r" (tte_data), "r" (tte_index << 3), "i" (ASI_ITLB_DATA_ACCESS));
+}
+
 /*
   ( index tte_data vaddr -- ? )
 */
@@ -166,7 +186,7 @@
     vaddr = POP();
     tte_data = POP();
     idx = POP();
-    itlb_load2(vaddr, tte_data);
+    itlb_load3(vaddr, tte_data, idx);
 }
 
 static void




More information about the OpenBIOS mailing list