syscall: Resolve conflicts between m5threads and Gabe's recent SE changes.
[gem5.git] / src / arch / sparc / asi.cc
index c8f2c136639d71b97aba4ce8d8b442fe0505725f..254635bff9ecf2b1938f5ea895946ce03c3c153f 100644 (file)
@@ -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,6 +256,13 @@ 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 ||
@@ -288,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;
     }
 
 }