Yet another merge with the main repository.
[gem5.git] / src / cpu / inorder / resource_pool.hh
index 51eb413384d7d2d374b183d1f21f73aa05360d99..e892d750af7c1b74d77e7c18f088772c0dbe9d6b 100644 (file)
@@ -68,7 +68,9 @@ class ResourcePool {
     };
 
     enum ResPoolEventPri {
-        ResPool_Pri =  InOrderCPU::InOrderCPU_Pri - 5
+        ResPool_Pri =  InOrderCPU::InOrderCPU_Pri - 5,
+        ResGrad_Pri,
+        ResSquash_Pri
     };
 
     class ResPoolEvent : public Event
@@ -95,7 +97,8 @@ class ResourcePool {
                      DynInstPtr _inst,
                      int stage_num,
                      InstSeqNum seq_num,
-                     ThreadID _tid);
+                     ThreadID _tid,
+                     ResPoolEventPri res_pri = ResPool_Pri);
 
         /** Set Type of Event To Be Scheduled */
         void setEvent(InOrderCPU::CPUEventType e_type,
@@ -172,13 +175,13 @@ class ResourcePool {
                              InstSeqNum done_seq_num, ThreadID tid);
 
     /** Activate Thread in all resources */
-    void activateAll(ThreadID tid);
+    void activateThread(ThreadID tid);
 
     /** De-Activate Thread in all resources */
-    void deactivateAll(ThreadID tid);
+    void deactivateThread(ThreadID tid);
 
-    /** De-Activate Thread in all resources */
-    void suspendAll(ThreadID tid);
+    /** Suspend Thread in all resources */
+    void suspendThread(ThreadID tid);
 
     /** Broadcast Context Switch Update to all resources */
     void updateAfterContextSwitch(DynInstPtr inst, ThreadID tid);
@@ -215,8 +218,11 @@ class ResourcePool {
   private:
     std::vector<Resource *> resources;
 
+    /** Resources that interface with memory objects */
     std::vector<int> memObjects;
 
+    /** Resources that need to be updated on an inst. graduation */
+    std::vector<int> gradObjects;
 };
 
 #endif //__CPU_INORDER_RESOURCE_HH__