Index: /branches/RWT/modules/vci_mem_cache/caba/source/src/vci_mem_cache.cpp
===================================================================
--- /branches/RWT/modules/vci_mem_cache/caba/source/src/vci_mem_cache.cpp	(revision 525)
+++ /branches/RWT/modules/vci_mem_cache/caba/source/src/vci_mem_cache.cpp	(revision 526)
@@ -2987,7 +2987,10 @@
         // erase any possible new reservation when we release the lock on the
         // directory
-        m_llsc_table.sw(m_nline[(addr_t)r_write_address.read()],r_write_word_index.read(),r_write_word_index.read()+r_write_word_count.read());
-
-        //m_llsc_table.sw(r_write_address.read());
+#define L2 soclib::common::uint32_log2
+        addr_t min = r_write_address.read();
+        addr_t max = r_write_address.read() +
+                   ((r_write_word_count.read()-1) << L2(vci_param_int::B));
+#undef L2
+        m_llsc_table.sw(min, max);
 
         r_write_fsm = WRITE_DIR_LOCK;
@@ -4677,6 +4680,7 @@
       if (!r_xram_rsp_victim_coherent.read())
       {
-        //m_llsc_table.sw(r_xram_rsp_victim_nline.read()*m_words*4);
-        m_llsc_table.sw(r_xram_rsp_victim_nline.read(), 0, m_words - 1);
+        addr_t min = r_xram_rsp_victim_nline.read()*m_words*4 ;
+        addr_t max = r_xram_rsp_victim_nline.read()*m_words*4 + (m_words - 1)*4;
+        m_llsc_table.sw(min, max);
       }
 #if DEBUG_MEMC_XRAM_RSP
@@ -5318,6 +5322,7 @@
           m_cache_data.write(way, set, word, r_cleanup_data[word].read(), 0xF);
         }
-        m_llsc_table.sw(r_cleanup_nline.read(), 0 , m_words - 1);
-        //m_llsc_table.sw(r_cleanup_nline.read()*m_words*4);
+        addr_t min = r_cleanup_nline.read()*m_words*4 ;
+        addr_t max = r_cleanup_nline.read()*m_words*4 + (m_words - 1)*4;
+        m_llsc_table.sw(min, max);
       }
 
@@ -6151,6 +6156,6 @@
                         << " | @ " << std::hex << m_cmd_cas_addr_fifo.read()
                         << " | WRITE (cas triggered)" << std::endl;*/
-      m_llsc_table.sw(m_nline[(addr_t)m_cmd_cas_addr_fifo.read()],m_x[(addr_t)(m_cmd_cas_addr_fifo.read())],m_x[(addr_t)(m_cmd_cas_addr_fifo.read())]);
-
+
+      m_llsc_table.sw(m_cmd_cas_addr_fifo.read(), m_cmd_cas_addr_fifo.read());
       // test coherence request
       if(r_cas_count.read())   // replicated line
