syscall: Resolve conflicts between m5threads and Gabe's recent SE changes.
[gem5.git] / src / arch / sparc / asi.cc
index 14e581e433d3e6905ecec0198c3be7d96040ea1a..254635bff9ecf2b1938f5ea895946ce03c3c153f 100644 (file)
@@ -104,7 +104,7 @@ namespace SparcISA
             (asi == ASI_BLK_SL);
     }
 
-    bool AsiNucleus(ASI asi)
+    bool AsiIsNucleus(ASI asi)
     {
         return
             (asi == ASI_N) ||
@@ -179,24 +179,23 @@ namespace SparcISA
             (asi == ASI_LDTX_PL) ||
             (asi == ASI_LDTX_SL) ||
             (asi == ASI_BLK_PL) ||
-            (asi == ASI_BLK_SL);
+            (asi == ASI_BLK_SL) ||
+            (asi == ASI_LTX_L);
     }
 
     bool AsiIsTwin(ASI asi)
     {
         return
-            (asi == ASI_LDTX_AIUP) ||
-            (asi == ASI_LDTX_AIUS) ||
-            (asi == ASI_LDTX_REAL) ||
-            (asi == ASI_LDTX_N) ||
-            (asi == ASI_LDTX_AIUP_L) ||
-            (asi == ASI_LDTX_AIUS_L) ||
-            (asi == ASI_LDTX_REAL_L) ||
-            (asi == ASI_LDTX_NL) ||
-            (asi == ASI_LDTX_P) ||
-            (asi == ASI_LDTX_S) ||
-            (asi == ASI_LDTX_PL) ||
-            (asi == ASI_LDTX_SL);
+            (asi >= ASI_LDTX_AIUP &&
+            asi <= ASI_LDTX_N &&
+            asi != ASI_QUEUE) ||
+            (asi >= ASI_LDTX_AIUP_L &&
+            asi <= ASI_LDTX_NL &&
+            asi != 0x2D) ||
+            asi == ASI_LDTX_P ||
+            asi == ASI_LDTX_S ||
+            asi == ASI_LDTX_PL ||
+            asi == ASI_LDTX_SL;
     }
 
     bool AsiIsPartialStore(ASI asi)
@@ -248,7 +247,8 @@ namespace SparcISA
     bool AsiIsCmt(ASI asi)
     {
         return
-            (asi == ASI_CMT_PER_STRAND);
+            (asi == ASI_CMT_PER_STRAND) ||
+            (asi == ASI_CMT_SHARED);
     }
 
     bool AsiIsQueue(ASI asi)
@@ -256,9 +256,17 @@ namespace SparcISA
         return asi == ASI_QUEUE;
     }
 
+    bool AsiIsInterrupt(ASI asi)
+    {
+        return asi == ASI_SWVR_INTR_RECEIVE  ||
+               asi == ASI_SWVR_UDB_INTR_W  ||
+               asi == ASI_SWVR_UDB_INTR_R ;
+    }
+
     bool AsiIsMmu(ASI asi)
     {
         return  asi == ASI_MMU ||
+                asi == ASI_LSU_CONTROL_REG  ||
                (asi >= ASI_DMMU_CTXT_ZERO_TSB_BASE_PS0 &&
                 asi <= ASI_IMMU_CTXT_ZERO_CONFIG) ||
                (asi >= ASI_DMMU_CTXT_NONZERO_TSB_BASE_PS0 &&
@@ -287,7 +295,15 @@ namespace SparcISA
 
     bool AsiIsReg(ASI asi)
     {
-        return AsiIsMmu(asi) || AsiIsScratchPad(asi);
+        return AsiIsMmu(asi) || AsiIsScratchPad(asi) ||
+               AsiIsSparcError(asi) || AsiIsInterrupt(asi)
+               || AsiIsCmt(asi);
+    }
+
+    bool AsiIsSparcError(ASI asi)
+    {
+        return asi == ASI_SPARC_ERROR_EN_REG ||
+               asi == ASI_SPARC_ERROR_STATUS_REG;
     }
 
 }