SPARC: Fixes for invalidateAll and demapAll in the SPARC TLBs.
authorGabe Black <gblack@eecs.umich.edu>
Sat, 1 Dec 2007 00:49:27 +0000 (16:49 -0800)
committerGabe Black <gblack@eecs.umich.edu>
Sat, 1 Dec 2007 00:49:27 +0000 (16:49 -0800)
--HG--
extra : convert_revision : 8de6c60b0e3e725eac11047a9d9888097dd359ff

src/arch/sparc/tlb.cc

index 52791e12a047517cd23e148d810111b52712e026..c0ad75c6e89ef1bdc6089bb124bf918f19159b8b 100644 (file)
@@ -331,10 +331,9 @@ TLB::demapAll(int partition_id)
     DPRINTF(TLB, "TLB: Demapping All pid=%#d\n", partition_id);
     cacheValid = false;
     for (x = 0; x < size; x++) {
-        if (!tlb[x].pte.locked() && tlb[x].range.partitionId == partition_id) {
-            if (tlb[x].valid == true){
-                freeList.push_front(&tlb[x]);
-            }
+        if (tlb[x].valid && !tlb[x].pte.locked() &&
+                tlb[x].range.partitionId == partition_id) {
+            freeList.push_front(&tlb[x]);
             tlb[x].valid = false;
             if (tlb[x].used) {
                 tlb[x].used = false;
@@ -351,7 +350,6 @@ TLB::invalidateAll()
     int x;
     cacheValid = false;
 
-    freeList.clear();
     lookupTable.clear();
     for (x = 0; x < size; x++) {
         if (tlb[x].valid == true)