Index: branches/MESI/modules/vci_mem_cache/caba/source/include/update_tab.h
===================================================================
--- branches/MESI/modules/vci_mem_cache/caba/source/include/update_tab.h	(revision 670)
+++ branches/MESI/modules/vci_mem_cache/caba/source/include/update_tab.h	(revision 677)
@@ -27,17 +27,19 @@
   addr_t	nline;	    // The identifier of the cache line
   size_t 	count;      // The number of acknowledge responses to receive
+  bool      is_change;  // multi ack miss req sends this bit to 1
 
   UpdateTabEntry()
   {
-    valid	= false;
-    update  = false;
-    brdcast = false;
-    rsp     = false;
-    ack     = false;
-    srcid	= 0;
-    trdid	= 0;
-    pktid	= 0;
-    nline	= 0;
-    count	= 0;
+    valid	    = false;
+    update      = false;
+    brdcast     = false;
+    rsp         = false;
+    ack         = false;
+    srcid	    = 0;
+    trdid	    = 0;
+    pktid	    = 0;
+    nline	    = 0;
+    count	    = 0;
+    is_change   = 0;
   }
 
@@ -51,30 +53,33 @@
                  size_t i_pktid, 
                  addr_t i_nline,
-                 size_t i_count) 
-  {
-    valid	= i_valid;
-    update	= i_update;
-    brdcast = i_brdcast;
-    rsp     = i_rsp;
-    ack     = i_ack;
-    srcid	= i_srcid;
-    trdid	= i_trdid;
-    pktid	= i_pktid;
-    nline	= i_nline;
-    count	= i_count;
+                 size_t i_count,
+                 size_t i_is_change) 
+  {
+    valid	    = i_valid;
+    update	    = i_update;
+    brdcast     = i_brdcast;
+    rsp         = i_rsp;
+    ack         = i_ack;
+    srcid	    = i_srcid;
+    trdid	    = i_trdid;
+    pktid	    = i_pktid;
+    nline	    = i_nline;
+    count	    = i_count;
+    is_change   = i_is_change;
   }
 
   UpdateTabEntry(const UpdateTabEntry &source)
   {
-    valid   = source.valid;
-    update  = source.update;
-    brdcast = source.brdcast;
-    rsp     = source.rsp;
-    ack     = source.ack;
-    srcid   = source.srcid;
-    trdid   = source.trdid;
-    pktid   = source.pktid;
-    nline   = source.nline;
-    count   = source.count;
+    valid       = source.valid;
+    update      = source.update;
+    brdcast     = source.brdcast;
+    rsp         = source.rsp;
+    ack         = source.ack;
+    srcid       = source.srcid;
+    trdid       = source.trdid;
+    pktid       = source.pktid;
+    nline       = source.nline;
+    count       = source.count;
+    is_change   = source.is_change;
   }
 
@@ -84,14 +89,15 @@
   void init()
   {
-    valid  = false;
-    update = false;
-    brdcast= false;
-    rsp    = false;
-    ack    = false;
-    srcid  = 0;
-    trdid  = 0;
-    pktid  = 0;
-    nline  = 0;
-    count  = 0;
+    valid       = false;
+    update      = false;
+    brdcast     = false;
+    rsp         = false;
+    ack         = false;
+    srcid       = 0;
+    trdid       = 0;
+    pktid       = 0;
+    nline       = 0;
+    count       = 0;
+    is_change   = 0;
   }
 
@@ -103,14 +109,15 @@
   void copy(const UpdateTabEntry &source)
   {
-    valid  = source.valid;
-    update = source.update;
-    brdcast= source.brdcast;
-    rsp    = source.rsp;
-    ack    = source.ack  ;
-    srcid  = source.srcid;
-    trdid  = source.trdid;
-    pktid  = source.pktid;
-    nline  = source.nline;
-    count  = source.count;
+    valid       = source.valid;
+    update      = source.update;
+    brdcast     = source.brdcast;
+    rsp         = source.rsp;
+    ack         = source.ack;
+    srcid       = source.srcid;
+    trdid       = source.trdid;
+    pktid       = source.pktid;
+    nline       = source.nline;
+    count       = source.count;
+    is_change   = source.is_change;
   }
 
@@ -220,5 +227,6 @@
            const addr_t nline,
            const size_t count,
-           size_t       &index)
+           size_t       &index,
+           const bool   is_change=false)
   {
     for ( size_t i=0 ; i<size_tab ; i++ ) 
@@ -236,4 +244,5 @@
         tab[i].nline		= (addr_t) nline;
         tab[i].count		= (size_t) count;
+        tab[i].is_change    = is_change;
         index			    = i;
         return true;
@@ -452,4 +461,15 @@
   }
 
+  void change(const size_t index)
+  {
+    assert(index<size_tab && "Bad Update Tab Entry");
+    tab[index].is_change = true;
+  }
+
+  size_t is_change(const size_t index)
+  {
+    assert(index<size_tab && "Bad Update Tab Entry");
+    return tab[index].is_change;
+  }
 };
 
