mem, alpha: Move Alpha-specific request flags
authorAndreas Sandberg <Andreas.Sandberg@ARM.com>
Tue, 5 May 2015 07:22:31 +0000 (03:22 -0400)
committerAndreas Sandberg <Andreas.Sandberg@ARM.com>
Tue, 5 May 2015 07:22:31 +0000 (03:22 -0400)
Move Alpha-specific memory request flags to an architecture-specific
header and map them to the architecture specific flag bit range.

src/arch/alpha/faults.cc
src/arch/alpha/isa/pal.isa
src/arch/alpha/tlb.cc
src/arch/alpha/types.hh
src/mem/request.hh

index 2928f8d65449a956835dbddd16fedc3cc61cf7d4..8bb781c13075847aff8a4330139a4ae02a0a78dd 100644 (file)
@@ -147,7 +147,7 @@ DtbFault::invoke(ThreadContext *tc, const StaticInstPtr &inst)
         // on VPTE loads (instead of locking the registers until IPR_VA is
         // read, like the EV5).  The EV6 approach is cleaner and seems to
         // work with EV5 PAL code, but not the other way around.
-        if (reqFlags.noneSet(Request::VPTE | Request::PREFETCH)) {
+        if (reqFlags.noneSet(AlphaRequestFlags::VPTE | Request::PREFETCH)) {
             // set VA register with faulting address
             tc->setMiscRegNoEffect(IPR_VA, vaddr);
 
index 53e0d6193cb5bc84284eaf9b19287b1f33c393b7..3913fa82d664fb4237fb192fdce38cca8fbe1098 100644 (file)
@@ -171,8 +171,8 @@ output decoder {{
     {
         memAccessFlags.clear();
         if (HW_LDST_PHYS) memAccessFlags.set(Request::PHYSICAL);
-        if (HW_LDST_ALT)  memAccessFlags.set(Request::ALTMODE);
-        if (HW_LDST_VPTE) memAccessFlags.set(Request::VPTE);
+        if (HW_LDST_ALT)  memAccessFlags.set(AlphaRequestFlags::ALTMODE);
+        if (HW_LDST_VPTE) memAccessFlags.set(AlphaRequestFlags::VPTE);
         if (HW_LDST_LOCK) memAccessFlags.set(Request::LLSC);
     }
 
index 44326df4062c5d944951ddc130afdb06419fca80..bcf61f3bfed999836c7f2a3bba0b31b396664030 100644 (file)
@@ -466,7 +466,7 @@ TLB::translateData(RequestPtr req, ThreadContext *tc, bool write)
     }
 
     if (PcPAL(req->getPC())) {
-        mode = (req->getFlags() & Request::ALTMODE) ?
+        mode = (req->getFlags() & AlphaRequestFlags::ALTMODE) ?
             (mode_type)ALT_MODE_AM(
                 tc->readMiscRegNoEffect(IPR_ALT_MODE))
             : mode_kernel;
@@ -523,7 +523,7 @@ TLB::translateData(RequestPtr req, ThreadContext *tc, bool write)
                 if (write) { write_misses++; } else { read_misses++; }
                 uint64_t flags = (write ? MM_STAT_WR_MASK : 0) |
                     MM_STAT_DTB_MISS_MASK;
-                return (req->getFlags() & Request::VPTE) ?
+                return (req->getFlags() & AlphaRequestFlags::VPTE) ?
                     (Fault)(std::make_shared<PDtbMissFault>(req->getVaddr(),
                                                             req->getFlags(),
                                                             flags)) :
index b1411d46e2baa2078417cd83a2fe03720e60f25b..aaa0f0b2a8e17abd55e6db380773b267d4ce8232 100644 (file)
@@ -51,6 +51,22 @@ enum annotes
     ITOUCH_ANNOTE = 0xffffffff
 };
 
+/**
+ * Alpha-specific memory request flags
+ *
+ * These flags map to the architecture-specific lower 8 bits of the
+ * flags field in Request.
+ */
+struct AlphaRequestFlags
+{
+    typedef uint8_t ArchFlagsType;
+
+    /** The request is an ALPHA VPTE pal access (hw_ld). */
+    static const ArchFlagsType VPTE    = 0x01;
+    /** Use the alternate mode bits in ALPHA. */
+    static const ArchFlagsType ALTMODE = 0x02;
+};
+
 } // namespace AlphaISA
 
 #endif // __ARCH_ALPHA_TYPES_HH__
index 82ede7e60048bcc462b9794178c959d8d203c4c1..0296361007e0ebc313a335bd399ccfaa0cb1f996 100644 (file)
@@ -101,10 +101,6 @@ class Request
     static const FlagsType INST_FETCH                  = 0x00000100;
     /** The virtual address is also the physical address. */
     static const FlagsType PHYSICAL                    = 0x00000200;
-    /** The request is an ALPHA VPTE pal access (hw_ld). */
-    static const FlagsType VPTE                        = 0x00000400;
-    /** Use the alternate mode bits in ALPHA. */
-    static const FlagsType ALTMODE                     = 0x00000800;
     /** The request is to an uncacheable address. */
     static const FlagsType UNCACHEABLE                 = 0x00001000;
     /** This request is to a memory mapped register. */