changeset 890269a13188 in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=890269a13188
description:
        arm: Don't truncate 16-bit ASIDs to 8 bits

        The ISA code sometimes stores 16-bit ASIDs as 8-bit unsigned integers
        and has a couple of inverted checks that mask out the high 8 bits of
        an ASID if 16-bit ASIDs have been /enabled/. This changeset fixes both
        of those issues.

diffstat:

 src/arch/arm/isa.cc |  8 ++++----
 src/arch/arm/isa.hh |  2 +-
 2 files changed, 5 insertions(+), 5 deletions(-)

diffs (38 lines):

diff -r fe09d1bc6721 -r 890269a13188 src/arch/arm/isa.cc
--- a/src/arch/arm/isa.cc       Mon Mar 02 04:00:27 2015 -0500
+++ b/src/arch/arm/isa.cc       Mon Mar 02 04:00:28 2015 -0500
@@ -1386,7 +1386,7 @@
                 oc = sys->getThreadContext(x);
                 assert(oc->getITBPtr() && oc->getDTBPtr());
                 asid = bits(newVal, 63, 48);
-                if (haveLargeAsid64)
+                if (!haveLargeAsid64)
                     asid &= mask(8);
                 oc->getITBPtr()->flushAsid(asid, secure_lookup, target_el);
                 oc->getDTBPtr()->flushAsid(asid, secure_lookup, target_el);
@@ -1941,10 +1941,10 @@
 }
 
 void
-ISA::tlbiVA(ThreadContext *tc, MiscReg newVal, uint8_t asid, bool 
secure_lookup,
-            uint8_t target_el)
+ISA::tlbiVA(ThreadContext *tc, MiscReg newVal, uint16_t asid,
+            bool secure_lookup, uint8_t target_el)
 {
-    if (haveLargeAsid64)
+    if (!haveLargeAsid64)
         asid &= mask(8);
     Addr va = ((Addr) bits(newVal, 43, 0)) << 12;
     System *sys = tc->getSystemPtr();
diff -r fe09d1bc6721 -r 890269a13188 src/arch/arm/isa.hh
--- a/src/arch/arm/isa.hh       Mon Mar 02 04:00:27 2015 -0500
+++ b/src/arch/arm/isa.hh       Mon Mar 02 04:00:28 2015 -0500
@@ -221,7 +221,7 @@
             assert(!cpsr.width);
         }
 
-        void tlbiVA(ThreadContext *tc, MiscReg newVal, uint8_t asid,
+        void tlbiVA(ThreadContext *tc, MiscReg newVal, uint16_t asid,
                     bool secure_lookup, uint8_t target_el);
 
         void tlbiALL(ThreadContext *tc, bool secure_lookup, uint8_t target_el);
_______________________________________________
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to