Index: /trunk/lib/generic_llsc_global_table/include/generic_llsc_global_table.h
===================================================================
--- /trunk/lib/generic_llsc_global_table/include/generic_llsc_global_table.h	(revision 481)
+++ /trunk/lib/generic_llsc_global_table/include/generic_llsc_global_table.h	(revision 482)
@@ -432,4 +432,5 @@
 
     ////////////////////////////////////////////////////////////////////////////
+    /*
     inline void sw(const addr_t ad)
     //  This method checks if there is a valid registration for the given
@@ -448,5 +449,29 @@
         //  If there is one, invalidate it
         if(pos >= 0) r_val[pos] = false;
-
+    }
+    */
+    inline void sw(const addr_t nline, unsigned int min, unsigned int max)
+    //  This method checks if there is / are valid registration(s) for the given
+    //  range and, in case of hit(s), invalidates the registration(s)
+    {
+        // increment the sw access counter (for stats)
+        m_cpt_sw++;
+        // hit range ?
+        // YES
+        //      inval registration(s)
+        // NO
+        //      nothing
+
+        // for every address in the given range ...
+        for (unsigned int i = min; i <= max; i++)
+        {
+            //  Is there a registration for the given address ?
+            int pos = hitAddr(nline + i * 4);
+            //  If there is one, invalidate it
+            if (pos >= 0)
+            {
+                r_val[pos] = false;
+            }
+        }
     }
 
Index: /trunk/modules/vci_mem_cache/caba/source/src/vci_mem_cache.cpp
===================================================================
--- /trunk/modules/vci_mem_cache/caba/source/src/vci_mem_cache.cpp	(revision 481)
+++ /trunk/modules/vci_mem_cache/caba/source/src/vci_mem_cache.cpp	(revision 482)
@@ -2590,5 +2590,5 @@
         // erase any possible new reservation when we release the lock on the
         // directory
-        m_llsc_table.sw(r_write_address.read());
+        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());
 
         r_write_fsm = WRITE_DIR_LOCK;
@@ -5283,5 +5283,5 @@
     {
       // The CAS is a success => sw access to the llsc_global_table
-      m_llsc_table.sw(m_cmd_cas_addr_fifo.read());
+      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())]);
 
       // test coherence request
Index: /trunk/platforms/tsar_generic_xbar/soclib.conf
===================================================================
--- /trunk/platforms/tsar_generic_xbar/soclib.conf	(revision 481)
+++ /trunk/platforms/tsar_generic_xbar/soclib.conf	(revision 482)
@@ -1,2 +1,11 @@
+#config.addDescPath("/dsk/l1/misc/joannou/tsar/trunk")
+config.addDescPath("/users/cao/joannou/tsar")
+config.addDescPath("/users/cao/joannou/soclib/soclib")
 
-config.addDescPath("/Users/alain/soc/tsar-trunk-svn-2013/")
+config.systemcass.cflags=config.systemc.cflags+["-fopenmp", "-fpermissive"]
+config.systemcass.libs=config.systemc.libs+['-ldl', '-lm', '-lpthread', '-L%(libdir)s', '-lsystemc', '-rdynamic', '-fopenmp']
+#config.default = config.systemcass_
+#
+config.systemc.cflags=config.systemc.cflags+["-fopenmp", "-fpermissive"]
+config.systemc.libs=config.systemc.libs+['-ldl', '-lm', '-lpthread', '-L%(libdir)s', '-lsystemc', '-rdynamic', '-fopenmp']
+config.default = config.systemc_
