From 08322f666ce5b1207dec5df4e890ed48e4447f15 Mon Sep 17 00:00:00 2001
From: Daniela Genius <genius@debussy.soc.lip6.fr>
Date: Thu, 30 Aug 2018 12:05:16 +0200
Subject: [PATCH] cleanup

---
 MPSoC/mutekh/arch/soclib/deployinfo.h         |   7 -
 MPSoC/mutekh/arch/soclib/deployinfo_map.h     | 118 ----
 .../mutekh/arch/soclib/deployinfo_map.h-20-06 |  10 -
 .../mutekh/arch/soclib/deployinfo_map.h27-06  |  10 -
 MPSoC/mutekh/arch/soclib/deployinfo_ram.h     | 175 ------
 MPSoC/mutekh/arch/soclib/ldscript.cpp-15-05   | 255 ---------
 MPSoC/mutekh/arch/soclib/ldscript.cpp-18-05   | 333 -----------
 MPSoC/mutekh/arch/soclib/ldscript.cpp-19-05   | 252 --------
 .../mutekh/arch/soclib/ldscript.cpp-2-2-2017  | 255 ---------
 MPSoC/mutekh/arch/soclib/ldscript.cpp-20-06   | 255 ---------
 MPSoC/mutekh/arch/soclib/ldscript.cpp-26-08   | 255 ---------
 MPSoC/mutekh/arch/soclib/ldscript.cpp-27-06   | 255 ---------
 MPSoC/mutekh/arch/soclib/ldscript.cpp-6-5     | 228 --------
 MPSoC/mutekh/arch/soclib/ldscript.cpp-9-5     | 252 --------
 MPSoC/mutekh/arch/soclib/ldscript.cpp-sav     | 222 --------
 .../__init__.py => mutekh/bin/test}           |   0
 MPSoC/mutekh/libmwmr/mwmr.config-07-12        |  38 --
 MPSoC/mutekh/libmwmr/mwmr.config-1-8          |  38 --
 MPSoC/mutekh/libmwmr/mwmr.config-23-06        |  38 --
 MPSoC/mutekh/libmwmr/mwmr_soclib.c-01-08      | 401 -------------
 MPSoC/mutekh/libmwmr/mwmr_soclib.c-10-02-2017 | 377 ------------
 MPSoC/mutekh/libmwmr/mwmr_soclib.c-10-05      | 425 --------------
 MPSoC/mutekh/libmwmr/mwmr_soclib.c-13-06      | 397 -------------
 MPSoC/mutekh/libmwmr/mwmr_soclib.c-19-05      | 377 ------------
 MPSoC/mutekh/libmwmr/mwmr_soclib.c-27-06      | 408 -------------
 MPSoC/mutekh/libmwmr/mwmr_soclib.c-4-7        | 383 -------------
 MPSoC/mutekh/libmwmr/mwmr_soclib.c-fonctionne | 409 -------------
 .../libmwmr/mwmr_soclib.c-fully-instrumented  | 425 --------------
 MPSoC/mutekh/libmwmr/mwmr_soclib.c-orig       | 377 ------------
 .../mutekh/libmwmr/mwmr_soclib_debug_15_12.c  | 409 -------------
 .../platform_desc                             |  44 --
 ...platform_desc_c24f_236058371c7066fb__top.o | Bin 750808 -> 0 bytes
 .../caba-vgmn-mutekh_kernel_tutorial/top.cc   | 537 ------------------
 .../utils/lib/python/sd_parser/__init__.pyc   | Bin 165 -> 0 bytes
 .../python/sd_parser/component_builder.pyc    | Bin 10052 -> 0 bytes
 .../utils/lib/python/sd_parser/module.pyc     | Bin 13929 -> 0 bytes
 .../utils/lib/python/sd_parser/platform.pyc   | Bin 4317 -> 0 bytes
 .../soclib/utils/lib/python/sd_parser/sd.pyc  | Bin 2799 -> 0 bytes
 .../lib/python/sd_parser/specialization.pyc   | Bin 13924 -> 0 bytes
 .../lib/python/soclib_builder/__init__.pyc    | Bin 170 -> 0 bytes
 .../utils/lib/python/soclib_builder/action.py | 291 ----------
 .../lib/python/soclib_builder/action.pyc      | Bin 12558 -> 0 bytes
 .../utils/lib/python/soclib_builder/bblock.py | 208 -------
 .../lib/python/soclib_builder/bblock.pyc      | Bin 9020 -> 0 bytes
 .../lib/python/soclib_builder/command.py      | 190 -------
 .../lib/python/soclib_builder/command.pyc     | Bin 6918 -> 0 bytes
 .../lib/python/soclib_builder/depends.py      |  77 ---
 .../lib/python/soclib_builder/depends.pyc     | Bin 3102 -> 0 bytes
 .../lib/python/soclib_builder/fileops.py      |  46 --
 .../lib/python/soclib_builder/fileops.pyc     | Bin 1446 -> 0 bytes
 .../lib/python/soclib_builder/mfparser.py     |  60 --
 .../lib/python/soclib_builder/mfparser.pyc    | Bin 1908 -> 0 bytes
 .../lib/python/soclib_builder/textfile.py     |  55 --
 .../lib/python/soclib_builder/textfile.pyc    | Bin 1892 -> 0 bytes
 .../utils/lib/python/soclib_builder/todo.py   | 319 -----------
 .../utils/lib/python/soclib_builder/todo.pyc  | Bin 11211 -> 0 bytes
 .../utils/lib/python/soclib_cc/__init__.pyc   | Bin 280 -> 0 bytes
 .../lib/python/soclib_cc/actions/__init__.pyc | Bin 288 -> 0 bytes
 .../lib/python/soclib_cc/actions/cxx.pyc      | Bin 8808 -> 0 bytes
 .../lib/python/soclib_cc/actions/hdl.pyc      | Bin 4079 -> 0 bytes
 .../utils/lib/python/soclib_cc/bugreport.pyc  | Bin 5577 -> 0 bytes
 .../lib/python/soclib_cc/config/__init__.pyc  | Bin 975 -> 0 bytes
 .../lib/python/soclib_cc/config/objects.pyc   | Bin 11379 -> 0 bytes
 .../lib/python/soclib_cc/config/spool.pyc     | Bin 7958 -> 0 bytes
 .../utils/lib/python/soclib_cc/exceptions.pyc | Bin 414 -> 0 bytes
 .../utils/lib/python/soclib_desc/__init__.pyc | Bin 324 -> 0 bytes
 .../python/soclib_desc/_warning_formatter.pyc | Bin 910 -> 0 bytes
 .../python/soclib_desc/abstraction_levels.pyc | Bin 3252 -> 0 bytes
 .../utils/lib/python/soclib_desc/cache.pyc    | Bin 4854 -> 0 bytes
 .../python/soclib_desc/component_builder.pyc  | Bin 1079 -> 0 bytes
 .../python/soclib_desc/description_files.pyc  | Bin 10204 -> 0 bytes
 .../utils/lib/python/soclib_desc/error.pyc    | Bin 6818 -> 0 bytes
 .../lib/python/soclib_desc/metadata_file.pyc  | Bin 6478 -> 0 bytes
 .../utils/lib/python/soclib_desc/module.pyc   | Bin 6525 -> 0 bytes
 .../lib/python/soclib_desc/parameter.pyc      | Bin 25313 -> 0 bytes
 .../lib/python/soclib_desc/specialization.pyc | Bin 7763 -> 0 bytes
 .../lib/python/soclib_utils/__init__.pyc      | Bin 283 -> 0 bytes
 .../lib/python/soclib_utils/terminal.pyc      | Bin 875 -> 0 bytes
 modeling/LIP6/monoprocessor.xml               |  33 +-
 modeling/testforkandjoin.xml                  | 338 +++++------
 80 files changed, 191 insertions(+), 9391 deletions(-)
 delete mode 100644 MPSoC/mutekh/arch/soclib/deployinfo.h
 delete mode 100644 MPSoC/mutekh/arch/soclib/deployinfo_map.h
 delete mode 100644 MPSoC/mutekh/arch/soclib/deployinfo_map.h-20-06
 delete mode 100644 MPSoC/mutekh/arch/soclib/deployinfo_map.h27-06
 delete mode 100644 MPSoC/mutekh/arch/soclib/deployinfo_ram.h
 delete mode 100644 MPSoC/mutekh/arch/soclib/ldscript.cpp-15-05
 delete mode 100644 MPSoC/mutekh/arch/soclib/ldscript.cpp-18-05
 delete mode 100644 MPSoC/mutekh/arch/soclib/ldscript.cpp-19-05
 delete mode 100644 MPSoC/mutekh/arch/soclib/ldscript.cpp-2-2-2017
 delete mode 100644 MPSoC/mutekh/arch/soclib/ldscript.cpp-20-06
 delete mode 100644 MPSoC/mutekh/arch/soclib/ldscript.cpp-26-08
 delete mode 100644 MPSoC/mutekh/arch/soclib/ldscript.cpp-27-06
 delete mode 100644 MPSoC/mutekh/arch/soclib/ldscript.cpp-6-5
 delete mode 100644 MPSoC/mutekh/arch/soclib/ldscript.cpp-9-5
 delete mode 100644 MPSoC/mutekh/arch/soclib/ldscript.cpp-sav
 rename MPSoC/{soclib/utils/lib/python/soclib_builder/__init__.py => mutekh/bin/test} (100%)
 delete mode 100644 MPSoC/mutekh/libmwmr/mwmr.config-07-12
 delete mode 100644 MPSoC/mutekh/libmwmr/mwmr.config-1-8
 delete mode 100644 MPSoC/mutekh/libmwmr/mwmr.config-23-06
 delete mode 100644 MPSoC/mutekh/libmwmr/mwmr_soclib.c-01-08
 delete mode 100644 MPSoC/mutekh/libmwmr/mwmr_soclib.c-10-02-2017
 delete mode 100644 MPSoC/mutekh/libmwmr/mwmr_soclib.c-10-05
 delete mode 100644 MPSoC/mutekh/libmwmr/mwmr_soclib.c-13-06
 delete mode 100644 MPSoC/mutekh/libmwmr/mwmr_soclib.c-19-05
 delete mode 100644 MPSoC/mutekh/libmwmr/mwmr_soclib.c-27-06
 delete mode 100644 MPSoC/mutekh/libmwmr/mwmr_soclib.c-4-7
 delete mode 100644 MPSoC/mutekh/libmwmr/mwmr_soclib.c-fonctionne
 delete mode 100644 MPSoC/mutekh/libmwmr/mwmr_soclib.c-fully-instrumented
 delete mode 100644 MPSoC/mutekh/libmwmr/mwmr_soclib.c-orig
 delete mode 100644 MPSoC/mutekh/libmwmr/mwmr_soclib_debug_15_12.c
 delete mode 100644 MPSoC/soclib/soclib/platform/topcells/caba-vgmn-mutekh_kernel_tutorial/platform_desc
 delete mode 100644 MPSoC/soclib/soclib/platform/topcells/caba-vgmn-mutekh_kernel_tutorial/systemc_64_caba:platform_desc_c24f_236058371c7066fb__top.o
 delete mode 100644 MPSoC/soclib/soclib/platform/topcells/caba-vgmn-mutekh_kernel_tutorial/top.cc
 delete mode 100644 MPSoC/soclib/utils/lib/python/sd_parser/__init__.pyc
 delete mode 100644 MPSoC/soclib/utils/lib/python/sd_parser/component_builder.pyc
 delete mode 100644 MPSoC/soclib/utils/lib/python/sd_parser/module.pyc
 delete mode 100644 MPSoC/soclib/utils/lib/python/sd_parser/platform.pyc
 delete mode 100644 MPSoC/soclib/utils/lib/python/sd_parser/sd.pyc
 delete mode 100644 MPSoC/soclib/utils/lib/python/sd_parser/specialization.pyc
 delete mode 100644 MPSoC/soclib/utils/lib/python/soclib_builder/__init__.pyc
 delete mode 100644 MPSoC/soclib/utils/lib/python/soclib_builder/action.py
 delete mode 100644 MPSoC/soclib/utils/lib/python/soclib_builder/action.pyc
 delete mode 100644 MPSoC/soclib/utils/lib/python/soclib_builder/bblock.py
 delete mode 100644 MPSoC/soclib/utils/lib/python/soclib_builder/bblock.pyc
 delete mode 100644 MPSoC/soclib/utils/lib/python/soclib_builder/command.py
 delete mode 100644 MPSoC/soclib/utils/lib/python/soclib_builder/command.pyc
 delete mode 100644 MPSoC/soclib/utils/lib/python/soclib_builder/depends.py
 delete mode 100644 MPSoC/soclib/utils/lib/python/soclib_builder/depends.pyc
 delete mode 100644 MPSoC/soclib/utils/lib/python/soclib_builder/fileops.py
 delete mode 100644 MPSoC/soclib/utils/lib/python/soclib_builder/fileops.pyc
 delete mode 100644 MPSoC/soclib/utils/lib/python/soclib_builder/mfparser.py
 delete mode 100644 MPSoC/soclib/utils/lib/python/soclib_builder/mfparser.pyc
 delete mode 100644 MPSoC/soclib/utils/lib/python/soclib_builder/textfile.py
 delete mode 100644 MPSoC/soclib/utils/lib/python/soclib_builder/textfile.pyc
 delete mode 100644 MPSoC/soclib/utils/lib/python/soclib_builder/todo.py
 delete mode 100644 MPSoC/soclib/utils/lib/python/soclib_builder/todo.pyc
 delete mode 100644 MPSoC/soclib/utils/lib/python/soclib_cc/__init__.pyc
 delete mode 100644 MPSoC/soclib/utils/lib/python/soclib_cc/actions/__init__.pyc
 delete mode 100644 MPSoC/soclib/utils/lib/python/soclib_cc/actions/cxx.pyc
 delete mode 100644 MPSoC/soclib/utils/lib/python/soclib_cc/actions/hdl.pyc
 delete mode 100644 MPSoC/soclib/utils/lib/python/soclib_cc/bugreport.pyc
 delete mode 100644 MPSoC/soclib/utils/lib/python/soclib_cc/config/__init__.pyc
 delete mode 100644 MPSoC/soclib/utils/lib/python/soclib_cc/config/objects.pyc
 delete mode 100644 MPSoC/soclib/utils/lib/python/soclib_cc/config/spool.pyc
 delete mode 100644 MPSoC/soclib/utils/lib/python/soclib_cc/exceptions.pyc
 delete mode 100644 MPSoC/soclib/utils/lib/python/soclib_desc/__init__.pyc
 delete mode 100644 MPSoC/soclib/utils/lib/python/soclib_desc/_warning_formatter.pyc
 delete mode 100644 MPSoC/soclib/utils/lib/python/soclib_desc/abstraction_levels.pyc
 delete mode 100644 MPSoC/soclib/utils/lib/python/soclib_desc/cache.pyc
 delete mode 100644 MPSoC/soclib/utils/lib/python/soclib_desc/component_builder.pyc
 delete mode 100644 MPSoC/soclib/utils/lib/python/soclib_desc/description_files.pyc
 delete mode 100644 MPSoC/soclib/utils/lib/python/soclib_desc/error.pyc
 delete mode 100644 MPSoC/soclib/utils/lib/python/soclib_desc/metadata_file.pyc
 delete mode 100644 MPSoC/soclib/utils/lib/python/soclib_desc/module.pyc
 delete mode 100644 MPSoC/soclib/utils/lib/python/soclib_desc/parameter.pyc
 delete mode 100644 MPSoC/soclib/utils/lib/python/soclib_desc/specialization.pyc
 delete mode 100644 MPSoC/soclib/utils/lib/python/soclib_utils/__init__.pyc
 delete mode 100644 MPSoC/soclib/utils/lib/python/soclib_utils/terminal.pyc

diff --git a/MPSoC/mutekh/arch/soclib/deployinfo.h b/MPSoC/mutekh/arch/soclib/deployinfo.h
deleted file mode 100644
index 6e62ce8967..0000000000
--- a/MPSoC/mutekh/arch/soclib/deployinfo.h
+++ /dev/null
@@ -1,7 +0,0 @@
-
-#define CACHED_RAM0_NAME cram0
-#define CACHED_RAM0_ADDR 0x10000000
-#define CACHED_RAM0_SIZE 0x80000
-#define DEPLOY_RAM0_NAME uram0
-#define DEPLOY_RAM0_ADDR 0x10280000
-#define DEPLOY_RAM0_SIZE 0x80000
diff --git a/MPSoC/mutekh/arch/soclib/deployinfo_map.h b/MPSoC/mutekh/arch/soclib/deployinfo_map.h
deleted file mode 100644
index 205c5bc796..0000000000
--- a/MPSoC/mutekh/arch/soclib/deployinfo_map.h
+++ /dev/null
@@ -1,118 +0,0 @@
-
-#define MAP_A\
-
- .channel0 : {*(section_channel0)} > uram0
-
- .channel1 : {*(section_channel1)} > uram0
-
- .channel2 : {*(section_channel2)} > uram0
-
- .channel3 : {*(section_channel3)} > uram0
-
- .channel4 : {*(section_channel4)} > uram0
-
- .channel5 : {*(section_channel5)} > uram0
-
- .channel6 : {*(section_channel6)} > uram0
-
- .channel7 : {*(section_channel7)} > uram0
-
- .channel8 : {*(section_channel8)} > uram0
-
- .channel9 : {*(section_channel9)} > uram0
-
- .channel10 : {*(section_channel10)} > uram0
-
- .channel11 : {*(section_channel11)} > uram0
-
- .channel12 : {*(section_channel12)} > uram0
-
- .channel13 : {*(section_channel13)} > uram0
-
- .channel14 : {*(section_channel14)} > uram0
-
- .channel15 : {*(section_channel15)} > uram0
-
- .channel16 : {*(section_channel16)} > uram0
-
- .channel17 : {*(section_channel17)} > uram0
-
- .channel18 : {*(section_channel18)} > uram0
-
- .channel19 : {*(section_channel19)} > uram0
-
- .channel20 : {*(section_channel20)} > uram0
-
- .channel21 : {*(section_channel21)} > uram0
-
- .channel22 : {*(section_channel22)} > uram0
-
- .channel23 : {*(section_channel23)} > uram0
-
- .channel24 : {*(section_channel24)} > uram0
-
- .channel25 : {*(section_channel25)} > uram0
-
- .channel26 : {*(section_channel26)} > uram0
-
- .channel27 : {*(section_channel27)} > uram0
-
- .channel28 : {*(section_channel28)} > uram0
-
- .lock0 : { *(section_lock0)} > uram0
-
- .lock1 : { *(section_lock1)} > uram0
-
- .lock2 : { *(section_lock2)} > uram0
-
- .lock3 : { *(section_lock3)} > uram0
-
- .lock4 : { *(section_lock4)} > uram0
-
- .lock5 : { *(section_lock5)} > uram0
-
- .lock6 : { *(section_lock6)} > uram0
-
- .lock7 : { *(section_lock7)} > uram0
-
- .lock8 : { *(section_lock8)} > uram0
-
- .lock9 : { *(section_lock9)} > uram0
-
- .lock10 : { *(section_lock10)} > uram0
-
- .lock11 : { *(section_lock11)} > uram0
-
- .lock12 : { *(section_lock12)} > uram0
-
- .lock13 : { *(section_lock13)} > uram0
-
- .lock14 : { *(section_lock14)} > uram0
-
- .lock15 : { *(section_lock15)} > uram0
-
- .lock16 : { *(section_lock16)} > uram0
-
- .lock17 : { *(section_lock17)} > uram0
-
- .lock18 : { *(section_lock18)} > uram0
-
- .lock19 : { *(section_lock19)} > uram0
-
- .lock20 : { *(section_lock20)} > uram0
-
- .lock21 : { *(section_lock21)} > uram0
-
- .lock22 : { *(section_lock22)} > uram0
-
- .lock23 : { *(section_lock23)} > uram0
-
- .lock24 : { *(section_lock24)} > uram0
-
- .lock25 : { *(section_lock25)} > uram0
-
- .lock26 : { *(section_lock26)} > uram0
-
- .lock27 : { *(section_lock27)} > uram0
-
- .lock28 : { *(section_lock28)} > uram0
diff --git a/MPSoC/mutekh/arch/soclib/deployinfo_map.h-20-06 b/MPSoC/mutekh/arch/soclib/deployinfo_map.h-20-06
deleted file mode 100644
index 1be00be913..0000000000
--- a/MPSoC/mutekh/arch/soclib/deployinfo_map.h-20-06
+++ /dev/null
@@ -1,10 +0,0 @@
-
-#define MAP_A\
-
- .channel0 : { \
-*(section_channel0)\
-} > uram0\
-
- .lock0 : { \
-*(section_lock0)\
-} > vci_locks\
diff --git a/MPSoC/mutekh/arch/soclib/deployinfo_map.h27-06 b/MPSoC/mutekh/arch/soclib/deployinfo_map.h27-06
deleted file mode 100644
index 1be00be913..0000000000
--- a/MPSoC/mutekh/arch/soclib/deployinfo_map.h27-06
+++ /dev/null
@@ -1,10 +0,0 @@
-
-#define MAP_A\
-
- .channel0 : { \
-*(section_channel0)\
-} > uram0\
-
- .lock0 : { \
-*(section_lock0)\
-} > vci_locks\
diff --git a/MPSoC/mutekh/arch/soclib/deployinfo_ram.h b/MPSoC/mutekh/arch/soclib/deployinfo_ram.h
deleted file mode 100644
index 9b0e9b56c1..0000000000
--- a/MPSoC/mutekh/arch/soclib/deployinfo_ram.h
+++ /dev/null
@@ -1,175 +0,0 @@
-
-#if defined(DEPLOY_RAM0_NAME)
-	DEPLOY_RAM0_NAME (RWAL) : ORIGIN = DEPLOY_RAM0_ADDR, LENGTH = DEPLOY_RAM0_SIZE
-#endif
-#if defined(CACHED_RAM0_NAME)
-	CACHED_RAM0_NAME (RWAL) : ORIGIN = CACHED_RAM0_ADDR, LENGTH = CACHED_RAM0_SIZE
-#endif
-#if defined(DEPLOY_RAM1_NAME)
-	DEPLOY_RAM1_NAME (RWAL) : ORIGIN = DEPLOY_RAM1_ADDR, LENGTH = DEPLOY_RAM1_SIZE
-#endif
-#if defined(CACHED_RAM1_NAME)
-	CACHED_RAM1_NAME (RWAL) : ORIGIN = CACHED_RAM1_ADDR, LENGTH = CACHED_RAM1_SIZE
-#endif
-#if defined(DEPLOY_RAM2_NAME)
-	DEPLOY_RAM2_NAME (RWAL) : ORIGIN = DEPLOY_RAM2_ADDR, LENGTH = DEPLOY_RAM2_SIZE
-#endif
-#if defined(CACHED_RAM2_NAME)
-	CACHED_RAM2_NAME (RWAL) : ORIGIN = CACHED_RAM2_ADDR, LENGTH = CACHED_RAM2_SIZE
-#endif
-#if defined(DEPLOY_RAM3_NAME)
-	DEPLOY_RAM3_NAME (RWAL) : ORIGIN = DEPLOY_RAM3_ADDR, LENGTH = DEPLOY_RAM3_SIZE
-#endif
-#if defined(CACHED_RAM3_NAME)
-	CACHED_RAM3_NAME (RWAL) : ORIGIN = CACHED_RAM3_ADDR, LENGTH = CACHED_RAM3_SIZE
-#endif
-#if defined(DEPLOY_RAM4_NAME)
-	DEPLOY_RAM4_NAME (RWAL) : ORIGIN = DEPLOY_RAM4_ADDR, LENGTH = DEPLOY_RAM4_SIZE
-#endif
-#if defined(CACHED_RAM4_NAME)
-	CACHED_RAM4_NAME (RWAL) : ORIGIN = CACHED_RAM4_ADDR, LENGTH = CACHED_RAM4_SIZE
-#endif
-#if defined(DEPLOY_RAM5_NAME)
-	DEPLOY_RAM5_NAME (RWAL) : ORIGIN = DEPLOY_RAM5_ADDR, LENGTH = DEPLOY_RAM5_SIZE
-#endif
-#if defined(CACHED_RAM5_NAME)
-	CACHED_RAM5_NAME (RWAL) : ORIGIN = CACHED_RAM5_ADDR, LENGTH = CACHED_RAM5_SIZE
-#endif
-#if defined(DEPLOY_RAM6_NAME)
-	DEPLOY_RAM6_NAME (RWAL) : ORIGIN = DEPLOY_RAM6_ADDR, LENGTH = DEPLOY_RAM6_SIZE
-#endif
-#if defined(CACHED_RAM6_NAME)
-	CACHED_RAM6_NAME (RWAL) : ORIGIN = CACHED_RAM6_ADDR, LENGTH = CACHED_RAM6_SIZE
-#endif
-#if defined(DEPLOY_RAM7_NAME)
-	DEPLOY_RAM7_NAME (RWAL) : ORIGIN = DEPLOY_RAM7_ADDR, LENGTH = DEPLOY_RAM7_SIZE
-#endif
-#if defined(CACHED_RAM7_NAME)
-	CACHED_RAM7_NAME (RWAL) : ORIGIN = CACHED_RAM7_ADDR, LENGTH = CACHED_RAM7_SIZE
-#endif
-#if defined(DEPLOY_RAM8_NAME)
-	DEPLOY_RAM8_NAME (RWAL) : ORIGIN = DEPLOY_RAM8_ADDR, LENGTH = DEPLOY_RAM8_SIZE
-#endif
-#if defined(CACHED_RAM8_NAME)
-	CACHED_RAM8_NAME (RWAL) : ORIGIN = CACHED_RAM8_ADDR, LENGTH = CACHED_RAM8_SIZE
-#endif
-#if defined(DEPLOY_RAM9_NAME)
-	DEPLOY_RAM9_NAME (RWAL) : ORIGIN = DEPLOY_RAM9_ADDR, LENGTH = DEPLOY_RAM9_SIZE
-#endif
-#if defined(CACHED_RAM9_NAME)
-	CACHED_RAM9_NAME (RWAL) : ORIGIN = CACHED_RAM9_ADDR, LENGTH = CACHED_RAM9_SIZE
-#endif
-#if defined(DEPLOY_RAM10_NAME)
-	DEPLOY_RAM10_NAME (RWAL) : ORIGIN = DEPLOY_RAM10_ADDR, LENGTH = DEPLOY_RAM10_SIZE
-#endif
-#if defined(CACHED_RAM10_NAME)
-	CACHED_RAM10_NAME (RWAL) : ORIGIN = CACHED_RAM10_ADDR, LENGTH = CACHED_RAM10_SIZE
-#endif
-#if defined(DEPLOY_RAM11_NAME)
-	DEPLOY_RAM11_NAME (RWAL) : ORIGIN = DEPLOY_RAM11_ADDR, LENGTH = DEPLOY_RAM11_SIZE
-#endif
-#if defined(CACHED_RAM11_NAME)
-	CACHED_RAM11_NAME (RWAL) : ORIGIN = CACHED_RAM11_ADDR, LENGTH = CACHED_RAM11_SIZE
-#endif
-#if defined(DEPLOY_RAM12_NAME)
-	DEPLOY_RAM12_NAME (RWAL) : ORIGIN = DEPLOY_RAM12_ADDR, LENGTH = DEPLOY_RAM12_SIZE
-#endif
-#if defined(CACHED_RAM12_NAME)
-	CACHED_RAM12_NAME (RWAL) : ORIGIN = CACHED_RAM12_ADDR, LENGTH = CACHED_RAM12_SIZE
-#endif
-#if defined(DEPLOY_RAM13_NAME)
-	DEPLOY_RAM13_NAME (RWAL) : ORIGIN = DEPLOY_RAM13_ADDR, LENGTH = DEPLOY_RAM13_SIZE
-#endif
-#if defined(CACHED_RAM13_NAME)
-	CACHED_RAM13_NAME (RWAL) : ORIGIN = CACHED_RAM13_ADDR, LENGTH = CACHED_RAM13_SIZE
-#endif
-#if defined(DEPLOY_RAM14_NAME)
-	DEPLOY_RAM14_NAME (RWAL) : ORIGIN = DEPLOY_RAM14_ADDR, LENGTH = DEPLOY_RAM14_SIZE
-#endif
-#if defined(CACHED_RAM14_NAME)
-	CACHED_RAM14_NAME (RWAL) : ORIGIN = CACHED_RAM14_ADDR, LENGTH = CACHED_RAM14_SIZE
-#endif
-#if defined(DEPLOY_RAM15_NAME)
-	DEPLOY_RAM15_NAME (RWAL) : ORIGIN = DEPLOY_RAM15_ADDR, LENGTH = DEPLOY_RAM15_SIZE
-#endif
-#if defined(CACHED_RAM15_NAME)
-	CACHED_RAM15_NAME (RWAL) : ORIGIN = CACHED_RAM15_ADDR, LENGTH = CACHED_RAM15_SIZE
-#endif
-#if defined(DEPLOY_RAM16_NAME)
-	DEPLOY_RAM16_NAME (RWAL) : ORIGIN = DEPLOY_RAM16_ADDR, LENGTH = DEPLOY_RAM16_SIZE
-#endif
-#if defined(CACHED_RAM16_NAME)
-	CACHED_RAM16_NAME (RWAL) : ORIGIN = CACHED_RAM16_ADDR, LENGTH = CACHED_RAM16_SIZE
-#endif
-#if defined(DEPLOY_RAM17_NAME)
-	DEPLOY_RAM17_NAME (RWAL) : ORIGIN = DEPLOY_RAM17_ADDR, LENGTH = DEPLOY_RAM17_SIZE
-#endif
-#if defined(CACHED_RAM17_NAME)
-	CACHED_RAM17_NAME (RWAL) : ORIGIN = CACHED_RAM17_ADDR, LENGTH = CACHED_RAM17_SIZE
-#endif
-#if defined(DEPLOY_RAM18_NAME)
-	DEPLOY_RAM18_NAME (RWAL) : ORIGIN = DEPLOY_RAM18_ADDR, LENGTH = DEPLOY_RAM18_SIZE
-#endif
-#if defined(CACHED_RAM18_NAME)
-	CACHED_RAM18_NAME (RWAL) : ORIGIN = CACHED_RAM18_ADDR, LENGTH = CACHED_RAM18_SIZE
-#endif
-#if defined(DEPLOY_RAM19_NAME)
-	DEPLOY_RAM19_NAME (RWAL) : ORIGIN = DEPLOY_RAM19_ADDR, LENGTH = DEPLOY_RAM19_SIZE
-#endif
-#if defined(CACHED_RAM19_NAME)
-	CACHED_RAM19_NAME (RWAL) : ORIGIN = CACHED_RAM19_ADDR, LENGTH = CACHED_RAM19_SIZE
-#endif
-#if defined(DEPLOY_RAM20_NAME)
-	DEPLOY_RAM20_NAME (RWAL) : ORIGIN = DEPLOY_RAM20_ADDR, LENGTH = DEPLOY_RAM20_SIZE
-#endif
-#if defined(CACHED_RAM20_NAME)
-	CACHED_RAM20_NAME (RWAL) : ORIGIN = CACHED_RAM20_ADDR, LENGTH = CACHED_RAM20_SIZE
-#endif
-#if defined(DEPLOY_RAM21_NAME)
-	DEPLOY_RAM21_NAME (RWAL) : ORIGIN = DEPLOY_RAM21_ADDR, LENGTH = DEPLOY_RAM21_SIZE
-#endif
-#if defined(CACHED_RAM21_NAME)
-	CACHED_RAM21_NAME (RWAL) : ORIGIN = CACHED_RAM21_ADDR, LENGTH = CACHED_RAM21_SIZE
-#endif
-#if defined(DEPLOY_RAM22_NAME)
-	DEPLOY_RAM22_NAME (RWAL) : ORIGIN = DEPLOY_RAM22_ADDR, LENGTH = DEPLOY_RAM22_SIZE
-#endif
-#if defined(CACHED_RAM22_NAME)
-	CACHED_RAM22_NAME (RWAL) : ORIGIN = CACHED_RAM22_ADDR, LENGTH = CACHED_RAM22_SIZE
-#endif
-#if defined(DEPLOY_RAM23_NAME)
-	DEPLOY_RAM23_NAME (RWAL) : ORIGIN = DEPLOY_RAM23_ADDR, LENGTH = DEPLOY_RAM23_SIZE
-#endif
-#if defined(CACHED_RAM23_NAME)
-	CACHED_RAM23_NAME (RWAL) : ORIGIN = CACHED_RAM23_ADDR, LENGTH = CACHED_RAM23_SIZE
-#endif
-#if defined(DEPLOY_RAM24_NAME)
-	DEPLOY_RAM24_NAME (RWAL) : ORIGIN = DEPLOY_RAM24_ADDR, LENGTH = DEPLOY_RAM24_SIZE
-#endif
-#if defined(CACHED_RAM24_NAME)
-	CACHED_RAM24_NAME (RWAL) : ORIGIN = CACHED_RAM24_ADDR, LENGTH = CACHED_RAM24_SIZE
-#endif
-#if defined(DEPLOY_RAM25_NAME)
-	DEPLOY_RAM25_NAME (RWAL) : ORIGIN = DEPLOY_RAM25_ADDR, LENGTH = DEPLOY_RAM25_SIZE
-#endif
-#if defined(CACHED_RAM25_NAME)
-	CACHED_RAM25_NAME (RWAL) : ORIGIN = CACHED_RAM25_ADDR, LENGTH = CACHED_RAM25_SIZE
-#endif
-#if defined(DEPLOY_RAM26_NAME)
-	DEPLOY_RAM26_NAME (RWAL) : ORIGIN = DEPLOY_RAM26_ADDR, LENGTH = DEPLOY_RAM26_SIZE
-#endif
-#if defined(CACHED_RAM26_NAME)
-	CACHED_RAM26_NAME (RWAL) : ORIGIN = CACHED_RAM26_ADDR, LENGTH = CACHED_RAM26_SIZE
-#endif
-#if defined(DEPLOY_RAM27_NAME)
-	DEPLOY_RAM27_NAME (RWAL) : ORIGIN = DEPLOY_RAM27_ADDR, LENGTH = DEPLOY_RAM27_SIZE
-#endif
-#if defined(CACHED_RAM27_NAME)
-	CACHED_RAM27_NAME (RWAL) : ORIGIN = CACHED_RAM27_ADDR, LENGTH = CACHED_RAM27_SIZE
-#endif
-#if defined(DEPLOY_RAM28_NAME)
-	DEPLOY_RAM28_NAME (RWAL) : ORIGIN = DEPLOY_RAM28_ADDR, LENGTH = DEPLOY_RAM28_SIZE
-#endif
-#if defined(CACHED_RAM28_NAME)
-	CACHED_RAM28_NAME (RWAL) : ORIGIN = CACHED_RAM28_ADDR, LENGTH = CACHED_RAM28_SIZE
-#endif
diff --git a/MPSoC/mutekh/arch/soclib/ldscript.cpp-15-05 b/MPSoC/mutekh/arch/soclib/ldscript.cpp-15-05
deleted file mode 100644
index af21628dbc..0000000000
--- a/MPSoC/mutekh/arch/soclib/ldscript.cpp-15-05
+++ /dev/null
@@ -1,255 +0,0 @@
-/* The following contains information extracted from the deployment diagram */
-
-#include <arch/soclib/deployinfo.h>
-
-/*
-  We may have aliasing in rom/except/boot segments. If so, we merge
-  all we can in mem_rom segment.
-
-  We may also have alisasing of ram/rom (for bootloaded kernels), so
-  we may merge all we can in mem_ram.
- */
-
-/* ram + rom */
-#if CONFIG_RAM_ADDR == CONFIG_ROM_ADDR
-# define mem_rom mem_ram
-# if defined(CONFIG_CPU_RESET_HANDLER)
-#  error You may not have a reset handler with rom in ram
-# endif
-#endif
-
-/* The first two may only happen if reset handler is present */
-#if defined(CONFIG_CPU_RESET_HANDLER)
-
-/* boot + rom */
-# if CONFIG_CPU_RESET_ADDR == CONFIG_ROM_ADDR
-#  define mem_boot mem_rom
-# endif
-
-/* exception + boot
- *
- * boot may already be rom, and we'll have cascading defines */
-# if defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) && \
-     (CONFIG_CPU_EXCEPTION_FIXED_ADDRESS == CONFIG_CPU_RESET_ADDR)
-#  define mem_except mem_boot
-# endif
-
-#endif /* end if reset handler */
-
-
-/* exception + rom */
-#if ( (CONFIG_CPU_EXCEPTION_FIXED_ADDRESS == CONFIG_ROM_ADDR) ||   \
-	  !defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) ) &&			   \
-    !defined(mem_except)
-# define mem_except mem_rom
-#endif
-
-
-/*
-  Implement .data from rom (copied at boot) by putting all r/w data at
-  end of mem_rom. This is used for rom-only bootloaders.
- */
-#if defined(CONFIG_DATA_FROM_ROM)
-# define __AT_MEM_ROM AT>mem_rom
-#else
-# define __AT_MEM_ROM
-#endif
-
-
-MEMORY
-{
-#if defined(CONFIG_CPU_RESET_HANDLER) && !defined(mem_boot)
-	mem_boot (RXAL)  : ORIGIN = CONFIG_CPU_RESET_ADDR, LENGTH = CONFIG_CPU_RESET_SIZE
-#endif
-#if !defined(mem_except)
-	mem_except (RXAL)  : ORIGIN = CONFIG_CPU_EXCEPTION_FIXED_ADDRESS, LENGTH = 0x1000
-#endif
-#ifdef CONFIG_HET_BUILD
-    mem_hetrom (RXAL): ORIGIN = CONFIG_HETROM_ADDR, LENGTH = CONFIG_HETROM_SIZE
-#else
-# define mem_hetrom mem_rom
-#endif
-#if !defined(mem_rom)
-    mem_rom (RXAL): ORIGIN = CONFIG_ROM_ADDR, LENGTH = CONFIG_ROM_SIZE
-#endif
-    mem_ram (RWAL): ORIGIN = CONFIG_RAM_ADDR, LENGTH = CONFIG_RAM_SIZE
-//ajoute DG provisiore
-//mwmr_ram (RWAL): ORIGIN = 0xA0200000, LENGTH = 0x00001000
-//mwmrd_ram (RWAL): ORIGIN = 0xB0200000, LENGTH = 0x00003000
-//19.05. une seule RAMLOCKS en cas de besoin (actually unused)
-vci_locks (RWAL): ORIGIN = 0xC0200000, LENGTH = 0x100
-//ajoute DG
-#if defined(DEPLOY_RAM0_NAME)
-    DEPLOY_RAM0_NAME (RWAL): ORIGIN = DEPLOY_RAM0_ADDR, LENGTH = DEPLOY_RAM0_SIZE
-#endif
-#if defined(CACHED_RAM0_NAME)
-    CACHED_RAM0_NAME (RWAL): ORIGIN = CACHED_RAM0_ADDR, LENGTH = CACHED_RAM0_SIZE
-#endif
-#if defined(DEPLOY_RAM1_NAME)
-    DEPLOY_RAM1_NAME (RWAL): ORIGIN = DEPLOY_RAM1_ADDR, LENGTH = DEPLOY_RAM1_SIZE
-#endif
-#if defined(CACHED_RAM1_NAME)
-    CACHED_RAM1_NAME (RWAL): ORIGIN = CACHED_RAM1_ADDR, LENGTH = CACHED_RAM1_SIZE
-#endif
-#if defined(DEPLOY_RAM2_NAME)
-    DEPLOY_RAM2_NAME (RWAL): ORIGIN = DEPLOY_RAM2_ADDR, LENGTH = DEPLOY_RAM2_SIZE
-#endif
-#if defined(CACHED_RAM2_NAME)
-    CACHED_RAM2_NAME (RWAL): ORIGIN = CACHED_RAM2_ADDR, LENGTH = CACHED_RAM2_SIZE
-#endif
-#if defined(DEPLOY_RAM3_NAME)
-    DEPLOY_RAM3_NAME (RWAL): ORIGIN = DEPLOY_RAM3_ADDR, LENGTH = DEPLOY_RAM3_SIZE
-#endif
-#if defined(DEPLOY_RAM4_NAME)
-    DEPLOY_RAM4_NAME (RWAL): ORIGIN = DEPLOY_RAM4_ADDR, LENGTH = DEPLOY_RAM4_SIZE
-#endif
-#if defined(DEPLOY_RAM5_NAME)
-    DEPLOY_RAM5_NAME (RWAL): ORIGIN = DEPLOY_RAM5_ADDR, LENGTH = DEPLOY_RAM5_SIZE
-#endif
-#if defined(DEPLOY_RAM6_NAME)
-    DEPLOY_RAM6_NAME (RWAL): ORIGIN = DEPLOY_RAM6_ADDR, LENGTH = DEPLOY_RAM6_SIZE
-#endif
-#if defined(DEPLOY_RAM7_NAME)
-    DEPLOY_RAM7_NAME (RWAL): ORIGIN = DEPLOY_RAM7_ADDR, LENGTH = DEPLOY_RAM7_SIZE
-#endif
-#if defined(DEPLOY_RAM8_NAME)
-    DEPLOY_RAM8_NAME (RWAL): ORIGIN = DEPLOY_RAM8_ADDR, LENGTH = DEPLOY_RAM8_SIZE
-#endif
-#if defined(DEPLOY_RAM9_NAME)
-    DEPLOY_RAM9_NAME (RWAL): ORIGIN = DEPLOY_RAM9_ADDR, LENGTH = DEPLOY_RAM9_SIZE
-#endif
-#if defined(CACHED_RAM3_NAME)
-    CACHED_RAM3_NAME (RWAL): ORIGIN = CACHED_RAM3_ADDR, LENGTH = CACHED_RAM3_SIZE
-#endif
-#if defined(CACHED_RAM4_NAME)
-    CACHED_RAM4_NAME (RWAL): ORIGIN = CACHED_RAM4_ADDR, LENGTH = CACHED_RAM4_SIZE
-#endif
-#if defined(CACHED_RAM5_NAME)
-    CACHED_RAM5_NAME (RWAL): ORIGIN = CACHED_RAM5_ADDR, LENGTH = CACHED_RAM5_SIZE
-#endif
-#if defined(CACHED_RAM6_NAME)
-    CACHED_RAM6_NAME (RWAL): ORIGIN = CACHED_RAM6_ADDR, LENGTH = CACHED_RAM6_SIZE
-#endif
-#if defined(CACHED_RAM7_NAME)
-    CACHED_RAM7_NAME (RWAL): ORIGIN = CACHED_RAM7_ADDR, LENGTH = CACHED_RAM7_SIZE
-#endif
-#if defined(CACHED_RAM8_NAME)
-    CACHED_RAM8_NAME (RWAL): ORIGIN = CACHED_RAM8_ADDR, LENGTH = CACHED_RAM8_SIZE
-#endif
-#if defined(CACHED_RAM9_NAME)
-    CACHED_RAM9_NAME (RWAL): ORIGIN = CACHED_RAM9_ADDR, LENGTH = CACHED_RAM9_SIZE
-#endif
-//fin ajoute DG
-}
-
-SECTIONS
-{
-#if defined(CONFIG_CPU_RESET_HANDLER)
-	.boot : {
-		KEEP(*(.boot*))
-	} > mem_boot
-#endif
-
-	.text : {
-		*(.init*)
-		*(.text*)
-		*(.glue*)
-		*(.got2)
-	} > mem_hetrom
-
-	.rodata : {
-			*(.rodata*)
-            . = ALIGN(4);
-			global_driver_registry = .;
-			KEEP(*(.drivers))
-			global_driver_registry_end = .;
-	} > mem_rom
-
-	.excep : {
-#if !defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS)
-		/* On some architectures, exception vector is freely
-		 * relocatable up to a given alignment.
-		 *
-		 * We must set the correct pointer ASAP in the boot sequence,
-		 * dont forget reset vector is optional...
-		 */
-		. = ALIGN(CONFIG_CPU_EXCEPTION_ALIGN);
-#endif
-		__exception_base_ptr = .;
-		KEEP(*(.excep*))
-	} > mem_except
-
-
-	/* TLS/CLS are templates for newly allocated contexts/cpu's
-	 * private data. They are always read-only.
-	 *
-	 * On a non-smp machine, cpudata is read-write, but does not fall
-	 * in the cpudata section (it is normal global data), so we can
-	 * keep on linking this as r/o.
-	 */
-
-	/* CPU local data section */
-	.cpudata  0x0 : { *(.cpudata*) } AT> mem_rom
-
-	__cpu_data_start = LOADADDR(.cpudata);
-	__cpu_data_end = LOADADDR(.cpudata) + SIZEOF(.cpudata);
-
-	/* Task local data section */
-	.contextdata  0x0 : { *(.contextdata*) } AT> mem_rom
-
-	__context_data_start = LOADADDR(.contextdata);
-	__context_data_end = LOADADDR(.contextdata) + SIZEOF(.contextdata);
-
-	.data :	{
-		__data_start = ABSOLUTE(.);
-		*(.sdata*)
-		*(.data*)
-		*(.cpuarchdata*)
-	} > mem_ram __AT_MEM_ROM
-//ajoute DG
-#include <arch/soclib/deployinfo_map.h>
-//MAP_A
-//DG 19.5. a single RAMLOCKS
-// .lock0 : { *(section_lock0)} > vci_locks
-//fin ajoute DG
-	__data_load_start = LOADADDR(.data);
-	__data_load_end = LOADADDR(.data) + SIZEOF(.data);
-
-// #if defined(CONFIG_HET_BUILD)
-//     /DISCARD/ : {
-// #else
-    .bss : {
-		__bss_start = ABSOLUTE(.);
-// #endif
-		*(.sbss*)
-		*(COMMON)
-		*(.common*)
-		*(.scommon*)
-		*(.bss*)
-// #if !defined(CONFIG_HET_BUILD)
-		__bss_end = ABSOLUTE(.);
-	} > mem_ram
-// #else
-//     }
-
-//     __bss_end = 0;
-//     __bss_start = 0;
-// #endif
-
-	__system_uncached_heap_start = .;
-	__system_uncached_heap_end = ORIGIN(mem_ram) + LENGTH(mem_ram);
-
-#if defined(CONFIG_CPU_RESET_HANDLER)
-	. = ALIGN(CONFIG_HEXO_STACK_ALIGN);
-	__initial_stack = __system_uncached_heap_end;
-#endif
-
-	/* GOT section */
- 	/DISCARD/ : { *(.eh_frame) }
-
-#if !defined(CONFIG_CPU_NIOS2)
- 	ASSERT(__system_uncached_heap_start == __bss_end, "Unlinked sections found, please report a bug")
-#endif
-}
-
-ENTRY(arch_init)
diff --git a/MPSoC/mutekh/arch/soclib/ldscript.cpp-18-05 b/MPSoC/mutekh/arch/soclib/ldscript.cpp-18-05
deleted file mode 100644
index cb874fee26..0000000000
--- a/MPSoC/mutekh/arch/soclib/ldscript.cpp-18-05
+++ /dev/null
@@ -1,333 +0,0 @@
-/* The following contains information extracted from the deployment diagram */
-
-#include <arch/soclib/deployinfo.h>
-
-/*
-  We may have aliasing in rom/except/boot segments. If so, we merge
-  all we can in mem_rom segment.
-
-  We may also have alisasing of ram/rom (for bootloaded kernels), so
-  we may merge all we can in mem_ram.
- */
-
-/* ram + rom */
-#if CONFIG_RAM_ADDR == CONFIG_ROM_ADDR
-# define mem_rom mem_ram
-# if defined(CONFIG_CPU_RESET_HANDLER)
-#  error You may not have a reset handler with rom in ram
-# endif
-#endif
-
-/* The first two may only happen if reset handler is present */
-#if defined(CONFIG_CPU_RESET_HANDLER)
-
-/* boot + rom */
-# if CONFIG_CPU_RESET_ADDR == CONFIG_ROM_ADDR
-#  define mem_boot mem_rom
-# endif
-
-/* exception + boot
- *
- * boot may already be rom, and we'll have cascading defines */
-# if defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) && \
-     (CONFIG_CPU_EXCEPTION_FIXED_ADDRESS == CONFIG_CPU_RESET_ADDR)
-#  define mem_except mem_boot
-# endif
-
-#endif /* end if reset handler */
-
-
-/* exception + rom */
-#if ( (CONFIG_CPU_EXCEPTION_FIXED_ADDRESS == CONFIG_ROM_ADDR) ||   \
-	  !defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) ) &&			   \
-    !defined(mem_except)
-# define mem_except mem_rom
-#endif
-
-
-/*
-  Implement .data from rom (copied at boot) by putting all r/w data at
-  end of mem_rom. This is used for rom-only bootloaders.
- */
-#if defined(CONFIG_DATA_FROM_ROM)
-# define __AT_MEM_ROM AT>mem_rom
-#else
-# define __AT_MEM_ROM
-#endif
-
-
-MEMORY
-{
-#if defined(CONFIG_CPU_RESET_HANDLER) && !defined(mem_boot)
-	mem_boot (RXAL)  : ORIGIN = CONFIG_CPU_RESET_ADDR, LENGTH = CONFIG_CPU_RESET_SIZE
-#endif
-#if !defined(mem_except)
-	mem_except (RXAL)  : ORIGIN = CONFIG_CPU_EXCEPTION_FIXED_ADDRESS, LENGTH = 0x1000
-#endif
-#ifdef CONFIG_HET_BUILD
-    mem_hetrom (RXAL): ORIGIN = CONFIG_HETROM_ADDR, LENGTH = CONFIG_HETROM_SIZE
-#else
-# define mem_hetrom mem_rom
-#endif
-#if !defined(mem_rom)
-    mem_rom (RXAL): ORIGIN = CONFIG_ROM_ADDR, LENGTH = CONFIG_ROM_SIZE
-#endif
-    mem_ram (RWAL): ORIGIN = CONFIG_RAM_ADDR, LENGTH = CONFIG_RAM_SIZE
-//ajoute DG provisiore
-//mwmr_ram (RWAL): ORIGIN = 0xA0200000, LENGTH = 0x00001000
-//mwmrd_ram (RWAL): ORIGIN = 0xB0200000, LENGTH = 0x00003000
-//19.05. une seule RAMLOCKS en cas de besoin (actually unused)
-vci_locks (RWAL): ORIGIN = 0xC0200000, LENGTH = 0x100
-//ajoute DG
-#if defined(DEPLOY_RAM0_NAME)
-    DEPLOY_RAM0_NAME (RWAL): ORIGIN = DEPLOY_RAM0_ADDR, LENGTH = DEPLOY_RAM0_SIZE
-#endif
-#if defined(CACHED_RAM0_NAME)
-    CACHED_RAM0_NAME (RWAL): ORIGIN = CACHED_RAM0_ADDR, LENGTH = CACHED_RAM0_SIZE
-#endif
-#if defined(DEPLOY_RAM1_NAME)
-    DEPLOY_RAM1_NAME (RWAL): ORIGIN = DEPLOY_RAM1_ADDR, LENGTH = DEPLOY_RAM1_SIZE
-#endif
-#if defined(CACHED_RAM1_NAME)
-    CACHED_RAM1_NAME (RWAL): ORIGIN = CACHED_RAM1_ADDR, LENGTH = CACHED_RAM1_SIZE
-#endif
-#if defined(DEPLOY_RAM2_NAME)
-    DEPLOY_RAM2_NAME (RWAL): ORIGIN = DEPLOY_RAM2_ADDR, LENGTH = DEPLOY_RAM2_SIZE
-#endif
-#if defined(CACHED_RAM2_NAME)
-    CACHED_RAM2_NAME (RWAL): ORIGIN = CACHED_RAM2_ADDR, LENGTH = CACHED_RAM2_SIZE
-#endif
-#if defined(DEPLOY_RAM3_NAME)
-    DEPLOY_RAM3_NAME (RWAL): ORIGIN = DEPLOY_RAM3_ADDR, LENGTH = DEPLOY_RAM3_SIZE
-#endif
-#if defined(DEPLOY_RAM4_NAME)
-    DEPLOY_RAM4_NAME (RWAL): ORIGIN = DEPLOY_RAM4_ADDR, LENGTH = DEPLOY_RAM4_SIZE
-#endif
-#if defined(DEPLOY_RAM5_NAME)
-    DEPLOY_RAM5_NAME (RWAL): ORIGIN = DEPLOY_RAM5_ADDR, LENGTH = DEPLOY_RAM5_SIZE
-#endif
-#if defined(DEPLOY_RAM6_NAME)
-    DEPLOY_RAM6_NAME (RWAL): ORIGIN = DEPLOY_RAM6_ADDR, LENGTH = DEPLOY_RAM6_SIZE
-#endif
-#if defined(DEPLOY_RAM7_NAME)
-    DEPLOY_RAM7_NAME (RWAL): ORIGIN = DEPLOY_RAM7_ADDR, LENGTH = DEPLOY_RAM7_SIZE
-#endif
-#if defined(DEPLOY_RAM8_NAME)
-    DEPLOY_RAM8_NAME (RWAL): ORIGIN = DEPLOY_RAM8_ADDR, LENGTH = DEPLOY_RAM8_SIZE
-#endif
-#if defined(DEPLOY_RAM9_NAME)
-    DEPLOY_RAM9_NAME (RWAL): ORIGIN = DEPLOY_RAM9_ADDR, LENGTH = DEPLOY_RAM9_SIZE
-#endif
-#if defined(DEPLOY_RAM10_NAME)
-    DEPLOY_RAM10_NAME (RWAL): ORIGIN = DEPLOY_RAM0_ADDR, LENGTH = DEPLOY_RAM0_SIZE
-#endif
-#if defined(CACHED_RAM10_NAME)
-    CACHED_RAM10_NAME (RWAL): ORIGIN = CACHED_RAM0_ADDR, LENGTH = CACHED_RAM0_SIZE
-#endif
-#if defined(DEPLOY_RAM11_NAME)
-    DEPLOY_RAM11_NAME (RWAL): ORIGIN = DEPLOY_RAM1_ADDR, LENGTH = DEPLOY_RAM1_SIZE
-#endif
-#if defined(CACHED_RAM11_NAME)
-    CACHED_RAM1_NAME (RWAL): ORIGIN = CACHED_RAM1_ADDR, LENGTH = CACHED_RAM1_SIZE
-#endif
-#if defined(DEPLOY_RAM12_NAME)
-    DEPLOY_RAM12_NAME (RWAL): ORIGIN = DEPLOY_RAM2_ADDR, LENGTH = DEPLOY_RAM2_SIZE
-#endif
-#if defined(CACHED_RAM12_NAME)
-    CACHED_RAM12_NAME (RWAL): ORIGIN = CACHED_RAM2_ADDR, LENGTH = CACHED_RAM2_SIZE
-#endif
-#if defined(DEPLOY_RAM13_NAME)
-    DEPLOY_RAM13_NAME (RWAL): ORIGIN = DEPLOY_RAM2_ADDR, LENGTH = DEPLOY_RAM2_SIZE
-#endif
-#if defined(CACHED_RAM13_NAME)
-    CACHED_RAM13_NAME (RWAL): ORIGIN = CACHED_RAM3_ADDR, LENGTH = CACHED_RAM3_SIZE
-#endif
-#if defined(DEPLOY_RAM14_NAME)
-    DEPLOY_RAM13_NAME (RWAL): ORIGIN = DEPLOY_RAM2_ADDR, LENGTH = DEPLOY_RAM2_SIZE
-#endif
-#if defined(CACHED_RAM14_NAME)
-    CACHED_RAM4_NAME (RWAL): ORIGIN = CACHED_RAM4_ADDR, LENGTH = CACHED_RAM4_SIZE
-#endif
-#if defined(DEPLOY_RAM15_NAME)
-    DEPLOY_RAM15_NAME (RWAL): ORIGIN = DEPLOY_RAM2_ADDR, LENGTH = DEPLOY_RAM2_SIZE
-#endif
-#if defined(CACHED_RAM15_NAME)
-    CACHED_RAM15_NAME (RWAL): ORIGIN = CACHED_RAM5_ADDR, LENGTH = CACHED_RAM5_SIZE
-#endif
-#if defined(DEPLOY_RAM16_NAME)
-    DEPLOY_RAM16_NAME (RWAL): ORIGIN = DEPLOY_RAM2_ADDR, LENGTH = DEPLOY_RAM2_SIZE
-#endif
-#if defined(CACHED_RAM16_NAME)
-    CACHED_RAM16_NAME (RWAL): ORIGIN = CACHED_RAM6_ADDR, LENGTH = CACHED_RAM6_SIZE
-#endif
-#if defined(DEPLOY_RAM17_NAME)
-    DEPLOY_RAM17_NAME (RWAL): ORIGIN = DEPLOY_RAM2_ADDR, LENGTH = DEPLOY_RAM2_SIZE
-#endif
-#if defined(CACHED_RAM17_NAME)
-    CACHED_RAM17_NAME (RWAL): ORIGIN = CACHED_RAM7_ADDR, LENGTH = CACHED_RAM7_SIZE
-#endif
-#if defined(DEPLOY_RAM18_NAME)
-    DEPLOY_RAM18_NAME (RWAL): ORIGIN = DEPLOY_RAM0_ADDR, LENGTH = DEPLOY_RAM0_SIZE
-#endif
-#if defined(CACHED_RAM18_NAME)
-    CACHED_RAM8_NAME (RWAL): ORIGIN = CACHED_RAM8_ADDR, LENGTH = CACHED_RAM8_SIZE
-#endif
-#if defined(DEPLOY_RAM19_NAME)
-    DEPLOY_RAM19_NAME (RWAL): ORIGIN = DEPLOY_RAM0_ADDR, LENGTH = DEPLOY_RAM0_SIZE
-#endif
-#if defined(CACHED_RAM19_NAME)
-    CACHED_RAM19_NAME (RWAL): ORIGIN = CACHED_RAM9_ADDR, LENGTH = CACHED_RAM9_SIZE
-#endif
-#if defined(DEPLOY_RAM20_NAME)
-    DEPLOY_RAM20_NAME (RWAL): ORIGIN = DEPLOY_RAM0_ADDR, LENGTH = DEPLOY_RAM0_SIZE
-#endif
-#if defined(CACHED_RAM20_NAME)
-    CACHED_RAM20_NAME (RWAL): ORIGIN = CACHED_RAM0_ADDR, LENGTH = CACHED_RAM0_SIZE
-#endif
-#if defined(DEPLOY_RAM21_NAME)
-    DEPLOY_RAM21_NAME (RWAL): ORIGIN = DEPLOY_RAM1_ADDR, LENGTH = DEPLOY_RAM1_SIZE
-#endif
-#if defined(CACHED_RAM21_NAME)
-    CACHED_RAM21_NAME (RWAL): ORIGIN = CACHED_RAM1_ADDR, LENGTH = CACHED_RAM1_SIZE
-#endif
-#if defined(DEPLOY_RAM22_NAME)
-    DEPLOY_RAM22_NAME (RWAL): ORIGIN = DEPLOY_RAM2_ADDR, LENGTH = DEPLOY_RAM2_SIZE
-#endif
-#if defined(CACHED_RAM22_NAME)
-    CACHED_RAM22_NAME (RWAL): ORIGIN = CACHED_RAM2_ADDR, LENGTH = CACHED_RAM2_SIZE
-#endif
-#if defined(DEPLOY_RAM23_NAME)
-    DEPLOY_RAM23_NAME (RWAL): ORIGIN = DEPLOY_RAM3_ADDR, LENGTH = DEPLOY_RAM3_SIZE
-#endif
-#if defined(DEPLOY_RAM24_NAME)
-    DEPLOY_RAM24_NAME (RWAL): ORIGIN = DEPLOY_RAM4_ADDR, LENGTH = DEPLOY_RAM4_SIZE
-#endif
-#if defined(DEPLOY_RAM25_NAME)
-    DEPLOY_RAM25_NAME (RWAL): ORIGIN = DEPLOY_RAM5_ADDR, LENGTH = DEPLOY_RAM5_SIZE
-#endif
-#if defined(DEPLOY_RAM26_NAME)
-    DEPLOY_RAM26_NAME (RWAL): ORIGIN = DEPLOY_RAM6_ADDR, LENGTH = DEPLOY_RAM6_SIZE
-#endif
-#if defined(DEPLOY_RAM27_NAME)
-    DEPLOY_RAM27_NAME (RWAL): ORIGIN = DEPLOY_RAM7_ADDR, LENGTH = DEPLOY_RAM7_SIZE
-#endif
-#if defined(DEPLOY_RAM28_NAME)
-    DEPLOY_RAM28_NAME (RWAL): ORIGIN = DEPLOY_RAM8_ADDR, LENGTH = DEPLOY_RAM8_SIZE
-#endif
-#if defined(DEPLOY_RAM29_NAME)
-    DEPLOY_RAM29_NAME (RWAL): ORIGIN = DEPLOY_RAM9_ADDR, LENGTH = DEPLOY_RAM9_SIZE
-#endif
-//fin ajoute DG
-}
-
-SECTIONS
-{
-#if defined(CONFIG_CPU_RESET_HANDLER)
-	.boot : {
-		KEEP(*(.boot*))
-	} > mem_boot
-#endif
-
-	.text : {
-		*(.init*)
-		*(.text*)
-		*(.glue*)
-		*(.got2)
-	} > mem_hetrom
-
-	.rodata : {
-			*(.rodata*)
-            . = ALIGN(4);
-			global_driver_registry = .;
-			KEEP(*(.drivers))
-			global_driver_registry_end = .;
-	} > mem_rom
-
-	.excep : {
-#if !defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS)
-		/* On some architectures, exception vector is freely
-		 * relocatable up to a given alignment.
-		 *
-		 * We must set the correct pointer ASAP in the boot sequence,
-		 * dont forget reset vector is optional...
-		 */
-		. = ALIGN(CONFIG_CPU_EXCEPTION_ALIGN);
-#endif
-		__exception_base_ptr = .;
-		KEEP(*(.excep*))
-	} > mem_except
-
-
-	/* TLS/CLS are templates for newly allocated contexts/cpu's
-	 * private data. They are always read-only.
-	 *
-	 * On a non-smp machine, cpudata is read-write, but does not fall
-	 * in the cpudata section (it is normal global data), so we can
-	 * keep on linking this as r/o.
-	 */
-
-	/* CPU local data section */
-	.cpudata  0x0 : { *(.cpudata*) } AT> mem_rom
-
-	__cpu_data_start = LOADADDR(.cpudata);
-	__cpu_data_end = LOADADDR(.cpudata) + SIZEOF(.cpudata);
-
-	/* Task local data section */
-	.contextdata  0x0 : { *(.contextdata*) } AT> mem_rom
-
-	__context_data_start = LOADADDR(.contextdata);
-	__context_data_end = LOADADDR(.contextdata) + SIZEOF(.contextdata);
-
-	.data :	{
-		__data_start = ABSOLUTE(.);
-		*(.sdata*)
-		*(.data*)
-		*(.cpuarchdata*)
-	} > mem_ram __AT_MEM_ROM
-//ajoute DG
-#include <arch/soclib/deployinfo_map.h>
-//MAP_A
-//DG 19.5. a single RAMLOCKS
-// .lock0 : { *(section_lock0)} > vci_locks
-//fin ajoute DG
-	__data_load_start = LOADADDR(.data);
-	__data_load_end = LOADADDR(.data) + SIZEOF(.data);
-
-// #if defined(CONFIG_HET_BUILD)
-//     /DISCARD/ : {
-// #else
-    .bss : {
-		__bss_start = ABSOLUTE(.);
-// #endif
-		*(.sbss*)
-		*(COMMON)
-		*(.common*)
-		*(.scommon*)
-		*(.bss*)
-// #if !defined(CONFIG_HET_BUILD)
-		__bss_end = ABSOLUTE(.);
-	} > mem_ram
-// #else
-//     }
-
-//     __bss_end = 0;
-//     __bss_start = 0;
-// #endif
-
-	__system_uncached_heap_start = .;
-	__system_uncached_heap_end = ORIGIN(mem_ram) + LENGTH(mem_ram);
-
-#if defined(CONFIG_CPU_RESET_HANDLER)
-	. = ALIGN(CONFIG_HEXO_STACK_ALIGN);
-	__initial_stack = __system_uncached_heap_end;
-#endif
-
-	/* GOT section */
- 	/DISCARD/ : { *(.eh_frame) }
-
-#if !defined(CONFIG_CPU_NIOS2)
- 	ASSERT(__system_uncached_heap_start == __bss_end, "Unlinked sections found, please report a bug")
-#endif
-}
-
-ENTRY(arch_init)
diff --git a/MPSoC/mutekh/arch/soclib/ldscript.cpp-19-05 b/MPSoC/mutekh/arch/soclib/ldscript.cpp-19-05
deleted file mode 100644
index e5166f6bbd..0000000000
--- a/MPSoC/mutekh/arch/soclib/ldscript.cpp-19-05
+++ /dev/null
@@ -1,252 +0,0 @@
-/* The following contains information extracted from the deployment diagram */
-
-#include <arch/soclib/deployinfo.h>
-
-/*
-  We may have aliasing in rom/except/boot segments. If so, we merge
-  all we can in mem_rom segment.
-
-  We may also have alisasing of ram/rom (for bootloaded kernels), so
-  we may merge all we can in mem_ram.
- */
-
-/* ram + rom */
-#if CONFIG_RAM_ADDR == CONFIG_ROM_ADDR
-# define mem_rom mem_ram
-# if defined(CONFIG_CPU_RESET_HANDLER)
-#  error You may not have a reset handler with rom in ram
-# endif
-#endif
-
-/* The first two may only happen if reset handler is present */
-#if defined(CONFIG_CPU_RESET_HANDLER)
-
-/* boot + rom */
-# if CONFIG_CPU_RESET_ADDR == CONFIG_ROM_ADDR
-#  define mem_boot mem_rom
-# endif
-
-/* exception + boot
- *
- * boot may already be rom, and we'll have cascading defines */
-# if defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) && \
-     (CONFIG_CPU_EXCEPTION_FIXED_ADDRESS == CONFIG_CPU_RESET_ADDR)
-#  define mem_except mem_boot
-# endif
-
-#endif /* end if reset handler */
-
-
-/* exception + rom */
-#if ( (CONFIG_CPU_EXCEPTION_FIXED_ADDRESS == CONFIG_ROM_ADDR) ||   \
-	  !defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) ) &&			   \
-    !defined(mem_except)
-# define mem_except mem_rom
-#endif
-
-
-/*
-  Implement .data from rom (copied at boot) by putting all r/w data at
-  end of mem_rom. This is used for rom-only bootloaders.
- */
-#if defined(CONFIG_DATA_FROM_ROM)
-# define __AT_MEM_ROM AT>mem_rom
-#else
-# define __AT_MEM_ROM
-#endif
-
-
-MEMORY
-{
-#if defined(CONFIG_CPU_RESET_HANDLER) && !defined(mem_boot)
-	mem_boot (RXAL)  : ORIGIN = CONFIG_CPU_RESET_ADDR, LENGTH = CONFIG_CPU_RESET_SIZE
-#endif
-#if !defined(mem_except)
-	mem_except (RXAL)  : ORIGIN = CONFIG_CPU_EXCEPTION_FIXED_ADDRESS, LENGTH = 0x1000
-#endif
-#ifdef CONFIG_HET_BUILD
-    mem_hetrom (RXAL): ORIGIN = CONFIG_HETROM_ADDR, LENGTH = CONFIG_HETROM_SIZE
-#else
-# define mem_hetrom mem_rom
-#endif
-#if !defined(mem_rom)
-    mem_rom (RXAL): ORIGIN = CONFIG_ROM_ADDR, LENGTH = CONFIG_ROM_SIZE
-#endif
-    mem_ram (RWAL): ORIGIN = CONFIG_RAM_ADDR, LENGTH = CONFIG_RAM_SIZE
-//ajoute DG provisiore
-mwmr_ram (RWAL): ORIGIN = 0xA0200000, LENGTH = 0x00001000
-mwmrd_ram (RWAL): ORIGIN = 0xB0200000, LENGTH = 0x00003000
-
-//ajoute DG
-#if defined(DEPLOY_RAM0_NAME)
-    DEPLOY_RAM0_NAME (RWAL): ORIGIN = DEPLOY_RAM0_ADDR, LENGTH = DEPLOY_RAM0_SIZE
-#endif
-#if defined(CACHED_RAM0_NAME)
-    CACHED_RAM0_NAME (RWAL): ORIGIN = CACHED_RAM0_ADDR, LENGTH = CACHED_RAM0_SIZE
-#endif
-#if defined(DEPLOY_RAM1_NAME)
-    DEPLOY_RAM1_NAME (RWAL): ORIGIN = DEPLOY_RAM1_ADDR, LENGTH = DEPLOY_RAM1_SIZE
-#endif
-#if defined(CACHED_RAM1_NAME)
-    CACHED_RAM1_NAME (RWAL): ORIGIN = CACHED_RAM1_ADDR, LENGTH = CACHED_RAM1_SIZE
-#endif
-#if defined(DEPLOY_RAM2_NAME)
-    DEPLOY_RAM2_NAME (RWAL): ORIGIN = DEPLOY_RAM2_ADDR, LENGTH = DEPLOY_RAM2_SIZE
-#endif
-#if defined(CACHED_RAM2_NAME)
-    CACHED_RAM2_NAME (RWAL): ORIGIN = CACHED_RAM2_ADDR, LENGTH = CACHED_RAM2_SIZE
-#endif
-#if defined(DEPLOY_RAM3_NAME)
-    DEPLOY_RAM3_NAME (RWAL): ORIGIN = DEPLOY_RAM3_ADDR, LENGTH = DEPLOY_RAM3_SIZE
-#endif
-#if defined(DEPLOY_RAM4_NAME)
-    DEPLOY_RAM4_NAME (RWAL): ORIGIN = DEPLOY_RAM4_ADDR, LENGTH = DEPLOY_RAM4_SIZE
-#endif
-#if defined(DEPLOY_RAM5_NAME)
-    DEPLOY_RAM5_NAME (RWAL): ORIGIN = DEPLOY_RAM5_ADDR, LENGTH = DEPLOY_RAM5_SIZE
-#endif
-#if defined(DEPLOY_RAM6_NAME)
-    DEPLOY_RAM6_NAME (RWAL): ORIGIN = DEPLOY_RAM6_ADDR, LENGTH = DEPLOY_RAM6_SIZE
-#endif
-#if defined(DEPLOY_RAM7_NAME)
-    DEPLOY_RAM7_NAME (RWAL): ORIGIN = DEPLOY_RAM7_ADDR, LENGTH = DEPLOY_RAM7_SIZE
-#endif
-#if defined(DEPLOY_RAM8_NAME)
-    DEPLOY_RAM8_NAME (RWAL): ORIGIN = DEPLOY_RAM8_ADDR, LENGTH = DEPLOY_RAM8_SIZE
-#endif
-#if defined(DEPLOY_RAM9_NAME)
-    DEPLOY_RAM9_NAME (RWAL): ORIGIN = DEPLOY_RAM9_ADDR, LENGTH = DEPLOY_RAM9_SIZE
-#endif
-#if defined(CACHED_RAM3_NAME)
-    CACHED_RAM3_NAME (RWAL): ORIGIN = CACHED_RAM3_ADDR, LENGTH = CACHED_RAM3_SIZE
-#endif
-#if defined(CACHED_RAM4_NAME)
-    CACHED_RAM4_NAME (RWAL): ORIGIN = CACHED_RAM4_ADDR, LENGTH = CACHED_RAM4_SIZE
-#endif
-#if defined(CACHED_RAM5_NAME)
-    CACHED_RAM5_NAME (RWAL): ORIGIN = CACHED_RAM5_ADDR, LENGTH = CACHED_RAM5_SIZE
-#endif
-#if defined(CACHED_RAM6_NAME)
-    CACHED_RAM6_NAME (RWAL): ORIGIN = CACHED_RAM6_ADDR, LENGTH = CACHED_RAM6_SIZE
-#endif
-#if defined(CACHED_RAM7_NAME)
-    CACHED_RAM7_NAME (RWAL): ORIGIN = CACHED_RAM7_ADDR, LENGTH = CACHED_RAM7_SIZE
-#endif
-#if defined(CACHED_RAM8_NAME)
-    CACHED_RAM8_NAME (RWAL): ORIGIN = CACHED_RAM8_ADDR, LENGTH = CACHED_RAM8_SIZE
-#endif
-#if defined(CACHED_RAM9_NAME)
-    CACHED_RAM9_NAME (RWAL): ORIGIN = CACHED_RAM9_ADDR, LENGTH = CACHED_RAM9_SIZE
-#endif
-//fin ajoute DG
-}
-
-SECTIONS
-{
-#if defined(CONFIG_CPU_RESET_HANDLER)
-	.boot : {
-		KEEP(*(.boot*))
-	} > mem_boot
-#endif
-
-	.text : {
-		*(.init*)
-		*(.text*)
-		*(.glue*)
-		*(.got2)
-	} > mem_hetrom
-
-	.rodata : {
-			*(.rodata*)
-            . = ALIGN(4);
-			global_driver_registry = .;
-			KEEP(*(.drivers))
-			global_driver_registry_end = .;
-	} > mem_rom
-
-	.excep : {
-#if !defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS)
-		/* On some architectures, exception vector is freely
-		 * relocatable up to a given alignment.
-		 *
-		 * We must set the correct pointer ASAP in the boot sequence,
-		 * dont forget reset vector is optional...
-		 */
-		. = ALIGN(CONFIG_CPU_EXCEPTION_ALIGN);
-#endif
-		__exception_base_ptr = .;
-		KEEP(*(.excep*))
-	} > mem_except
-
-
-	/* TLS/CLS are templates for newly allocated contexts/cpu's
-	 * private data. They are always read-only.
-	 *
-	 * On a non-smp machine, cpudata is read-write, but does not fall
-	 * in the cpudata section (it is normal global data), so we can
-	 * keep on linking this as r/o.
-	 */
-
-	/* CPU local data section */
-	.cpudata  0x0 : { *(.cpudata*) } AT> mem_rom
-
-	__cpu_data_start = LOADADDR(.cpudata);
-	__cpu_data_end = LOADADDR(.cpudata) + SIZEOF(.cpudata);
-
-	/* Task local data section */
-	.contextdata  0x0 : { *(.contextdata*) } AT> mem_rom
-
-	__context_data_start = LOADADDR(.contextdata);
-	__context_data_end = LOADADDR(.contextdata) + SIZEOF(.contextdata);
-
-	.data :	{
-		__data_start = ABSOLUTE(.);
-		*(.sdata*)
-		*(.data*)
-		*(.cpuarchdata*)
-	} > mem_ram __AT_MEM_ROM
-//ajoute DG
-#include <arch/soclib/deployinfo_map.h>
-//MAP_A
-//fin ajoute DG
-	__data_load_start = LOADADDR(.data);
-	__data_load_end = LOADADDR(.data) + SIZEOF(.data);
-
-// #if defined(CONFIG_HET_BUILD)
-//     /DISCARD/ : {
-// #else
-    .bss : {
-		__bss_start = ABSOLUTE(.);
-// #endif
-		*(.sbss*)
-		*(COMMON)
-		*(.common*)
-		*(.scommon*)
-		*(.bss*)
-// #if !defined(CONFIG_HET_BUILD)
-		__bss_end = ABSOLUTE(.);
-	} > mem_ram
-// #else
-//     }
-
-//     __bss_end = 0;
-//     __bss_start = 0;
-// #endif
-
-	__system_uncached_heap_start = .;
-	__system_uncached_heap_end = ORIGIN(mem_ram) + LENGTH(mem_ram);
-
-#if defined(CONFIG_CPU_RESET_HANDLER)
-	. = ALIGN(CONFIG_HEXO_STACK_ALIGN);
-	__initial_stack = __system_uncached_heap_end;
-#endif
-
-	/* GOT section */
- 	/DISCARD/ : { *(.eh_frame) }
-
-#if !defined(CONFIG_CPU_NIOS2)
- 	ASSERT(__system_uncached_heap_start == __bss_end, "Unlinked sections found, please report a bug")
-#endif
-}
-
-ENTRY(arch_init)
diff --git a/MPSoC/mutekh/arch/soclib/ldscript.cpp-2-2-2017 b/MPSoC/mutekh/arch/soclib/ldscript.cpp-2-2-2017
deleted file mode 100644
index af21628dbc..0000000000
--- a/MPSoC/mutekh/arch/soclib/ldscript.cpp-2-2-2017
+++ /dev/null
@@ -1,255 +0,0 @@
-/* The following contains information extracted from the deployment diagram */
-
-#include <arch/soclib/deployinfo.h>
-
-/*
-  We may have aliasing in rom/except/boot segments. If so, we merge
-  all we can in mem_rom segment.
-
-  We may also have alisasing of ram/rom (for bootloaded kernels), so
-  we may merge all we can in mem_ram.
- */
-
-/* ram + rom */
-#if CONFIG_RAM_ADDR == CONFIG_ROM_ADDR
-# define mem_rom mem_ram
-# if defined(CONFIG_CPU_RESET_HANDLER)
-#  error You may not have a reset handler with rom in ram
-# endif
-#endif
-
-/* The first two may only happen if reset handler is present */
-#if defined(CONFIG_CPU_RESET_HANDLER)
-
-/* boot + rom */
-# if CONFIG_CPU_RESET_ADDR == CONFIG_ROM_ADDR
-#  define mem_boot mem_rom
-# endif
-
-/* exception + boot
- *
- * boot may already be rom, and we'll have cascading defines */
-# if defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) && \
-     (CONFIG_CPU_EXCEPTION_FIXED_ADDRESS == CONFIG_CPU_RESET_ADDR)
-#  define mem_except mem_boot
-# endif
-
-#endif /* end if reset handler */
-
-
-/* exception + rom */
-#if ( (CONFIG_CPU_EXCEPTION_FIXED_ADDRESS == CONFIG_ROM_ADDR) ||   \
-	  !defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) ) &&			   \
-    !defined(mem_except)
-# define mem_except mem_rom
-#endif
-
-
-/*
-  Implement .data from rom (copied at boot) by putting all r/w data at
-  end of mem_rom. This is used for rom-only bootloaders.
- */
-#if defined(CONFIG_DATA_FROM_ROM)
-# define __AT_MEM_ROM AT>mem_rom
-#else
-# define __AT_MEM_ROM
-#endif
-
-
-MEMORY
-{
-#if defined(CONFIG_CPU_RESET_HANDLER) && !defined(mem_boot)
-	mem_boot (RXAL)  : ORIGIN = CONFIG_CPU_RESET_ADDR, LENGTH = CONFIG_CPU_RESET_SIZE
-#endif
-#if !defined(mem_except)
-	mem_except (RXAL)  : ORIGIN = CONFIG_CPU_EXCEPTION_FIXED_ADDRESS, LENGTH = 0x1000
-#endif
-#ifdef CONFIG_HET_BUILD
-    mem_hetrom (RXAL): ORIGIN = CONFIG_HETROM_ADDR, LENGTH = CONFIG_HETROM_SIZE
-#else
-# define mem_hetrom mem_rom
-#endif
-#if !defined(mem_rom)
-    mem_rom (RXAL): ORIGIN = CONFIG_ROM_ADDR, LENGTH = CONFIG_ROM_SIZE
-#endif
-    mem_ram (RWAL): ORIGIN = CONFIG_RAM_ADDR, LENGTH = CONFIG_RAM_SIZE
-//ajoute DG provisiore
-//mwmr_ram (RWAL): ORIGIN = 0xA0200000, LENGTH = 0x00001000
-//mwmrd_ram (RWAL): ORIGIN = 0xB0200000, LENGTH = 0x00003000
-//19.05. une seule RAMLOCKS en cas de besoin (actually unused)
-vci_locks (RWAL): ORIGIN = 0xC0200000, LENGTH = 0x100
-//ajoute DG
-#if defined(DEPLOY_RAM0_NAME)
-    DEPLOY_RAM0_NAME (RWAL): ORIGIN = DEPLOY_RAM0_ADDR, LENGTH = DEPLOY_RAM0_SIZE
-#endif
-#if defined(CACHED_RAM0_NAME)
-    CACHED_RAM0_NAME (RWAL): ORIGIN = CACHED_RAM0_ADDR, LENGTH = CACHED_RAM0_SIZE
-#endif
-#if defined(DEPLOY_RAM1_NAME)
-    DEPLOY_RAM1_NAME (RWAL): ORIGIN = DEPLOY_RAM1_ADDR, LENGTH = DEPLOY_RAM1_SIZE
-#endif
-#if defined(CACHED_RAM1_NAME)
-    CACHED_RAM1_NAME (RWAL): ORIGIN = CACHED_RAM1_ADDR, LENGTH = CACHED_RAM1_SIZE
-#endif
-#if defined(DEPLOY_RAM2_NAME)
-    DEPLOY_RAM2_NAME (RWAL): ORIGIN = DEPLOY_RAM2_ADDR, LENGTH = DEPLOY_RAM2_SIZE
-#endif
-#if defined(CACHED_RAM2_NAME)
-    CACHED_RAM2_NAME (RWAL): ORIGIN = CACHED_RAM2_ADDR, LENGTH = CACHED_RAM2_SIZE
-#endif
-#if defined(DEPLOY_RAM3_NAME)
-    DEPLOY_RAM3_NAME (RWAL): ORIGIN = DEPLOY_RAM3_ADDR, LENGTH = DEPLOY_RAM3_SIZE
-#endif
-#if defined(DEPLOY_RAM4_NAME)
-    DEPLOY_RAM4_NAME (RWAL): ORIGIN = DEPLOY_RAM4_ADDR, LENGTH = DEPLOY_RAM4_SIZE
-#endif
-#if defined(DEPLOY_RAM5_NAME)
-    DEPLOY_RAM5_NAME (RWAL): ORIGIN = DEPLOY_RAM5_ADDR, LENGTH = DEPLOY_RAM5_SIZE
-#endif
-#if defined(DEPLOY_RAM6_NAME)
-    DEPLOY_RAM6_NAME (RWAL): ORIGIN = DEPLOY_RAM6_ADDR, LENGTH = DEPLOY_RAM6_SIZE
-#endif
-#if defined(DEPLOY_RAM7_NAME)
-    DEPLOY_RAM7_NAME (RWAL): ORIGIN = DEPLOY_RAM7_ADDR, LENGTH = DEPLOY_RAM7_SIZE
-#endif
-#if defined(DEPLOY_RAM8_NAME)
-    DEPLOY_RAM8_NAME (RWAL): ORIGIN = DEPLOY_RAM8_ADDR, LENGTH = DEPLOY_RAM8_SIZE
-#endif
-#if defined(DEPLOY_RAM9_NAME)
-    DEPLOY_RAM9_NAME (RWAL): ORIGIN = DEPLOY_RAM9_ADDR, LENGTH = DEPLOY_RAM9_SIZE
-#endif
-#if defined(CACHED_RAM3_NAME)
-    CACHED_RAM3_NAME (RWAL): ORIGIN = CACHED_RAM3_ADDR, LENGTH = CACHED_RAM3_SIZE
-#endif
-#if defined(CACHED_RAM4_NAME)
-    CACHED_RAM4_NAME (RWAL): ORIGIN = CACHED_RAM4_ADDR, LENGTH = CACHED_RAM4_SIZE
-#endif
-#if defined(CACHED_RAM5_NAME)
-    CACHED_RAM5_NAME (RWAL): ORIGIN = CACHED_RAM5_ADDR, LENGTH = CACHED_RAM5_SIZE
-#endif
-#if defined(CACHED_RAM6_NAME)
-    CACHED_RAM6_NAME (RWAL): ORIGIN = CACHED_RAM6_ADDR, LENGTH = CACHED_RAM6_SIZE
-#endif
-#if defined(CACHED_RAM7_NAME)
-    CACHED_RAM7_NAME (RWAL): ORIGIN = CACHED_RAM7_ADDR, LENGTH = CACHED_RAM7_SIZE
-#endif
-#if defined(CACHED_RAM8_NAME)
-    CACHED_RAM8_NAME (RWAL): ORIGIN = CACHED_RAM8_ADDR, LENGTH = CACHED_RAM8_SIZE
-#endif
-#if defined(CACHED_RAM9_NAME)
-    CACHED_RAM9_NAME (RWAL): ORIGIN = CACHED_RAM9_ADDR, LENGTH = CACHED_RAM9_SIZE
-#endif
-//fin ajoute DG
-}
-
-SECTIONS
-{
-#if defined(CONFIG_CPU_RESET_HANDLER)
-	.boot : {
-		KEEP(*(.boot*))
-	} > mem_boot
-#endif
-
-	.text : {
-		*(.init*)
-		*(.text*)
-		*(.glue*)
-		*(.got2)
-	} > mem_hetrom
-
-	.rodata : {
-			*(.rodata*)
-            . = ALIGN(4);
-			global_driver_registry = .;
-			KEEP(*(.drivers))
-			global_driver_registry_end = .;
-	} > mem_rom
-
-	.excep : {
-#if !defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS)
-		/* On some architectures, exception vector is freely
-		 * relocatable up to a given alignment.
-		 *
-		 * We must set the correct pointer ASAP in the boot sequence,
-		 * dont forget reset vector is optional...
-		 */
-		. = ALIGN(CONFIG_CPU_EXCEPTION_ALIGN);
-#endif
-		__exception_base_ptr = .;
-		KEEP(*(.excep*))
-	} > mem_except
-
-
-	/* TLS/CLS are templates for newly allocated contexts/cpu's
-	 * private data. They are always read-only.
-	 *
-	 * On a non-smp machine, cpudata is read-write, but does not fall
-	 * in the cpudata section (it is normal global data), so we can
-	 * keep on linking this as r/o.
-	 */
-
-	/* CPU local data section */
-	.cpudata  0x0 : { *(.cpudata*) } AT> mem_rom
-
-	__cpu_data_start = LOADADDR(.cpudata);
-	__cpu_data_end = LOADADDR(.cpudata) + SIZEOF(.cpudata);
-
-	/* Task local data section */
-	.contextdata  0x0 : { *(.contextdata*) } AT> mem_rom
-
-	__context_data_start = LOADADDR(.contextdata);
-	__context_data_end = LOADADDR(.contextdata) + SIZEOF(.contextdata);
-
-	.data :	{
-		__data_start = ABSOLUTE(.);
-		*(.sdata*)
-		*(.data*)
-		*(.cpuarchdata*)
-	} > mem_ram __AT_MEM_ROM
-//ajoute DG
-#include <arch/soclib/deployinfo_map.h>
-//MAP_A
-//DG 19.5. a single RAMLOCKS
-// .lock0 : { *(section_lock0)} > vci_locks
-//fin ajoute DG
-	__data_load_start = LOADADDR(.data);
-	__data_load_end = LOADADDR(.data) + SIZEOF(.data);
-
-// #if defined(CONFIG_HET_BUILD)
-//     /DISCARD/ : {
-// #else
-    .bss : {
-		__bss_start = ABSOLUTE(.);
-// #endif
-		*(.sbss*)
-		*(COMMON)
-		*(.common*)
-		*(.scommon*)
-		*(.bss*)
-// #if !defined(CONFIG_HET_BUILD)
-		__bss_end = ABSOLUTE(.);
-	} > mem_ram
-// #else
-//     }
-
-//     __bss_end = 0;
-//     __bss_start = 0;
-// #endif
-
-	__system_uncached_heap_start = .;
-	__system_uncached_heap_end = ORIGIN(mem_ram) + LENGTH(mem_ram);
-
-#if defined(CONFIG_CPU_RESET_HANDLER)
-	. = ALIGN(CONFIG_HEXO_STACK_ALIGN);
-	__initial_stack = __system_uncached_heap_end;
-#endif
-
-	/* GOT section */
- 	/DISCARD/ : { *(.eh_frame) }
-
-#if !defined(CONFIG_CPU_NIOS2)
- 	ASSERT(__system_uncached_heap_start == __bss_end, "Unlinked sections found, please report a bug")
-#endif
-}
-
-ENTRY(arch_init)
diff --git a/MPSoC/mutekh/arch/soclib/ldscript.cpp-20-06 b/MPSoC/mutekh/arch/soclib/ldscript.cpp-20-06
deleted file mode 100644
index bb1be4aabe..0000000000
--- a/MPSoC/mutekh/arch/soclib/ldscript.cpp-20-06
+++ /dev/null
@@ -1,255 +0,0 @@
-/* The following contains information extracted from the deployment diagram */
-
-#include <arch/soclib/deployinfo.h>
-
-/*
-  We may have aliasing in rom/except/boot segments. If so, we merge
-  all we can in mem_rom segment.
-
-  We may also have alisasing of ram/rom (for bootloaded kernels), so
-  we may merge all we can in mem_ram.
- */
-
-/* ram + rom */
-#if CONFIG_RAM_ADDR == CONFIG_ROM_ADDR
-# define mem_rom mem_ram
-# if defined(CONFIG_CPU_RESET_HANDLER)
-#  error You may not have a reset handler with rom in ram
-# endif
-#endif
-
-/* The first two may only happen if reset handler is present */
-#if defined(CONFIG_CPU_RESET_HANDLER)
-
-/* boot + rom */
-# if CONFIG_CPU_RESET_ADDR == CONFIG_ROM_ADDR
-#  define mem_boot mem_rom
-# endif
-
-/* exception + boot
- *
- * boot may already be rom, and we'll have cascading defines */
-# if defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) && \
-     (CONFIG_CPU_EXCEPTION_FIXED_ADDRESS == CONFIG_CPU_RESET_ADDR)
-#  define mem_except mem_boot
-# endif
-
-#endif /* end if reset handler */
-
-
-/* exception + rom */
-#if ( (CONFIG_CPU_EXCEPTION_FIXED_ADDRESS == CONFIG_ROM_ADDR) ||   \
-	  !defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) ) &&			   \
-    !defined(mem_except)
-# define mem_except mem_rom
-#endif
-
-
-/*
-  Implement .data from rom (copied at boot) by putting all r/w data at
-  end of mem_rom. This is used for rom-only bootloaders.
- */
-#if defined(CONFIG_DATA_FROM_ROM)
-# define __AT_MEM_ROM AT>mem_rom
-#else
-# define __AT_MEM_ROM
-#endif
-
-
-MEMORY
-{
-#if defined(CONFIG_CPU_RESET_HANDLER) && !defined(mem_boot)
-	mem_boot (RXAL)  : ORIGIN = CONFIG_CPU_RESET_ADDR, LENGTH = CONFIG_CPU_RESET_SIZE
-#endif
-#if !defined(mem_except)
-	mem_except (RXAL)  : ORIGIN = CONFIG_CPU_EXCEPTION_FIXED_ADDRESS, LENGTH = 0x1000
-#endif
-#ifdef CONFIG_HET_BUILD
-    mem_hetrom (RXAL): ORIGIN = CONFIG_HETROM_ADDR, LENGTH = CONFIG_HETROM_SIZE
-#else
-# define mem_hetrom mem_rom
-#endif
-#if !defined(mem_rom)
-    mem_rom (RXAL): ORIGIN = CONFIG_ROM_ADDR, LENGTH = CONFIG_ROM_SIZE
-#endif
-    mem_ram (RWAL): ORIGIN = CONFIG_RAM_ADDR, LENGTH = CONFIG_RAM_SIZE
-//ajoute DG provisiore
-mwmr_ram (RWAL): ORIGIN = 0xA0200000, LENGTH = 0x00001000
-mwmrd_ram (RWAL): ORIGIN = 0xB0200000, LENGTH = 0x00003000
-//19.05. une seule RAMLOCKS
-vci_locks (RWAL): ORIGIN = 0xC0200000, LENGTH = 0x100
-//ajoute DG
-#if defined(DEPLOY_RAM0_NAME)
-    DEPLOY_RAM0_NAME (RWAL): ORIGIN = DEPLOY_RAM0_ADDR, LENGTH = DEPLOY_RAM0_SIZE
-#endif
-#if defined(CACHED_RAM0_NAME)
-    CACHED_RAM0_NAME (RWAL): ORIGIN = CACHED_RAM0_ADDR, LENGTH = CACHED_RAM0_SIZE
-#endif
-#if defined(DEPLOY_RAM1_NAME)
-    DEPLOY_RAM1_NAME (RWAL): ORIGIN = DEPLOY_RAM1_ADDR, LENGTH = DEPLOY_RAM1_SIZE
-#endif
-#if defined(CACHED_RAM1_NAME)
-    CACHED_RAM1_NAME (RWAL): ORIGIN = CACHED_RAM1_ADDR, LENGTH = CACHED_RAM1_SIZE
-#endif
-#if defined(DEPLOY_RAM2_NAME)
-    DEPLOY_RAM2_NAME (RWAL): ORIGIN = DEPLOY_RAM2_ADDR, LENGTH = DEPLOY_RAM2_SIZE
-#endif
-#if defined(CACHED_RAM2_NAME)
-    CACHED_RAM2_NAME (RWAL): ORIGIN = CACHED_RAM2_ADDR, LENGTH = CACHED_RAM2_SIZE
-#endif
-#if defined(DEPLOY_RAM3_NAME)
-    DEPLOY_RAM3_NAME (RWAL): ORIGIN = DEPLOY_RAM3_ADDR, LENGTH = DEPLOY_RAM3_SIZE
-#endif
-#if defined(DEPLOY_RAM4_NAME)
-    DEPLOY_RAM4_NAME (RWAL): ORIGIN = DEPLOY_RAM4_ADDR, LENGTH = DEPLOY_RAM4_SIZE
-#endif
-#if defined(DEPLOY_RAM5_NAME)
-    DEPLOY_RAM5_NAME (RWAL): ORIGIN = DEPLOY_RAM5_ADDR, LENGTH = DEPLOY_RAM5_SIZE
-#endif
-#if defined(DEPLOY_RAM6_NAME)
-    DEPLOY_RAM6_NAME (RWAL): ORIGIN = DEPLOY_RAM6_ADDR, LENGTH = DEPLOY_RAM6_SIZE
-#endif
-#if defined(DEPLOY_RAM7_NAME)
-    DEPLOY_RAM7_NAME (RWAL): ORIGIN = DEPLOY_RAM7_ADDR, LENGTH = DEPLOY_RAM7_SIZE
-#endif
-#if defined(DEPLOY_RAM8_NAME)
-    DEPLOY_RAM8_NAME (RWAL): ORIGIN = DEPLOY_RAM8_ADDR, LENGTH = DEPLOY_RAM8_SIZE
-#endif
-#if defined(DEPLOY_RAM9_NAME)
-    DEPLOY_RAM9_NAME (RWAL): ORIGIN = DEPLOY_RAM9_ADDR, LENGTH = DEPLOY_RAM9_SIZE
-#endif
-#if defined(CACHED_RAM3_NAME)
-    CACHED_RAM3_NAME (RWAL): ORIGIN = CACHED_RAM3_ADDR, LENGTH = CACHED_RAM3_SIZE
-#endif
-#if defined(CACHED_RAM4_NAME)
-    CACHED_RAM4_NAME (RWAL): ORIGIN = CACHED_RAM4_ADDR, LENGTH = CACHED_RAM4_SIZE
-#endif
-#if defined(CACHED_RAM5_NAME)
-    CACHED_RAM5_NAME (RWAL): ORIGIN = CACHED_RAM5_ADDR, LENGTH = CACHED_RAM5_SIZE
-#endif
-#if defined(CACHED_RAM6_NAME)
-    CACHED_RAM6_NAME (RWAL): ORIGIN = CACHED_RAM6_ADDR, LENGTH = CACHED_RAM6_SIZE
-#endif
-#if defined(CACHED_RAM7_NAME)
-    CACHED_RAM7_NAME (RWAL): ORIGIN = CACHED_RAM7_ADDR, LENGTH = CACHED_RAM7_SIZE
-#endif
-#if defined(CACHED_RAM8_NAME)
-    CACHED_RAM8_NAME (RWAL): ORIGIN = CACHED_RAM8_ADDR, LENGTH = CACHED_RAM8_SIZE
-#endif
-#if defined(CACHED_RAM9_NAME)
-    CACHED_RAM9_NAME (RWAL): ORIGIN = CACHED_RAM9_ADDR, LENGTH = CACHED_RAM9_SIZE
-#endif
-//fin ajoute DG
-}
-
-SECTIONS
-{
-#if defined(CONFIG_CPU_RESET_HANDLER)
-	.boot : {
-		KEEP(*(.boot*))
-	} > mem_boot
-#endif
-
-	.text : {
-		*(.init*)
-		*(.text*)
-		*(.glue*)
-		*(.got2)
-	} > mem_hetrom
-
-	.rodata : {
-			*(.rodata*)
-            . = ALIGN(4);
-			global_driver_registry = .;
-			KEEP(*(.drivers))
-			global_driver_registry_end = .;
-	} > mem_rom
-
-	.excep : {
-#if !defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS)
-		/* On some architectures, exception vector is freely
-		 * relocatable up to a given alignment.
-		 *
-		 * We must set the correct pointer ASAP in the boot sequence,
-		 * dont forget reset vector is optional...
-		 */
-		. = ALIGN(CONFIG_CPU_EXCEPTION_ALIGN);
-#endif
-		__exception_base_ptr = .;
-		KEEP(*(.excep*))
-	} > mem_except
-
-
-	/* TLS/CLS are templates for newly allocated contexts/cpu's
-	 * private data. They are always read-only.
-	 *
-	 * On a non-smp machine, cpudata is read-write, but does not fall
-	 * in the cpudata section (it is normal global data), so we can
-	 * keep on linking this as r/o.
-	 */
-
-	/* CPU local data section */
-	.cpudata  0x0 : { *(.cpudata*) } AT> mem_rom
-
-	__cpu_data_start = LOADADDR(.cpudata);
-	__cpu_data_end = LOADADDR(.cpudata) + SIZEOF(.cpudata);
-
-	/* Task local data section */
-	.contextdata  0x0 : { *(.contextdata*) } AT> mem_rom
-
-	__context_data_start = LOADADDR(.contextdata);
-	__context_data_end = LOADADDR(.contextdata) + SIZEOF(.contextdata);
-
-	.data :	{
-		__data_start = ABSOLUTE(.);
-		*(.sdata*)
-		*(.data*)
-		*(.cpuarchdata*)
-	} > mem_ram __AT_MEM_ROM
-//ajoute DG
-#include <arch/soclib/deployinfo_map.h>
-//MAP_A
-//DG 19.5. a single RAMLOCKS
-// .lock0 : { *(section_lock0)} > vci_locks
-//fin ajoute DG
-	__data_load_start = LOADADDR(.data);
-	__data_load_end = LOADADDR(.data) + SIZEOF(.data);
-
-// #if defined(CONFIG_HET_BUILD)
-//     /DISCARD/ : {
-// #else
-    .bss : {
-		__bss_start = ABSOLUTE(.);
-// #endif
-		*(.sbss*)
-		*(COMMON)
-		*(.common*)
-		*(.scommon*)
-		*(.bss*)
-// #if !defined(CONFIG_HET_BUILD)
-		__bss_end = ABSOLUTE(.);
-	} > mem_ram
-// #else
-//     }
-
-//     __bss_end = 0;
-//     __bss_start = 0;
-// #endif
-
-	__system_uncached_heap_start = .;
-	__system_uncached_heap_end = ORIGIN(mem_ram) + LENGTH(mem_ram);
-
-#if defined(CONFIG_CPU_RESET_HANDLER)
-	. = ALIGN(CONFIG_HEXO_STACK_ALIGN);
-	__initial_stack = __system_uncached_heap_end;
-#endif
-
-	/* GOT section */
- 	/DISCARD/ : { *(.eh_frame) }
-
-#if !defined(CONFIG_CPU_NIOS2)
- 	ASSERT(__system_uncached_heap_start == __bss_end, "Unlinked sections found, please report a bug")
-#endif
-}
-
-ENTRY(arch_init)
diff --git a/MPSoC/mutekh/arch/soclib/ldscript.cpp-26-08 b/MPSoC/mutekh/arch/soclib/ldscript.cpp-26-08
deleted file mode 100644
index bb1be4aabe..0000000000
--- a/MPSoC/mutekh/arch/soclib/ldscript.cpp-26-08
+++ /dev/null
@@ -1,255 +0,0 @@
-/* The following contains information extracted from the deployment diagram */
-
-#include <arch/soclib/deployinfo.h>
-
-/*
-  We may have aliasing in rom/except/boot segments. If so, we merge
-  all we can in mem_rom segment.
-
-  We may also have alisasing of ram/rom (for bootloaded kernels), so
-  we may merge all we can in mem_ram.
- */
-
-/* ram + rom */
-#if CONFIG_RAM_ADDR == CONFIG_ROM_ADDR
-# define mem_rom mem_ram
-# if defined(CONFIG_CPU_RESET_HANDLER)
-#  error You may not have a reset handler with rom in ram
-# endif
-#endif
-
-/* The first two may only happen if reset handler is present */
-#if defined(CONFIG_CPU_RESET_HANDLER)
-
-/* boot + rom */
-# if CONFIG_CPU_RESET_ADDR == CONFIG_ROM_ADDR
-#  define mem_boot mem_rom
-# endif
-
-/* exception + boot
- *
- * boot may already be rom, and we'll have cascading defines */
-# if defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) && \
-     (CONFIG_CPU_EXCEPTION_FIXED_ADDRESS == CONFIG_CPU_RESET_ADDR)
-#  define mem_except mem_boot
-# endif
-
-#endif /* end if reset handler */
-
-
-/* exception + rom */
-#if ( (CONFIG_CPU_EXCEPTION_FIXED_ADDRESS == CONFIG_ROM_ADDR) ||   \
-	  !defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) ) &&			   \
-    !defined(mem_except)
-# define mem_except mem_rom
-#endif
-
-
-/*
-  Implement .data from rom (copied at boot) by putting all r/w data at
-  end of mem_rom. This is used for rom-only bootloaders.
- */
-#if defined(CONFIG_DATA_FROM_ROM)
-# define __AT_MEM_ROM AT>mem_rom
-#else
-# define __AT_MEM_ROM
-#endif
-
-
-MEMORY
-{
-#if defined(CONFIG_CPU_RESET_HANDLER) && !defined(mem_boot)
-	mem_boot (RXAL)  : ORIGIN = CONFIG_CPU_RESET_ADDR, LENGTH = CONFIG_CPU_RESET_SIZE
-#endif
-#if !defined(mem_except)
-	mem_except (RXAL)  : ORIGIN = CONFIG_CPU_EXCEPTION_FIXED_ADDRESS, LENGTH = 0x1000
-#endif
-#ifdef CONFIG_HET_BUILD
-    mem_hetrom (RXAL): ORIGIN = CONFIG_HETROM_ADDR, LENGTH = CONFIG_HETROM_SIZE
-#else
-# define mem_hetrom mem_rom
-#endif
-#if !defined(mem_rom)
-    mem_rom (RXAL): ORIGIN = CONFIG_ROM_ADDR, LENGTH = CONFIG_ROM_SIZE
-#endif
-    mem_ram (RWAL): ORIGIN = CONFIG_RAM_ADDR, LENGTH = CONFIG_RAM_SIZE
-//ajoute DG provisiore
-mwmr_ram (RWAL): ORIGIN = 0xA0200000, LENGTH = 0x00001000
-mwmrd_ram (RWAL): ORIGIN = 0xB0200000, LENGTH = 0x00003000
-//19.05. une seule RAMLOCKS
-vci_locks (RWAL): ORIGIN = 0xC0200000, LENGTH = 0x100
-//ajoute DG
-#if defined(DEPLOY_RAM0_NAME)
-    DEPLOY_RAM0_NAME (RWAL): ORIGIN = DEPLOY_RAM0_ADDR, LENGTH = DEPLOY_RAM0_SIZE
-#endif
-#if defined(CACHED_RAM0_NAME)
-    CACHED_RAM0_NAME (RWAL): ORIGIN = CACHED_RAM0_ADDR, LENGTH = CACHED_RAM0_SIZE
-#endif
-#if defined(DEPLOY_RAM1_NAME)
-    DEPLOY_RAM1_NAME (RWAL): ORIGIN = DEPLOY_RAM1_ADDR, LENGTH = DEPLOY_RAM1_SIZE
-#endif
-#if defined(CACHED_RAM1_NAME)
-    CACHED_RAM1_NAME (RWAL): ORIGIN = CACHED_RAM1_ADDR, LENGTH = CACHED_RAM1_SIZE
-#endif
-#if defined(DEPLOY_RAM2_NAME)
-    DEPLOY_RAM2_NAME (RWAL): ORIGIN = DEPLOY_RAM2_ADDR, LENGTH = DEPLOY_RAM2_SIZE
-#endif
-#if defined(CACHED_RAM2_NAME)
-    CACHED_RAM2_NAME (RWAL): ORIGIN = CACHED_RAM2_ADDR, LENGTH = CACHED_RAM2_SIZE
-#endif
-#if defined(DEPLOY_RAM3_NAME)
-    DEPLOY_RAM3_NAME (RWAL): ORIGIN = DEPLOY_RAM3_ADDR, LENGTH = DEPLOY_RAM3_SIZE
-#endif
-#if defined(DEPLOY_RAM4_NAME)
-    DEPLOY_RAM4_NAME (RWAL): ORIGIN = DEPLOY_RAM4_ADDR, LENGTH = DEPLOY_RAM4_SIZE
-#endif
-#if defined(DEPLOY_RAM5_NAME)
-    DEPLOY_RAM5_NAME (RWAL): ORIGIN = DEPLOY_RAM5_ADDR, LENGTH = DEPLOY_RAM5_SIZE
-#endif
-#if defined(DEPLOY_RAM6_NAME)
-    DEPLOY_RAM6_NAME (RWAL): ORIGIN = DEPLOY_RAM6_ADDR, LENGTH = DEPLOY_RAM6_SIZE
-#endif
-#if defined(DEPLOY_RAM7_NAME)
-    DEPLOY_RAM7_NAME (RWAL): ORIGIN = DEPLOY_RAM7_ADDR, LENGTH = DEPLOY_RAM7_SIZE
-#endif
-#if defined(DEPLOY_RAM8_NAME)
-    DEPLOY_RAM8_NAME (RWAL): ORIGIN = DEPLOY_RAM8_ADDR, LENGTH = DEPLOY_RAM8_SIZE
-#endif
-#if defined(DEPLOY_RAM9_NAME)
-    DEPLOY_RAM9_NAME (RWAL): ORIGIN = DEPLOY_RAM9_ADDR, LENGTH = DEPLOY_RAM9_SIZE
-#endif
-#if defined(CACHED_RAM3_NAME)
-    CACHED_RAM3_NAME (RWAL): ORIGIN = CACHED_RAM3_ADDR, LENGTH = CACHED_RAM3_SIZE
-#endif
-#if defined(CACHED_RAM4_NAME)
-    CACHED_RAM4_NAME (RWAL): ORIGIN = CACHED_RAM4_ADDR, LENGTH = CACHED_RAM4_SIZE
-#endif
-#if defined(CACHED_RAM5_NAME)
-    CACHED_RAM5_NAME (RWAL): ORIGIN = CACHED_RAM5_ADDR, LENGTH = CACHED_RAM5_SIZE
-#endif
-#if defined(CACHED_RAM6_NAME)
-    CACHED_RAM6_NAME (RWAL): ORIGIN = CACHED_RAM6_ADDR, LENGTH = CACHED_RAM6_SIZE
-#endif
-#if defined(CACHED_RAM7_NAME)
-    CACHED_RAM7_NAME (RWAL): ORIGIN = CACHED_RAM7_ADDR, LENGTH = CACHED_RAM7_SIZE
-#endif
-#if defined(CACHED_RAM8_NAME)
-    CACHED_RAM8_NAME (RWAL): ORIGIN = CACHED_RAM8_ADDR, LENGTH = CACHED_RAM8_SIZE
-#endif
-#if defined(CACHED_RAM9_NAME)
-    CACHED_RAM9_NAME (RWAL): ORIGIN = CACHED_RAM9_ADDR, LENGTH = CACHED_RAM9_SIZE
-#endif
-//fin ajoute DG
-}
-
-SECTIONS
-{
-#if defined(CONFIG_CPU_RESET_HANDLER)
-	.boot : {
-		KEEP(*(.boot*))
-	} > mem_boot
-#endif
-
-	.text : {
-		*(.init*)
-		*(.text*)
-		*(.glue*)
-		*(.got2)
-	} > mem_hetrom
-
-	.rodata : {
-			*(.rodata*)
-            . = ALIGN(4);
-			global_driver_registry = .;
-			KEEP(*(.drivers))
-			global_driver_registry_end = .;
-	} > mem_rom
-
-	.excep : {
-#if !defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS)
-		/* On some architectures, exception vector is freely
-		 * relocatable up to a given alignment.
-		 *
-		 * We must set the correct pointer ASAP in the boot sequence,
-		 * dont forget reset vector is optional...
-		 */
-		. = ALIGN(CONFIG_CPU_EXCEPTION_ALIGN);
-#endif
-		__exception_base_ptr = .;
-		KEEP(*(.excep*))
-	} > mem_except
-
-
-	/* TLS/CLS are templates for newly allocated contexts/cpu's
-	 * private data. They are always read-only.
-	 *
-	 * On a non-smp machine, cpudata is read-write, but does not fall
-	 * in the cpudata section (it is normal global data), so we can
-	 * keep on linking this as r/o.
-	 */
-
-	/* CPU local data section */
-	.cpudata  0x0 : { *(.cpudata*) } AT> mem_rom
-
-	__cpu_data_start = LOADADDR(.cpudata);
-	__cpu_data_end = LOADADDR(.cpudata) + SIZEOF(.cpudata);
-
-	/* Task local data section */
-	.contextdata  0x0 : { *(.contextdata*) } AT> mem_rom
-
-	__context_data_start = LOADADDR(.contextdata);
-	__context_data_end = LOADADDR(.contextdata) + SIZEOF(.contextdata);
-
-	.data :	{
-		__data_start = ABSOLUTE(.);
-		*(.sdata*)
-		*(.data*)
-		*(.cpuarchdata*)
-	} > mem_ram __AT_MEM_ROM
-//ajoute DG
-#include <arch/soclib/deployinfo_map.h>
-//MAP_A
-//DG 19.5. a single RAMLOCKS
-// .lock0 : { *(section_lock0)} > vci_locks
-//fin ajoute DG
-	__data_load_start = LOADADDR(.data);
-	__data_load_end = LOADADDR(.data) + SIZEOF(.data);
-
-// #if defined(CONFIG_HET_BUILD)
-//     /DISCARD/ : {
-// #else
-    .bss : {
-		__bss_start = ABSOLUTE(.);
-// #endif
-		*(.sbss*)
-		*(COMMON)
-		*(.common*)
-		*(.scommon*)
-		*(.bss*)
-// #if !defined(CONFIG_HET_BUILD)
-		__bss_end = ABSOLUTE(.);
-	} > mem_ram
-// #else
-//     }
-
-//     __bss_end = 0;
-//     __bss_start = 0;
-// #endif
-
-	__system_uncached_heap_start = .;
-	__system_uncached_heap_end = ORIGIN(mem_ram) + LENGTH(mem_ram);
-
-#if defined(CONFIG_CPU_RESET_HANDLER)
-	. = ALIGN(CONFIG_HEXO_STACK_ALIGN);
-	__initial_stack = __system_uncached_heap_end;
-#endif
-
-	/* GOT section */
- 	/DISCARD/ : { *(.eh_frame) }
-
-#if !defined(CONFIG_CPU_NIOS2)
- 	ASSERT(__system_uncached_heap_start == __bss_end, "Unlinked sections found, please report a bug")
-#endif
-}
-
-ENTRY(arch_init)
diff --git a/MPSoC/mutekh/arch/soclib/ldscript.cpp-27-06 b/MPSoC/mutekh/arch/soclib/ldscript.cpp-27-06
deleted file mode 100644
index bb1be4aabe..0000000000
--- a/MPSoC/mutekh/arch/soclib/ldscript.cpp-27-06
+++ /dev/null
@@ -1,255 +0,0 @@
-/* The following contains information extracted from the deployment diagram */
-
-#include <arch/soclib/deployinfo.h>
-
-/*
-  We may have aliasing in rom/except/boot segments. If so, we merge
-  all we can in mem_rom segment.
-
-  We may also have alisasing of ram/rom (for bootloaded kernels), so
-  we may merge all we can in mem_ram.
- */
-
-/* ram + rom */
-#if CONFIG_RAM_ADDR == CONFIG_ROM_ADDR
-# define mem_rom mem_ram
-# if defined(CONFIG_CPU_RESET_HANDLER)
-#  error You may not have a reset handler with rom in ram
-# endif
-#endif
-
-/* The first two may only happen if reset handler is present */
-#if defined(CONFIG_CPU_RESET_HANDLER)
-
-/* boot + rom */
-# if CONFIG_CPU_RESET_ADDR == CONFIG_ROM_ADDR
-#  define mem_boot mem_rom
-# endif
-
-/* exception + boot
- *
- * boot may already be rom, and we'll have cascading defines */
-# if defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) && \
-     (CONFIG_CPU_EXCEPTION_FIXED_ADDRESS == CONFIG_CPU_RESET_ADDR)
-#  define mem_except mem_boot
-# endif
-
-#endif /* end if reset handler */
-
-
-/* exception + rom */
-#if ( (CONFIG_CPU_EXCEPTION_FIXED_ADDRESS == CONFIG_ROM_ADDR) ||   \
-	  !defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) ) &&			   \
-    !defined(mem_except)
-# define mem_except mem_rom
-#endif
-
-
-/*
-  Implement .data from rom (copied at boot) by putting all r/w data at
-  end of mem_rom. This is used for rom-only bootloaders.
- */
-#if defined(CONFIG_DATA_FROM_ROM)
-# define __AT_MEM_ROM AT>mem_rom
-#else
-# define __AT_MEM_ROM
-#endif
-
-
-MEMORY
-{
-#if defined(CONFIG_CPU_RESET_HANDLER) && !defined(mem_boot)
-	mem_boot (RXAL)  : ORIGIN = CONFIG_CPU_RESET_ADDR, LENGTH = CONFIG_CPU_RESET_SIZE
-#endif
-#if !defined(mem_except)
-	mem_except (RXAL)  : ORIGIN = CONFIG_CPU_EXCEPTION_FIXED_ADDRESS, LENGTH = 0x1000
-#endif
-#ifdef CONFIG_HET_BUILD
-    mem_hetrom (RXAL): ORIGIN = CONFIG_HETROM_ADDR, LENGTH = CONFIG_HETROM_SIZE
-#else
-# define mem_hetrom mem_rom
-#endif
-#if !defined(mem_rom)
-    mem_rom (RXAL): ORIGIN = CONFIG_ROM_ADDR, LENGTH = CONFIG_ROM_SIZE
-#endif
-    mem_ram (RWAL): ORIGIN = CONFIG_RAM_ADDR, LENGTH = CONFIG_RAM_SIZE
-//ajoute DG provisiore
-mwmr_ram (RWAL): ORIGIN = 0xA0200000, LENGTH = 0x00001000
-mwmrd_ram (RWAL): ORIGIN = 0xB0200000, LENGTH = 0x00003000
-//19.05. une seule RAMLOCKS
-vci_locks (RWAL): ORIGIN = 0xC0200000, LENGTH = 0x100
-//ajoute DG
-#if defined(DEPLOY_RAM0_NAME)
-    DEPLOY_RAM0_NAME (RWAL): ORIGIN = DEPLOY_RAM0_ADDR, LENGTH = DEPLOY_RAM0_SIZE
-#endif
-#if defined(CACHED_RAM0_NAME)
-    CACHED_RAM0_NAME (RWAL): ORIGIN = CACHED_RAM0_ADDR, LENGTH = CACHED_RAM0_SIZE
-#endif
-#if defined(DEPLOY_RAM1_NAME)
-    DEPLOY_RAM1_NAME (RWAL): ORIGIN = DEPLOY_RAM1_ADDR, LENGTH = DEPLOY_RAM1_SIZE
-#endif
-#if defined(CACHED_RAM1_NAME)
-    CACHED_RAM1_NAME (RWAL): ORIGIN = CACHED_RAM1_ADDR, LENGTH = CACHED_RAM1_SIZE
-#endif
-#if defined(DEPLOY_RAM2_NAME)
-    DEPLOY_RAM2_NAME (RWAL): ORIGIN = DEPLOY_RAM2_ADDR, LENGTH = DEPLOY_RAM2_SIZE
-#endif
-#if defined(CACHED_RAM2_NAME)
-    CACHED_RAM2_NAME (RWAL): ORIGIN = CACHED_RAM2_ADDR, LENGTH = CACHED_RAM2_SIZE
-#endif
-#if defined(DEPLOY_RAM3_NAME)
-    DEPLOY_RAM3_NAME (RWAL): ORIGIN = DEPLOY_RAM3_ADDR, LENGTH = DEPLOY_RAM3_SIZE
-#endif
-#if defined(DEPLOY_RAM4_NAME)
-    DEPLOY_RAM4_NAME (RWAL): ORIGIN = DEPLOY_RAM4_ADDR, LENGTH = DEPLOY_RAM4_SIZE
-#endif
-#if defined(DEPLOY_RAM5_NAME)
-    DEPLOY_RAM5_NAME (RWAL): ORIGIN = DEPLOY_RAM5_ADDR, LENGTH = DEPLOY_RAM5_SIZE
-#endif
-#if defined(DEPLOY_RAM6_NAME)
-    DEPLOY_RAM6_NAME (RWAL): ORIGIN = DEPLOY_RAM6_ADDR, LENGTH = DEPLOY_RAM6_SIZE
-#endif
-#if defined(DEPLOY_RAM7_NAME)
-    DEPLOY_RAM7_NAME (RWAL): ORIGIN = DEPLOY_RAM7_ADDR, LENGTH = DEPLOY_RAM7_SIZE
-#endif
-#if defined(DEPLOY_RAM8_NAME)
-    DEPLOY_RAM8_NAME (RWAL): ORIGIN = DEPLOY_RAM8_ADDR, LENGTH = DEPLOY_RAM8_SIZE
-#endif
-#if defined(DEPLOY_RAM9_NAME)
-    DEPLOY_RAM9_NAME (RWAL): ORIGIN = DEPLOY_RAM9_ADDR, LENGTH = DEPLOY_RAM9_SIZE
-#endif
-#if defined(CACHED_RAM3_NAME)
-    CACHED_RAM3_NAME (RWAL): ORIGIN = CACHED_RAM3_ADDR, LENGTH = CACHED_RAM3_SIZE
-#endif
-#if defined(CACHED_RAM4_NAME)
-    CACHED_RAM4_NAME (RWAL): ORIGIN = CACHED_RAM4_ADDR, LENGTH = CACHED_RAM4_SIZE
-#endif
-#if defined(CACHED_RAM5_NAME)
-    CACHED_RAM5_NAME (RWAL): ORIGIN = CACHED_RAM5_ADDR, LENGTH = CACHED_RAM5_SIZE
-#endif
-#if defined(CACHED_RAM6_NAME)
-    CACHED_RAM6_NAME (RWAL): ORIGIN = CACHED_RAM6_ADDR, LENGTH = CACHED_RAM6_SIZE
-#endif
-#if defined(CACHED_RAM7_NAME)
-    CACHED_RAM7_NAME (RWAL): ORIGIN = CACHED_RAM7_ADDR, LENGTH = CACHED_RAM7_SIZE
-#endif
-#if defined(CACHED_RAM8_NAME)
-    CACHED_RAM8_NAME (RWAL): ORIGIN = CACHED_RAM8_ADDR, LENGTH = CACHED_RAM8_SIZE
-#endif
-#if defined(CACHED_RAM9_NAME)
-    CACHED_RAM9_NAME (RWAL): ORIGIN = CACHED_RAM9_ADDR, LENGTH = CACHED_RAM9_SIZE
-#endif
-//fin ajoute DG
-}
-
-SECTIONS
-{
-#if defined(CONFIG_CPU_RESET_HANDLER)
-	.boot : {
-		KEEP(*(.boot*))
-	} > mem_boot
-#endif
-
-	.text : {
-		*(.init*)
-		*(.text*)
-		*(.glue*)
-		*(.got2)
-	} > mem_hetrom
-
-	.rodata : {
-			*(.rodata*)
-            . = ALIGN(4);
-			global_driver_registry = .;
-			KEEP(*(.drivers))
-			global_driver_registry_end = .;
-	} > mem_rom
-
-	.excep : {
-#if !defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS)
-		/* On some architectures, exception vector is freely
-		 * relocatable up to a given alignment.
-		 *
-		 * We must set the correct pointer ASAP in the boot sequence,
-		 * dont forget reset vector is optional...
-		 */
-		. = ALIGN(CONFIG_CPU_EXCEPTION_ALIGN);
-#endif
-		__exception_base_ptr = .;
-		KEEP(*(.excep*))
-	} > mem_except
-
-
-	/* TLS/CLS are templates for newly allocated contexts/cpu's
-	 * private data. They are always read-only.
-	 *
-	 * On a non-smp machine, cpudata is read-write, but does not fall
-	 * in the cpudata section (it is normal global data), so we can
-	 * keep on linking this as r/o.
-	 */
-
-	/* CPU local data section */
-	.cpudata  0x0 : { *(.cpudata*) } AT> mem_rom
-
-	__cpu_data_start = LOADADDR(.cpudata);
-	__cpu_data_end = LOADADDR(.cpudata) + SIZEOF(.cpudata);
-
-	/* Task local data section */
-	.contextdata  0x0 : { *(.contextdata*) } AT> mem_rom
-
-	__context_data_start = LOADADDR(.contextdata);
-	__context_data_end = LOADADDR(.contextdata) + SIZEOF(.contextdata);
-
-	.data :	{
-		__data_start = ABSOLUTE(.);
-		*(.sdata*)
-		*(.data*)
-		*(.cpuarchdata*)
-	} > mem_ram __AT_MEM_ROM
-//ajoute DG
-#include <arch/soclib/deployinfo_map.h>
-//MAP_A
-//DG 19.5. a single RAMLOCKS
-// .lock0 : { *(section_lock0)} > vci_locks
-//fin ajoute DG
-	__data_load_start = LOADADDR(.data);
-	__data_load_end = LOADADDR(.data) + SIZEOF(.data);
-
-// #if defined(CONFIG_HET_BUILD)
-//     /DISCARD/ : {
-// #else
-    .bss : {
-		__bss_start = ABSOLUTE(.);
-// #endif
-		*(.sbss*)
-		*(COMMON)
-		*(.common*)
-		*(.scommon*)
-		*(.bss*)
-// #if !defined(CONFIG_HET_BUILD)
-		__bss_end = ABSOLUTE(.);
-	} > mem_ram
-// #else
-//     }
-
-//     __bss_end = 0;
-//     __bss_start = 0;
-// #endif
-
-	__system_uncached_heap_start = .;
-	__system_uncached_heap_end = ORIGIN(mem_ram) + LENGTH(mem_ram);
-
-#if defined(CONFIG_CPU_RESET_HANDLER)
-	. = ALIGN(CONFIG_HEXO_STACK_ALIGN);
-	__initial_stack = __system_uncached_heap_end;
-#endif
-
-	/* GOT section */
- 	/DISCARD/ : { *(.eh_frame) }
-
-#if !defined(CONFIG_CPU_NIOS2)
- 	ASSERT(__system_uncached_heap_start == __bss_end, "Unlinked sections found, please report a bug")
-#endif
-}
-
-ENTRY(arch_init)
diff --git a/MPSoC/mutekh/arch/soclib/ldscript.cpp-6-5 b/MPSoC/mutekh/arch/soclib/ldscript.cpp-6-5
deleted file mode 100644
index e78a51e50d..0000000000
--- a/MPSoC/mutekh/arch/soclib/ldscript.cpp-6-5
+++ /dev/null
@@ -1,228 +0,0 @@
-/* The following contains information extracted from the deployment diagram */
-
-#include <arch/soclib/deployinfo.h>
-
-/*
-  We may have aliasing in rom/except/boot segments. If so, we merge
-  all we can in mem_rom segment.
-
-  We may also have alisasing of ram/rom (for bootloaded kernels), so
-  we may merge all we can in mem_ram.
- */
-
-/* ram + rom */
-#if CONFIG_RAM_ADDR == CONFIG_ROM_ADDR
-# define mem_rom mem_ram
-# if defined(CONFIG_CPU_RESET_HANDLER)
-#  error You may not have a reset handler with rom in ram
-# endif
-#endif
-
-/* The first two may only happen if reset handler is present */
-#if defined(CONFIG_CPU_RESET_HANDLER)
-
-/* boot + rom */
-# if CONFIG_CPU_RESET_ADDR == CONFIG_ROM_ADDR
-#  define mem_boot mem_rom
-# endif
-
-/* exception + boot
- *
- * boot may already be rom, and we'll have cascading defines */
-# if defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) && \
-     (CONFIG_CPU_EXCEPTION_FIXED_ADDRESS == CONFIG_CPU_RESET_ADDR)
-#  define mem_except mem_boot
-# endif
-
-#endif /* end if reset handler */
-
-
-/* exception + rom */
-#if ( (CONFIG_CPU_EXCEPTION_FIXED_ADDRESS == CONFIG_ROM_ADDR) ||   \
-	  !defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) ) &&			   \
-    !defined(mem_except)
-# define mem_except mem_rom
-#endif
-
-
-/*
-  Implement .data from rom (copied at boot) by putting all r/w data at
-  end of mem_rom. This is used for rom-only bootloaders.
- */
-#if defined(CONFIG_DATA_FROM_ROM)
-# define __AT_MEM_ROM AT>mem_rom
-#else
-# define __AT_MEM_ROM
-#endif
-
-
-MEMORY
-{
-#if defined(CONFIG_CPU_RESET_HANDLER) && !defined(mem_boot)
-	mem_boot (RXAL)  : ORIGIN = CONFIG_CPU_RESET_ADDR, LENGTH = CONFIG_CPU_RESET_SIZE
-#endif
-#if !defined(mem_except)
-	mem_except (RXAL)  : ORIGIN = CONFIG_CPU_EXCEPTION_FIXED_ADDRESS, LENGTH = 0x1000
-#endif
-#ifdef CONFIG_HET_BUILD
-    mem_hetrom (RXAL): ORIGIN = CONFIG_HETROM_ADDR, LENGTH = CONFIG_HETROM_SIZE
-#else
-# define mem_hetrom mem_rom
-#endif
-#if !defined(mem_rom)
-    mem_rom (RXAL): ORIGIN = CONFIG_ROM_ADDR, LENGTH = CONFIG_ROM_SIZE
-#endif
-    mem_ram (RWAL): ORIGIN = CONFIG_RAM_ADDR, LENGTH = CONFIG_RAM_SIZE
-//ajoute DG provisiore
-mwmr_ram (RWAL): ORIGIN = 0xA0200000, LENGTH = 0x00001000
-mwmrd_ram (RWAL): ORIGIN = 0xB0200000, LENGTH = 0x00003000
-
-//ajoute DG
-#if defined(DEPLOY_RAM0_NAME)
-    DEPLOY_RAM0_NAME (RWAL): ORIGIN = DEPLOY_RAM0_ADDR, LENGTH = DEPLOY_RAM0_SIZE
-#endif
-#if defined(CACHED_RAM0_NAME)
-    CACHED_RAM0_NAME (RWAL): ORIGIN = CACHED_RAM0_ADDR, LENGTH = CACHED_RAM0_SIZE
-#endif
-#if defined(DEPLOY_RAM1_NAME)
-    DEPLOY_RAM1_NAME (RWAL): ORIGIN = DEPLOY_RAM1_ADDR, LENGTH = DEPLOY_RAM1_SIZE
-#endif
-#if defined(CACHED_RAM1_NAME)
-    CACHED_RAM1_NAME (RWAL): ORIGIN = CACHED_RAM1_ADDR, LENGTH = CACHED_RAM1_SIZE
-#endif
-#if defined(DEPLOY_RAM2_NAME)
-    DEPLOY_RAM2_NAME (RWAL): ORIGIN = DEPLOY_RAM2_ADDR, LENGTH = DEPLOY_RAM2_SIZE
-#endif
-#if defined(DEPLOY_RAM3_NAME)
-    DEPLOY_RAM3_NAME (RWAL): ORIGIN = DEPLOY_RAM3_ADDR, LENGTH = DEPLOY_RAM3_SIZE
-#endif
-#if defined(DEPLOY_RAM4_NAME)
-    DEPLOY_RAM4_NAME (RWAL): ORIGIN = DEPLOY_RAM4_ADDR, LENGTH = DEPLOY_RAM4_SIZE
-#endif
-#if defined(DEPLOY_RAM5_NAME)
-    DEPLOY_RAM5_NAME (RWAL): ORIGIN = DEPLOY_RAM5_ADDR, LENGTH = DEPLOY_RAM5_SIZE
-#endif
-#if defined(DEPLOY_RAM6_NAME)
-    DEPLOY_RAM6_NAME (RWAL): ORIGIN = DEPLOY_RAM6_ADDR, LENGTH = DEPLOY_RAM6_SIZE
-#endif
-#if defined(DEPLOY_RAM7_NAME)
-    DEPLOY_RAM7_NAME (RWAL): ORIGIN = DEPLOY_RAM7_ADDR, LENGTH = DEPLOY_RAM7_SIZE
-#endif
-#if defined(DEPLOY_RAM8_NAME)
-    DEPLOY_RAM8_NAME (RWAL): ORIGIN = DEPLOY_RAM8_ADDR, LENGTH = DEPLOY_RAM8_SIZE
-#endif
-#if defined(DEPLOY_RAM9_NAME)
-    DEPLOY_RAM9_NAME (RWAL): ORIGIN = DEPLOY_RAM9_ADDR, LENGTH = DEPLOY_RAM9_SIZE
-#endif
-//fin ajoute DG
-}
-
-SECTIONS
-{
-#if defined(CONFIG_CPU_RESET_HANDLER)
-	.boot : {
-		KEEP(*(.boot*))
-	} > mem_boot
-#endif
-
-	.text : {
-		*(.init*)
-		*(.text*)
-		*(.glue*)
-		*(.got2)
-	} > mem_hetrom
-
-	.rodata : {
-			*(.rodata*)
-            . = ALIGN(4);
-			global_driver_registry = .;
-			KEEP(*(.drivers))
-			global_driver_registry_end = .;
-	} > mem_rom
-
-	.excep : {
-#if !defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS)
-		/* On some architectures, exception vector is freely
-		 * relocatable up to a given alignment.
-		 *
-		 * We must set the correct pointer ASAP in the boot sequence,
-		 * dont forget reset vector is optional...
-		 */
-		. = ALIGN(CONFIG_CPU_EXCEPTION_ALIGN);
-#endif
-		__exception_base_ptr = .;
-		KEEP(*(.excep*))
-	} > mem_except
-
-
-	/* TLS/CLS are templates for newly allocated contexts/cpu's
-	 * private data. They are always read-only.
-	 *
-	 * On a non-smp machine, cpudata is read-write, but does not fall
-	 * in the cpudata section (it is normal global data), so we can
-	 * keep on linking this as r/o.
-	 */
-
-	/* CPU local data section */
-	.cpudata  0x0 : { *(.cpudata*) } AT> mem_rom
-
-	__cpu_data_start = LOADADDR(.cpudata);
-	__cpu_data_end = LOADADDR(.cpudata) + SIZEOF(.cpudata);
-
-	/* Task local data section */
-	.contextdata  0x0 : { *(.contextdata*) } AT> mem_rom
-
-	__context_data_start = LOADADDR(.contextdata);
-	__context_data_end = LOADADDR(.contextdata) + SIZEOF(.contextdata);
-
-	.data :	{
-		__data_start = ABSOLUTE(.);
-		*(.sdata*)
-		*(.data*)
-		*(.cpuarchdata*)
-	} > mem_ram __AT_MEM_ROM
-//ajoute DG
-#include <arch/soclib/deployinfo_map.h>
-//MAP_A
-//fin ajoute DG
-	__data_load_start = LOADADDR(.data);
-	__data_load_end = LOADADDR(.data) + SIZEOF(.data);
-
-// #if defined(CONFIG_HET_BUILD)
-//     /DISCARD/ : {
-// #else
-    .bss : {
-		__bss_start = ABSOLUTE(.);
-// #endif
-		*(.sbss*)
-		*(COMMON)
-		*(.common*)
-		*(.scommon*)
-		*(.bss*)
-// #if !defined(CONFIG_HET_BUILD)
-		__bss_end = ABSOLUTE(.);
-	} > mem_ram
-// #else
-//     }
-
-//     __bss_end = 0;
-//     __bss_start = 0;
-// #endif
-
-	__system_uncached_heap_start = .;
-	__system_uncached_heap_end = ORIGIN(mem_ram) + LENGTH(mem_ram);
-
-#if defined(CONFIG_CPU_RESET_HANDLER)
-	. = ALIGN(CONFIG_HEXO_STACK_ALIGN);
-	__initial_stack = __system_uncached_heap_end;
-#endif
-
-	/* GOT section */
- 	/DISCARD/ : { *(.eh_frame) }
-
-#if !defined(CONFIG_CPU_NIOS2)
- 	ASSERT(__system_uncached_heap_start == __bss_end, "Unlinked sections found, please report a bug")
-#endif
-}
-
-ENTRY(arch_init)
diff --git a/MPSoC/mutekh/arch/soclib/ldscript.cpp-9-5 b/MPSoC/mutekh/arch/soclib/ldscript.cpp-9-5
deleted file mode 100644
index e5166f6bbd..0000000000
--- a/MPSoC/mutekh/arch/soclib/ldscript.cpp-9-5
+++ /dev/null
@@ -1,252 +0,0 @@
-/* The following contains information extracted from the deployment diagram */
-
-#include <arch/soclib/deployinfo.h>
-
-/*
-  We may have aliasing in rom/except/boot segments. If so, we merge
-  all we can in mem_rom segment.
-
-  We may also have alisasing of ram/rom (for bootloaded kernels), so
-  we may merge all we can in mem_ram.
- */
-
-/* ram + rom */
-#if CONFIG_RAM_ADDR == CONFIG_ROM_ADDR
-# define mem_rom mem_ram
-# if defined(CONFIG_CPU_RESET_HANDLER)
-#  error You may not have a reset handler with rom in ram
-# endif
-#endif
-
-/* The first two may only happen if reset handler is present */
-#if defined(CONFIG_CPU_RESET_HANDLER)
-
-/* boot + rom */
-# if CONFIG_CPU_RESET_ADDR == CONFIG_ROM_ADDR
-#  define mem_boot mem_rom
-# endif
-
-/* exception + boot
- *
- * boot may already be rom, and we'll have cascading defines */
-# if defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) && \
-     (CONFIG_CPU_EXCEPTION_FIXED_ADDRESS == CONFIG_CPU_RESET_ADDR)
-#  define mem_except mem_boot
-# endif
-
-#endif /* end if reset handler */
-
-
-/* exception + rom */
-#if ( (CONFIG_CPU_EXCEPTION_FIXED_ADDRESS == CONFIG_ROM_ADDR) ||   \
-	  !defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) ) &&			   \
-    !defined(mem_except)
-# define mem_except mem_rom
-#endif
-
-
-/*
-  Implement .data from rom (copied at boot) by putting all r/w data at
-  end of mem_rom. This is used for rom-only bootloaders.
- */
-#if defined(CONFIG_DATA_FROM_ROM)
-# define __AT_MEM_ROM AT>mem_rom
-#else
-# define __AT_MEM_ROM
-#endif
-
-
-MEMORY
-{
-#if defined(CONFIG_CPU_RESET_HANDLER) && !defined(mem_boot)
-	mem_boot (RXAL)  : ORIGIN = CONFIG_CPU_RESET_ADDR, LENGTH = CONFIG_CPU_RESET_SIZE
-#endif
-#if !defined(mem_except)
-	mem_except (RXAL)  : ORIGIN = CONFIG_CPU_EXCEPTION_FIXED_ADDRESS, LENGTH = 0x1000
-#endif
-#ifdef CONFIG_HET_BUILD
-    mem_hetrom (RXAL): ORIGIN = CONFIG_HETROM_ADDR, LENGTH = CONFIG_HETROM_SIZE
-#else
-# define mem_hetrom mem_rom
-#endif
-#if !defined(mem_rom)
-    mem_rom (RXAL): ORIGIN = CONFIG_ROM_ADDR, LENGTH = CONFIG_ROM_SIZE
-#endif
-    mem_ram (RWAL): ORIGIN = CONFIG_RAM_ADDR, LENGTH = CONFIG_RAM_SIZE
-//ajoute DG provisiore
-mwmr_ram (RWAL): ORIGIN = 0xA0200000, LENGTH = 0x00001000
-mwmrd_ram (RWAL): ORIGIN = 0xB0200000, LENGTH = 0x00003000
-
-//ajoute DG
-#if defined(DEPLOY_RAM0_NAME)
-    DEPLOY_RAM0_NAME (RWAL): ORIGIN = DEPLOY_RAM0_ADDR, LENGTH = DEPLOY_RAM0_SIZE
-#endif
-#if defined(CACHED_RAM0_NAME)
-    CACHED_RAM0_NAME (RWAL): ORIGIN = CACHED_RAM0_ADDR, LENGTH = CACHED_RAM0_SIZE
-#endif
-#if defined(DEPLOY_RAM1_NAME)
-    DEPLOY_RAM1_NAME (RWAL): ORIGIN = DEPLOY_RAM1_ADDR, LENGTH = DEPLOY_RAM1_SIZE
-#endif
-#if defined(CACHED_RAM1_NAME)
-    CACHED_RAM1_NAME (RWAL): ORIGIN = CACHED_RAM1_ADDR, LENGTH = CACHED_RAM1_SIZE
-#endif
-#if defined(DEPLOY_RAM2_NAME)
-    DEPLOY_RAM2_NAME (RWAL): ORIGIN = DEPLOY_RAM2_ADDR, LENGTH = DEPLOY_RAM2_SIZE
-#endif
-#if defined(CACHED_RAM2_NAME)
-    CACHED_RAM2_NAME (RWAL): ORIGIN = CACHED_RAM2_ADDR, LENGTH = CACHED_RAM2_SIZE
-#endif
-#if defined(DEPLOY_RAM3_NAME)
-    DEPLOY_RAM3_NAME (RWAL): ORIGIN = DEPLOY_RAM3_ADDR, LENGTH = DEPLOY_RAM3_SIZE
-#endif
-#if defined(DEPLOY_RAM4_NAME)
-    DEPLOY_RAM4_NAME (RWAL): ORIGIN = DEPLOY_RAM4_ADDR, LENGTH = DEPLOY_RAM4_SIZE
-#endif
-#if defined(DEPLOY_RAM5_NAME)
-    DEPLOY_RAM5_NAME (RWAL): ORIGIN = DEPLOY_RAM5_ADDR, LENGTH = DEPLOY_RAM5_SIZE
-#endif
-#if defined(DEPLOY_RAM6_NAME)
-    DEPLOY_RAM6_NAME (RWAL): ORIGIN = DEPLOY_RAM6_ADDR, LENGTH = DEPLOY_RAM6_SIZE
-#endif
-#if defined(DEPLOY_RAM7_NAME)
-    DEPLOY_RAM7_NAME (RWAL): ORIGIN = DEPLOY_RAM7_ADDR, LENGTH = DEPLOY_RAM7_SIZE
-#endif
-#if defined(DEPLOY_RAM8_NAME)
-    DEPLOY_RAM8_NAME (RWAL): ORIGIN = DEPLOY_RAM8_ADDR, LENGTH = DEPLOY_RAM8_SIZE
-#endif
-#if defined(DEPLOY_RAM9_NAME)
-    DEPLOY_RAM9_NAME (RWAL): ORIGIN = DEPLOY_RAM9_ADDR, LENGTH = DEPLOY_RAM9_SIZE
-#endif
-#if defined(CACHED_RAM3_NAME)
-    CACHED_RAM3_NAME (RWAL): ORIGIN = CACHED_RAM3_ADDR, LENGTH = CACHED_RAM3_SIZE
-#endif
-#if defined(CACHED_RAM4_NAME)
-    CACHED_RAM4_NAME (RWAL): ORIGIN = CACHED_RAM4_ADDR, LENGTH = CACHED_RAM4_SIZE
-#endif
-#if defined(CACHED_RAM5_NAME)
-    CACHED_RAM5_NAME (RWAL): ORIGIN = CACHED_RAM5_ADDR, LENGTH = CACHED_RAM5_SIZE
-#endif
-#if defined(CACHED_RAM6_NAME)
-    CACHED_RAM6_NAME (RWAL): ORIGIN = CACHED_RAM6_ADDR, LENGTH = CACHED_RAM6_SIZE
-#endif
-#if defined(CACHED_RAM7_NAME)
-    CACHED_RAM7_NAME (RWAL): ORIGIN = CACHED_RAM7_ADDR, LENGTH = CACHED_RAM7_SIZE
-#endif
-#if defined(CACHED_RAM8_NAME)
-    CACHED_RAM8_NAME (RWAL): ORIGIN = CACHED_RAM8_ADDR, LENGTH = CACHED_RAM8_SIZE
-#endif
-#if defined(CACHED_RAM9_NAME)
-    CACHED_RAM9_NAME (RWAL): ORIGIN = CACHED_RAM9_ADDR, LENGTH = CACHED_RAM9_SIZE
-#endif
-//fin ajoute DG
-}
-
-SECTIONS
-{
-#if defined(CONFIG_CPU_RESET_HANDLER)
-	.boot : {
-		KEEP(*(.boot*))
-	} > mem_boot
-#endif
-
-	.text : {
-		*(.init*)
-		*(.text*)
-		*(.glue*)
-		*(.got2)
-	} > mem_hetrom
-
-	.rodata : {
-			*(.rodata*)
-            . = ALIGN(4);
-			global_driver_registry = .;
-			KEEP(*(.drivers))
-			global_driver_registry_end = .;
-	} > mem_rom
-
-	.excep : {
-#if !defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS)
-		/* On some architectures, exception vector is freely
-		 * relocatable up to a given alignment.
-		 *
-		 * We must set the correct pointer ASAP in the boot sequence,
-		 * dont forget reset vector is optional...
-		 */
-		. = ALIGN(CONFIG_CPU_EXCEPTION_ALIGN);
-#endif
-		__exception_base_ptr = .;
-		KEEP(*(.excep*))
-	} > mem_except
-
-
-	/* TLS/CLS are templates for newly allocated contexts/cpu's
-	 * private data. They are always read-only.
-	 *
-	 * On a non-smp machine, cpudata is read-write, but does not fall
-	 * in the cpudata section (it is normal global data), so we can
-	 * keep on linking this as r/o.
-	 */
-
-	/* CPU local data section */
-	.cpudata  0x0 : { *(.cpudata*) } AT> mem_rom
-
-	__cpu_data_start = LOADADDR(.cpudata);
-	__cpu_data_end = LOADADDR(.cpudata) + SIZEOF(.cpudata);
-
-	/* Task local data section */
-	.contextdata  0x0 : { *(.contextdata*) } AT> mem_rom
-
-	__context_data_start = LOADADDR(.contextdata);
-	__context_data_end = LOADADDR(.contextdata) + SIZEOF(.contextdata);
-
-	.data :	{
-		__data_start = ABSOLUTE(.);
-		*(.sdata*)
-		*(.data*)
-		*(.cpuarchdata*)
-	} > mem_ram __AT_MEM_ROM
-//ajoute DG
-#include <arch/soclib/deployinfo_map.h>
-//MAP_A
-//fin ajoute DG
-	__data_load_start = LOADADDR(.data);
-	__data_load_end = LOADADDR(.data) + SIZEOF(.data);
-
-// #if defined(CONFIG_HET_BUILD)
-//     /DISCARD/ : {
-// #else
-    .bss : {
-		__bss_start = ABSOLUTE(.);
-// #endif
-		*(.sbss*)
-		*(COMMON)
-		*(.common*)
-		*(.scommon*)
-		*(.bss*)
-// #if !defined(CONFIG_HET_BUILD)
-		__bss_end = ABSOLUTE(.);
-	} > mem_ram
-// #else
-//     }
-
-//     __bss_end = 0;
-//     __bss_start = 0;
-// #endif
-
-	__system_uncached_heap_start = .;
-	__system_uncached_heap_end = ORIGIN(mem_ram) + LENGTH(mem_ram);
-
-#if defined(CONFIG_CPU_RESET_HANDLER)
-	. = ALIGN(CONFIG_HEXO_STACK_ALIGN);
-	__initial_stack = __system_uncached_heap_end;
-#endif
-
-	/* GOT section */
- 	/DISCARD/ : { *(.eh_frame) }
-
-#if !defined(CONFIG_CPU_NIOS2)
- 	ASSERT(__system_uncached_heap_start == __bss_end, "Unlinked sections found, please report a bug")
-#endif
-}
-
-ENTRY(arch_init)
diff --git a/MPSoC/mutekh/arch/soclib/ldscript.cpp-sav b/MPSoC/mutekh/arch/soclib/ldscript.cpp-sav
deleted file mode 100644
index e1ce44fe8c..0000000000
--- a/MPSoC/mutekh/arch/soclib/ldscript.cpp-sav
+++ /dev/null
@@ -1,222 +0,0 @@
-/* The following contains information extracted from the deployment diagram */
-
-#include <arch/soclib/deployinfo.h>
-
-/*
-  We may have aliasing in rom/except/boot segments. If so, we merge
-  all we can in mem_rom segment.
-
-  We may also have alisasing of ram/rom (for bootloaded kernels), so
-  we may merge all we can in mem_ram.
- */
-
-/* ram + rom */
-#if CONFIG_RAM_ADDR == CONFIG_ROM_ADDR
-# define mem_rom mem_ram
-# if defined(CONFIG_CPU_RESET_HANDLER)
-#  error You may not have a reset handler with rom in ram
-# endif
-#endif
-
-/* The first two may only happen if reset handler is present */
-#if defined(CONFIG_CPU_RESET_HANDLER)
-
-/* boot + rom */
-# if CONFIG_CPU_RESET_ADDR == CONFIG_ROM_ADDR
-#  define mem_boot mem_rom
-# endif
-
-/* exception + boot
- *
- * boot may already be rom, and we'll have cascading defines */
-# if defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) && \
-     (CONFIG_CPU_EXCEPTION_FIXED_ADDRESS == CONFIG_CPU_RESET_ADDR)
-#  define mem_except mem_boot
-# endif
-
-#endif /* end if reset handler */
-
-
-/* exception + rom */
-#if ( (CONFIG_CPU_EXCEPTION_FIXED_ADDRESS == CONFIG_ROM_ADDR) ||   \
-	  !defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS) ) &&			   \
-    !defined(mem_except)
-# define mem_except mem_rom
-#endif
-
-
-/*
-  Implement .data from rom (copied at boot) by putting all r/w data at
-  end of mem_rom. This is used for rom-only bootloaders.
- */
-#if defined(CONFIG_DATA_FROM_ROM)
-# define __AT_MEM_ROM AT>mem_rom
-#else
-# define __AT_MEM_ROM
-#endif
-
-
-MEMORY
-{
-#if defined(CONFIG_CPU_RESET_HANDLER) && !defined(mem_boot)
-	mem_boot (RXAL)  : ORIGIN = CONFIG_CPU_RESET_ADDR, LENGTH = CONFIG_CPU_RESET_SIZE
-#endif
-#if !defined(mem_except)
-	mem_except (RXAL)  : ORIGIN = CONFIG_CPU_EXCEPTION_FIXED_ADDRESS, LENGTH = 0x1000
-#endif
-#ifdef CONFIG_HET_BUILD
-    mem_hetrom (RXAL): ORIGIN = CONFIG_HETROM_ADDR, LENGTH = CONFIG_HETROM_SIZE
-#else
-# define mem_hetrom mem_rom
-#endif
-#if !defined(mem_rom)
-    mem_rom (RXAL): ORIGIN = CONFIG_ROM_ADDR, LENGTH = CONFIG_ROM_SIZE
-#endif
-    mem_ram (RWAL): ORIGIN = CONFIG_RAM_ADDR, LENGTH = CONFIG_RAM_SIZE
-//ajoute DG provisiore
-mwmr_ram (RWAL): ORIGIN = 0xA0200000, LENGTH = 0x00001000
-mwmrd_ram (RWAL): ORIGIN = 0x20200000, LENGTH = 0x00003000
-
-//ajoute DG
-#if defined(DEPLOY_RAM0_NAME)
-    DEPLOY_RAM0_NAME (RWAL): ORIGIN = DEPLOY_RAM0_ADDR, LENGTH = DEPLOY_RAM0_SIZE
-#endif
-#if defined(DEPLOY_RAM1_NAME)
-    DEPLOY_RAM1_NAME (RWAL): ORIGIN = DEPLOY_RAM1_ADDR, LENGTH = DEPLOY_RAM1_SIZE
-#endif
-#if defined(DEPLOY_RAM2_NAME)
-    DEPLOY_RAM2_NAME (RWAL): ORIGIN = DEPLOY_RAM2_ADDR, LENGTH = DEPLOY_RAM2_SIZE
-#endif
-#if defined(DEPLOY_RAM3_NAME)
-    DEPLOY_RAM3_NAME (RWAL): ORIGIN = DEPLOY_RAM3_ADDR, LENGTH = DEPLOY_RAM3_SIZE
-#endif
-#if defined(DEPLOY_RAM4_NAME)
-    DEPLOY_RAM4_NAME (RWAL): ORIGIN = DEPLOY_RAM4_ADDR, LENGTH = DEPLOY_RAM4_SIZE
-#endif
-#if defined(DEPLOY_RAM5_NAME)
-    DEPLOY_RAM5_NAME (RWAL): ORIGIN = DEPLOY_RAM5_ADDR, LENGTH = DEPLOY_RAM5_SIZE
-#endif
-#if defined(DEPLOY_RAM6_NAME)
-    DEPLOY_RAM6_NAME (RWAL): ORIGIN = DEPLOY_RAM6_ADDR, LENGTH = DEPLOY_RAM6_SIZE
-#endif
-#if defined(DEPLOY_RAM7_NAME)
-    DEPLOY_RAM7_NAME (RWAL): ORIGIN = DEPLOY_RAM7_ADDR, LENGTH = DEPLOY_RAM7_SIZE
-#endif
-#if defined(DEPLOY_RAM8_NAME)
-    DEPLOY_RAM8_NAME (RWAL): ORIGIN = DEPLOY_RAM8_ADDR, LENGTH = DEPLOY_RAM8_SIZE
-#endif
-#if defined(DEPLOY_RAM9_NAME)
-    DEPLOY_RAM9_NAME (RWAL): ORIGIN = DEPLOY_RAM9_ADDR, LENGTH = DEPLOY_RAM9_SIZE
-#endif
-//fin ajoute DG
-}
-
-SECTIONS
-{
-#if defined(CONFIG_CPU_RESET_HANDLER)
-	.boot : {
-		KEEP(*(.boot*))
-	} > mem_boot
-#endif
-
-	.text : {
-		*(.init*)
-		*(.text*)
-		*(.glue*)
-		*(.got2)
-	} > mem_hetrom
-
-	.rodata : {
-			*(.rodata*)
-            . = ALIGN(4);
-			global_driver_registry = .;
-			KEEP(*(.drivers))
-			global_driver_registry_end = .;
-	} > mem_rom
-
-	.excep : {
-#if !defined(CONFIG_CPU_EXCEPTION_FIXED_ADDRESS)
-		/* On some architectures, exception vector is freely
-		 * relocatable up to a given alignment.
-		 *
-		 * We must set the correct pointer ASAP in the boot sequence,
-		 * dont forget reset vector is optional...
-		 */
-		. = ALIGN(CONFIG_CPU_EXCEPTION_ALIGN);
-#endif
-		__exception_base_ptr = .;
-		KEEP(*(.excep*))
-	} > mem_except
-
-
-	/* TLS/CLS are templates for newly allocated contexts/cpu's
-	 * private data. They are always read-only.
-	 *
-	 * On a non-smp machine, cpudata is read-write, but does not fall
-	 * in the cpudata section (it is normal global data), so we can
-	 * keep on linking this as r/o.
-	 */
-
-	/* CPU local data section */
-	.cpudata  0x0 : { *(.cpudata*) } AT> mem_rom
-
-	__cpu_data_start = LOADADDR(.cpudata);
-	__cpu_data_end = LOADADDR(.cpudata) + SIZEOF(.cpudata);
-
-	/* Task local data section */
-	.contextdata  0x0 : { *(.contextdata*) } AT> mem_rom
-
-	__context_data_start = LOADADDR(.contextdata);
-	__context_data_end = LOADADDR(.contextdata) + SIZEOF(.contextdata);
-
-	.data :	{
-		__data_start = ABSOLUTE(.);
-		*(.sdata*)
-		*(.data*)
-		*(.cpuarchdata*)
-	} > mem_ram __AT_MEM_ROM
-//ajoute DG
-#include <arch/soclib/deployinfo_map.h>
-//MAP_A
-//fin ajoute DG
-	__data_load_start = LOADADDR(.data);
-	__data_load_end = LOADADDR(.data) + SIZEOF(.data);
-
-// #if defined(CONFIG_HET_BUILD)
-//     /DISCARD/ : {
-// #else
-    .bss : {
-		__bss_start = ABSOLUTE(.);
-// #endif
-		*(.sbss*)
-		*(COMMON)
-		*(.common*)
-		*(.scommon*)
-		*(.bss*)
-// #if !defined(CONFIG_HET_BUILD)
-		__bss_end = ABSOLUTE(.);
-	} > mem_ram
-// #else
-//     }
-
-//     __bss_end = 0;
-//     __bss_start = 0;
-// #endif
-
-	__system_uncached_heap_start = .;
-	__system_uncached_heap_end = ORIGIN(mem_ram) + LENGTH(mem_ram);
-
-#if defined(CONFIG_CPU_RESET_HANDLER)
-	. = ALIGN(CONFIG_HEXO_STACK_ALIGN);
-	__initial_stack = __system_uncached_heap_end;
-#endif
-
-	/* GOT section */
- 	/DISCARD/ : { *(.eh_frame) }
-
-#if !defined(CONFIG_CPU_NIOS2)
- 	ASSERT(__system_uncached_heap_start == __bss_end, "Unlinked sections found, please report a bug")
-#endif
-}
-
-ENTRY(arch_init)
diff --git a/MPSoC/soclib/utils/lib/python/soclib_builder/__init__.py b/MPSoC/mutekh/bin/test
similarity index 100%
rename from MPSoC/soclib/utils/lib/python/soclib_builder/__init__.py
rename to MPSoC/mutekh/bin/test
diff --git a/MPSoC/mutekh/libmwmr/mwmr.config-07-12 b/MPSoC/mutekh/libmwmr/mwmr.config-07-12
deleted file mode 100644
index 895f3e2a01..0000000000
--- a/MPSoC/mutekh/libmwmr/mwmr.config-07-12
+++ /dev/null
@@ -1,38 +0,0 @@
-
-%config CONFIG_MWMR
-  desc Mwmr middleware support
-  module libmwmr
-  single CONFIG_MWMR_SOCLIB CONFIG_MWMR_PTHREAD
-%config end
-
-%config CONFIG_MWMR_SOCLIB
-  desc Mwmr on SOCLIB, with hardware protocol compatibility
-  parent CONFIG_MWMR
-  depend CONFIG_MUTEK_SCHEDULER
-  depend CONFIG_ARCH_SOCLIB
-%config end
-
-%config CONFIG_MWMR_PTHREAD
-  desc Mwmr on Pthreads, with no hardware protocol compatibility
-  parent CONFIG_MWMR
-  depend CONFIG_PTHREAD
-%config end
-
-%config CONFIG_MWMR_INSTRUMENTATION
-  desc Mwmr timing observation, only under SRL
-  parent CONFIG_MWMR
-  depend CONFIG_MWMR_SOCLIB
-  depend CONFIG_SRL
-%config end
-
-%config CONFIG_MWMR_USE_RAMLOCKS
-  desc Mwmr is ramlocks based, only under SRL, does not change platform s lock backend
-  parent CONFIG_MWMR
-  depend CONFIG_SRL
-%config end
-
-%config CONFIG_MWMR_LOCKFREE
-  desc Mwmr is completely using atomic operations, only under SRL, does not change platform s lock backend
-  parent CONFIG_MWMR_SOCLIB
-  depend CONFIG_SRL
-%config end
diff --git a/MPSoC/mutekh/libmwmr/mwmr.config-1-8 b/MPSoC/mutekh/libmwmr/mwmr.config-1-8
deleted file mode 100644
index e7573dcd39..0000000000
--- a/MPSoC/mutekh/libmwmr/mwmr.config-1-8
+++ /dev/null
@@ -1,38 +0,0 @@
-
-%config CONFIG_MWMR
-  desc Mwmr middleware support
-  module libmwmr
-  single CONFIG_MWMR_SOCLIB #CONFIG_MWMR_PTHREAD
-%config end
-
-%config CONFIG_MWMR_SOCLIB
-  desc Mwmr on SOCLIB, with hardware protocol compatibility
-  parent CONFIG_MWMR
-  depend CONFIG_MUTEK_SCHEDULER
-  depend CONFIG_ARCH_SOCLIB
-%config end
-
-%config CONFIG_MWMR_PTHREAD
-  desc Mwmr on Pthreads, with no hardware protocol compatibility
-  parent CONFIG_MWMR
-  depend CONFIG_PTHREAD
-%config end
-
-#%config CONFIG_MWMR_INSTRUMENTATION
-#  desc Mwmr timing observation, only under SRL
-#  parent CONFIG_MWMR
-#  depend CONFIG_MWMR_SOCLIB
-#  depend CONFIG_SRL
-#%config end
-
-#%config CONFIG_MWMR_USE_RAMLOCKS
-#  desc Mwmr is ramlocks based, only under SRL, does not change platform s lock backend
-#  parent CONFIG_MWMR
-#  depend CONFIG_SRL
-#%config end
-
-#%config CONFIG_MWMR_LOCKFREE
-#  desc Mwmr is completely using atomic operations, only under SRL, does not change platform s lock backend
-#  parent CONFIG_MWMR_SOCLIB
-#  depend CONFIG_SRL
-#%config end
diff --git a/MPSoC/mutekh/libmwmr/mwmr.config-23-06 b/MPSoC/mutekh/libmwmr/mwmr.config-23-06
deleted file mode 100644
index 895f3e2a01..0000000000
--- a/MPSoC/mutekh/libmwmr/mwmr.config-23-06
+++ /dev/null
@@ -1,38 +0,0 @@
-
-%config CONFIG_MWMR
-  desc Mwmr middleware support
-  module libmwmr
-  single CONFIG_MWMR_SOCLIB CONFIG_MWMR_PTHREAD
-%config end
-
-%config CONFIG_MWMR_SOCLIB
-  desc Mwmr on SOCLIB, with hardware protocol compatibility
-  parent CONFIG_MWMR
-  depend CONFIG_MUTEK_SCHEDULER
-  depend CONFIG_ARCH_SOCLIB
-%config end
-
-%config CONFIG_MWMR_PTHREAD
-  desc Mwmr on Pthreads, with no hardware protocol compatibility
-  parent CONFIG_MWMR
-  depend CONFIG_PTHREAD
-%config end
-
-%config CONFIG_MWMR_INSTRUMENTATION
-  desc Mwmr timing observation, only under SRL
-  parent CONFIG_MWMR
-  depend CONFIG_MWMR_SOCLIB
-  depend CONFIG_SRL
-%config end
-
-%config CONFIG_MWMR_USE_RAMLOCKS
-  desc Mwmr is ramlocks based, only under SRL, does not change platform s lock backend
-  parent CONFIG_MWMR
-  depend CONFIG_SRL
-%config end
-
-%config CONFIG_MWMR_LOCKFREE
-  desc Mwmr is completely using atomic operations, only under SRL, does not change platform s lock backend
-  parent CONFIG_MWMR_SOCLIB
-  depend CONFIG_SRL
-%config end
diff --git a/MPSoC/mutekh/libmwmr/mwmr_soclib.c-01-08 b/MPSoC/mutekh/libmwmr/mwmr_soclib.c-01-08
deleted file mode 100644
index 3134edf300..0000000000
--- a/MPSoC/mutekh/libmwmr/mwmr_soclib.c-01-08
+++ /dev/null
@@ -1,401 +0,0 @@
-/*
- * This file is part of MutekH.
- * 
- * MutekH is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation; version 2.1 of the License.
- * 
- * MutekH is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with MutekH; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301 USA
- *
- * Copyright (c) UPMC, Lip6, SoC
- *         Nicolas Pouillon <nipo@ssji.net>, 2008
- */
-
-#include <mutek/scheduler.h>
-#include <hexo/types.h>
-#include <hexo/atomic.h>
-#include <hexo/iospace.h>
-#include <hexo/endian.h>
-#include <hexo/interrupt.h>
-#include <string.h>
-#include <mwmr/mwmr.h>
-
-#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD)
-# include <srl/srl_sched_wait.h>
-# include <srl/srl_log.h>
-# ifndef SRL_VERBOSITY
-#  define SRL_VERBOSITY VERB_DEBUG
-# endif
-#elif defined(CONFIG_PTHREAD)
-# include <pthread.h>
-#endif
-
-# include <stdio.h>
-static inline size_t min(size_t a, size_t b)
-{
-	if ( a < b )
-		return a;
-	else
-		return b;
-}
-
-void
-mwmr_hw_init( void *coproc, enum SoclibMwmrWay way,
-			  size_t no, const struct mwmr_s* mwmr )
-{
-	uintptr_t c = (uintptr_t)coproc;
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_FIFO_WAY, endian_le32(way));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_FIFO_NO, endian_le32(no));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_STATUS_ADDR, endian_le32((uintptr_t)mwmr->status));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_DEPTH, endian_le32(mwmr->gdepth));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_BUFFER_ADDR, endian_le32((uintptr_t)mwmr->buffer));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_WIDTH, endian_le32((uintptr_t)mwmr->width));
-#ifdef CONFIG_MWMR_USE_RAMLOCKS
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_LOCK_ADDR, endian_le32((uintptr_t)mwmr->lock));
-#endif
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_RUNNING, endian_le32(1));
-}
-
-void mwmr_config( void *coproc, size_t no, const uint32_t val )
-{
-	uintptr_t c = (uintptr_t)coproc;
-	cpu_mem_write_32( c + sizeof(uint32_t) * no, val);
-}
-
-uint32_t mwmr_status( void *coproc, size_t no )
-{
-	uintptr_t c = (uintptr_t)coproc;
-	return cpu_mem_read_32( c + sizeof(uint32_t) * no );
-}
-
-static inline void mwmr_lock( struct mwmr_s *fifo )
-{
-#ifdef CONFIG_MWMR_USE_RAMLOCKS
-  printf("use ramlocks\n");
-	while (*((uint32_t *)fifo->lock) != 0) {
-# if defined(CONFIG_PTHREAD)
-		pthread_yield();
-# else
-		cpu_interrupt_disable();
-		sched_context_switch();
-		cpu_interrupt_enable();
-# endif
-	}
-#else
-printf("do not use ramlocks\n");
-# if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD)
-	while (cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0)) {
-/* 		cpu_interrupt_disable(); */
-/* 		sched_context_switch(); */
-/* 		cpu_interrupt_enable(); */
-		srl_sched_wait_eq_le(&fifo->status->lock, 0);
-	}
-# elif defined(CONFIG_PTHREAD)
-        printf("use pthread; lock address %x value %x \n",(atomic_int_t*)&(fifo->status->lock),fifo->status->lock);
- 	while (cpu_atomic_bit_testset((atomic_int_t*)&(fifo->status->lock), 0)) {
- 		pthread_yield();
- 	}
-
-# else
-printf("do not use pthread\n");
-	cpu_atomic_bit_waitset((atomic_int_t*)&fifo->status->lock, 0);
-# endif
-#endif
-}
-
-static inline uint32_t mwmr_try_lock( struct mwmr_s *fifo )
-{
-#ifdef CONFIG_MWMR_USE_RAMLOCKS
-	return !!cpu_mem_read_32((uintptr_t)fifo->lock);
-#else
-	return cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0);
-#endif
-}
-
-static inline void mwmr_unlock( struct mwmr_s *fifo )
-{
-#ifdef CONFIG_MWMR_USE_RAMLOCKS
-	cpu_mem_write_32((uintptr_t)fifo->lock, 0);
-#else
-    cpu_mem_write_32((uintptr_t)&fifo->status->lock, 0);
-#endif
-}
-
-typedef struct {
-	uint32_t usage, wptr, rptr, modified;
-} local_mwmr_status_t;
-
-static inline void rehash_status( struct mwmr_s *fifo, local_mwmr_status_t *status )
-{
-	struct mwmr_status_s *fstatus = fifo->status;
-	cpu_dcache_invld_buf((void*)fstatus, sizeof(*fstatus));
-	status->usage = endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->usage ));
-    status->wptr =  endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->wptr ));
-    status->rptr =  endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->rptr ));
-	status->modified = 0;
-//	srl_log_printf(NONE,"%s %d %d %d/%d\n", fifo->name, status->rptr, status->wptr, status->usage, fifo->gdepth);
-}
-
-static inline void writeback_status( struct mwmr_s *fifo, local_mwmr_status_t *status )
-{
-    struct mwmr_status_s *fstatus = fifo->status;
-	if ( !status->modified )
-		return;
-	cpu_mem_write_32( (uintptr_t)&fstatus->usage, endian_le32(status->usage) );
-    cpu_mem_write_32( (uintptr_t)&fstatus->wptr, endian_le32(status->wptr) );
-	cpu_mem_write_32( (uintptr_t)&fstatus->rptr, endian_le32(status->rptr) );
-}
-
-void mwmr_read( struct mwmr_s *fifo, void *_ptr, size_t lensw )
-{
-	uint8_t *ptr = _ptr;
-	local_mwmr_status_t status;
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	size_t tot = lensw/fifo->width;
-	uint32_t access_begin = cpu_cycle_count();
-#endif
-
-	mwmr_lock( fifo );
-	rehash_status( fifo, &status );
-    while ( lensw ) {
-        size_t len;
-		while ( status.usage < fifo->width ) {
-			writeback_status( fifo, &status );
-            mwmr_unlock( fifo );
-#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD)
-			srl_sched_wait_ge_le(&fifo->status->usage, fifo->width);
-#elif defined(CONFIG_PTHREAD)
-			pthread_yield();
-#else
-			cpu_interrupt_disable();
-			sched_context_switch();
-			cpu_interrupt_enable();
-#endif
-            mwmr_lock( fifo );
-			rehash_status( fifo, &status );
-        }
-        while ( lensw && status.usage >= fifo->width ) {
-			void *sptr;
-
-            if ( status.rptr < status.wptr )
-                len = status.usage;
-            else
-                len = (fifo->gdepth - status.rptr);
-            len = min(len, lensw);
-			sptr = &((uint8_t*)fifo->buffer)[status.rptr];
-			cpu_dcache_invld_buf(sptr, len);
-            memcpy( ptr, sptr, len );
-            status.rptr += len;
-            if ( status.rptr == fifo->gdepth )
-                status.rptr = 0;
-            ptr += len;
-            status.usage -= len;
-            lensw -= len;
-			status.modified = 1;
-        }
-    }
-	writeback_status( fifo, &status );
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	cpu_dcache_invld_buf(fifo, sizeof(*fifo));
-	fifo->n_read += tot;
-	fifo->time_read += cpu_cycle_count()-access_begin;
-#endif
-
-	mwmr_unlock( fifo );
-}
-
-void mwmr_write( struct mwmr_s *fifo, const void *_ptr, size_t lensw )
-{
-	const uint8_t *ptr = _ptr;
-    local_mwmr_status_t status;
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	size_t tot = lensw/fifo->width;
-	uint32_t access_begin = cpu_cycle_count();
-#endif
-
-	mwmr_lock( fifo );
-        printf("I am here");
-	rehash_status( fifo, &status );
-    while ( lensw ) {
-        size_t len; printf("while lensw ");
-        while (status.usage >= fifo->gdepth) {
-          //DG c'est le cas d'echec pour cause de fifo pleine
-          printf("while status.usage "); 
-          printf("status.usage : %x ", status.usage);
-          printf("fifo address : %x ", fifo);
-          printf("fifo->depth: %x ", fifo->depth);
-          printf("fifo->width: %x ", fifo->width);
-          printf("fifo->gdepth: %x ", fifo->gdepth);
-          printf("fifo->status address: %x ", fifo->status);
-			writeback_status( fifo, &status );
-            mwmr_unlock( fifo );
-#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD)
-			srl_sched_wait_le_le(&fifo->status->usage, fifo->gdepth-fifo->width);
-                        //#elif defined(CONFIG_PTHREAD)
-#elif defined(CONFIG_PTHREAD)&&defined(CONFIG_MWMR_PTHREAD)
-                        printf("pthread yield");
-			pthread_yield();
-#else
-                        printf("cpu yield");
-			cpu_interrupt_disable();
-			sched_context_switch();
-			cpu_interrupt_enable();
-#endif
-            mwmr_lock( fifo );
-			rehash_status( fifo, &status );
-        }
-        //DG ici on peut ecrire
-        printf("lensw : %x ", lensw);
-        printf("status.usage : %x ", status.usage);
-        printf("fifo->gdepth: %x ", fifo->gdepth);
-
-        while ( lensw && status.usage < fifo->gdepth ) {
-printf("while lensw&& status.usage ");
-			void *dptr;
-
-            if ( status.rptr <= status.wptr )
-                len = (fifo->gdepth - status.wptr);
-            else
-                len = fifo->gdepth - status.usage;
-            len = min(len, lensw);
-			dptr = &((uint8_t*)fifo->buffer)[status.wptr];
-            memcpy( dptr, ptr, len );
-            status.wptr += len;
-            if ( status.wptr == fifo->gdepth )
-                status.wptr = 0;
-            ptr += len;
-            status.usage += len;
-            lensw -= len;
-			status.modified = 1;
-        }
-    }
-	writeback_status( fifo, &status );
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	cpu_dcache_invld_buf(fifo, sizeof(*fifo));
-	fifo->n_write += tot;
-	fifo->time_write += cpu_cycle_count()-access_begin;
-#endif
-
-	mwmr_unlock( fifo );printf("$$$ end of write ");
-}
-
-size_t mwmr_try_read( struct mwmr_s *fifo, void *_ptr, size_t lensw )
-{
-	uint8_t *ptr = _ptr;
-	size_t done = 0;
-    local_mwmr_status_t status;
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	uint32_t access_begin = cpu_cycle_count();
-#endif
-
-	if ( mwmr_try_lock( fifo ) )
-		return done;
-	rehash_status( fifo, &status );
-	while ( lensw && status.usage >= fifo->width ) {
-        size_t len;
-		void *sptr;
-
-		if ( status.rptr < status.wptr )
-			len = status.usage;
-		else
-			len = (fifo->gdepth - status.rptr);
-		len = min(len, lensw);
-		sptr = &((uint8_t*)fifo->buffer)[status.rptr];
-		cpu_dcache_invld_buf(sptr, len);
-		memcpy( ptr, sptr, len );
-		status.rptr += len;
-		if ( status.rptr == fifo->gdepth )
-			status.rptr = 0;
-		ptr += len;
-		status.usage -= len;
-		lensw -= len;
-		done += len;
-		status.modified = 1;
-	}
-	writeback_status( fifo, &status );
-	mwmr_unlock( fifo );
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	cpu_dcache_invld_buf(fifo, sizeof(*fifo));
-	fifo->n_read += done/fifo->width;
-	fifo->time_read += cpu_cycle_count()-access_begin;
-#endif
-	return done;
-}
-
-size_t mwmr_try_write( struct mwmr_s *fifo, const void *_ptr, size_t lensw )
-{
-	const uint8_t *ptr = _ptr;
-	size_t done = 0;
-    local_mwmr_status_t status;
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	uint32_t access_begin = cpu_cycle_count();
-#endif
-
-	if ( mwmr_try_lock( fifo ) )
-		return done;
-	rehash_status( fifo, &status );
-	while ( lensw && status.usage < fifo->gdepth ) {
-        size_t len;
-		void *dptr;
-
-		if ( status.rptr <= status.wptr )
-			len = (fifo->gdepth - status.wptr);
-		else
-			len = fifo->gdepth - status.usage;
-		len = min(len, lensw);
-		dptr = &((uint8_t*)fifo->buffer)[status.wptr];
-		memcpy( dptr, ptr, len );
-		status.wptr += len;
-		if ( status.wptr == fifo->gdepth )
-			status.wptr = 0;
-		ptr += len;
-		status.usage += len;
-		lensw -= len;
-		done += len;
-		status.modified = 1;
-    }
-	writeback_status( fifo, &status );
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	cpu_dcache_invld_buf(fifo, sizeof(*fifo));
-	fifo->n_write += done/fifo->width;
-	fifo->time_write += cpu_cycle_count()-access_begin;
-#endif
-	mwmr_unlock( fifo );
-	return done;
-}
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-void mwmr_dump_stats( const struct mwmr_s *mwmr )
-{
-	cpu_dcache_invld_buf(mwmr, sizeof(*mwmr));
-	if ( mwmr->n_read )
-		srl_log_printf(NONE, "read,%s,%d,%d,%d\n",
-					   mwmr->name, cpu_cycle_count(),
-					   mwmr->time_read, mwmr->n_read );
-	if ( mwmr->n_write )
-		srl_log_printf(NONE, "write,%s,%d,%d,%d\n",
-					   mwmr->name, cpu_cycle_count(),
-					   mwmr->time_write, mwmr->n_write );
-}
-
-void mwmr_clear_stats( struct mwmr_s *mwmr )
-{
-	cpu_dcache_invld_buf(mwmr, sizeof(*mwmr));
-	mwmr->time_read =
-		mwmr->n_read =
-		mwmr->time_write =
-		mwmr->n_write = 0;
-}
-#endif
diff --git a/MPSoC/mutekh/libmwmr/mwmr_soclib.c-10-02-2017 b/MPSoC/mutekh/libmwmr/mwmr_soclib.c-10-02-2017
deleted file mode 100644
index 43a31fc540..0000000000
--- a/MPSoC/mutekh/libmwmr/mwmr_soclib.c-10-02-2017
+++ /dev/null
@@ -1,377 +0,0 @@
-/*
- * This file is part of MutekH.
- * 
- * MutekH is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation; version 2.1 of the License.
- * 
- * MutekH is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with MutekH; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301 USA
- *
- * Copyright (c) UPMC, Lip6, SoC
- *         Nicolas Pouillon <nipo@ssji.net>, 2008
- */
-
-#include <mutek/scheduler.h>
-#include <hexo/types.h>
-#include <hexo/atomic.h>
-#include <hexo/iospace.h>
-#include <hexo/endian.h>
-#include <hexo/interrupt.h>
-#include <string.h>
-#include <mwmr/mwmr.h>
-
-#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD)
-# include <srl/srl_sched_wait.h>
-# include <srl/srl_log.h>
-# ifndef SRL_VERBOSITY
-#  define SRL_VERBOSITY VERB_DEBUG
-# endif
-#elif defined(CONFIG_PTHREAD)
-# include <pthread.h>
-#endif
-
-static inline size_t min(size_t a, size_t b)
-{
-	if ( a < b )
-		return a;
-	else
-		return b;
-}
-
-void
-mwmr_hw_init( void *coproc, enum SoclibMwmrWay way,
-			  size_t no, const struct mwmr_s* mwmr )
-{
-	uintptr_t c = (uintptr_t)coproc;
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_FIFO_WAY, endian_le32(way));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_FIFO_NO, endian_le32(no));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_STATUS_ADDR, endian_le32((uintptr_t)mwmr->status));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_DEPTH, endian_le32(mwmr->gdepth));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_BUFFER_ADDR, endian_le32((uintptr_t)mwmr->buffer));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_WIDTH, endian_le32((uintptr_t)mwmr->width));
-#ifdef CONFIG_MWMR_USE_RAMLOCKS
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_LOCK_ADDR, endian_le32((uintptr_t)mwmr->lock));
-#endif
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_RUNNING, endian_le32(1));
-}
-
-void mwmr_config( void *coproc, size_t no, const uint32_t val )
-{
-	uintptr_t c = (uintptr_t)coproc;
-	cpu_mem_write_32( c + sizeof(uint32_t) * no, val);
-}
-
-uint32_t mwmr_status( void *coproc, size_t no )
-{
-	uintptr_t c = (uintptr_t)coproc;
-	return cpu_mem_read_32( c + sizeof(uint32_t) * no );
-}
-
-static inline void mwmr_lock( struct mwmr_s *fifo )
-{
-#ifdef CONFIG_MWMR_USE_RAMLOCKS
-	while (*((uint32_t *)fifo->lock) != 0) {
-# if defined(CONFIG_PTHREAD)
-		pthread_yield();
-# else
-		cpu_interrupt_disable();
-		sched_context_switch();
-		cpu_interrupt_enable();
-# endif
-	}
-#else
-# if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD)
-	while (cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0)) {
-/* 		cpu_interrupt_disable(); */
-/* 		sched_context_switch(); */
-/* 		cpu_interrupt_enable(); */
-		srl_sched_wait_eq_le(&fifo->status->lock, 0);
-	}
-# elif defined(CONFIG_PTHREAD)
-	while (cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0)) {
-		pthread_yield();
-	}
-# else
-	cpu_atomic_bit_waitset((atomic_int_t*)&fifo->status->lock, 0);
-# endif
-#endif
-}
-
-static inline uint32_t mwmr_try_lock( struct mwmr_s *fifo )
-{
-#ifdef CONFIG_MWMR_USE_RAMLOCKS
-	return !!cpu_mem_read_32((uintptr_t)fifo->lock);
-#else
-	return cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0);
-#endif
-}
-
-static inline void mwmr_unlock( struct mwmr_s *fifo )
-{
-#ifdef CONFIG_MWMR_USE_RAMLOCKS
-	cpu_mem_write_32((uintptr_t)fifo->lock, 0);
-#else
-    cpu_mem_write_32((uintptr_t)&fifo->status->lock, 0);
-#endif
-}
-
-typedef struct {
-	uint32_t usage, wptr, rptr, modified;
-} local_mwmr_status_t;
-
-static inline void rehash_status( struct mwmr_s *fifo, local_mwmr_status_t *status )
-{
-	struct mwmr_status_s *fstatus = fifo->status;
-	cpu_dcache_invld_buf((void*)fstatus, sizeof(*fstatus));
-	status->usage = endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->usage ));
-    status->wptr =  endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->wptr ));
-    status->rptr =  endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->rptr ));
-	status->modified = 0;
-//	srl_log_printf(NONE,"%s %d %d %d/%d\n", fifo->name, status->rptr, status->wptr, status->usage, fifo->gdepth);
-}
-
-static inline void writeback_status( struct mwmr_s *fifo, local_mwmr_status_t *status )
-{
-    struct mwmr_status_s *fstatus = fifo->status;
-	if ( !status->modified )
-		return;
-	cpu_mem_write_32( (uintptr_t)&fstatus->usage, endian_le32(status->usage) );
-    cpu_mem_write_32( (uintptr_t)&fstatus->wptr, endian_le32(status->wptr) );
-	cpu_mem_write_32( (uintptr_t)&fstatus->rptr, endian_le32(status->rptr) );
-}
-
-void mwmr_read( struct mwmr_s *fifo, void *_ptr, size_t lensw )
-{
-	uint8_t *ptr = _ptr;
-	local_mwmr_status_t status;
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	size_t tot = lensw/fifo->width;
-	uint32_t access_begin = cpu_cycle_count();
-#endif
-
-	mwmr_lock( fifo );
-	rehash_status( fifo, &status );
-    while ( lensw ) {
-        size_t len;
-		while ( status.usage < fifo->width ) {
-			writeback_status( fifo, &status );
-            mwmr_unlock( fifo );
-#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD)
-			srl_sched_wait_ge_le(&fifo->status->usage, fifo->width);
-#elif defined(CONFIG_PTHREAD)
-			pthread_yield();
-#else
-			cpu_interrupt_disable();
-			sched_context_switch();
-			cpu_interrupt_enable();
-#endif
-            mwmr_lock( fifo );
-			rehash_status( fifo, &status );
-        }
-        while ( lensw && status.usage >= fifo->width ) {
-			void *sptr;
-
-            if ( status.rptr < status.wptr )
-                len = status.usage;
-            else
-                len = (fifo->gdepth - status.rptr);
-            len = min(len, lensw);
-			sptr = &((uint8_t*)fifo->buffer)[status.rptr];
-			cpu_dcache_invld_buf(sptr, len);
-            memcpy( ptr, sptr, len );
-            status.rptr += len;
-            if ( status.rptr == fifo->gdepth )
-                status.rptr = 0;
-            ptr += len;
-            status.usage -= len;
-            lensw -= len;
-			status.modified = 1;
-        }
-    }
-	writeback_status( fifo, &status );
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	cpu_dcache_invld_buf(fifo, sizeof(*fifo));
-	fifo->n_read += tot;
-	fifo->time_read += cpu_cycle_count()-access_begin;
-#endif
-
-	mwmr_unlock( fifo );
-}
-
-void mwmr_write( struct mwmr_s *fifo, const void *_ptr, size_t lensw )
-{
-	const uint8_t *ptr = _ptr;
-    local_mwmr_status_t status;
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	size_t tot = lensw/fifo->width;
-	uint32_t access_begin = cpu_cycle_count();
-#endif
-
-	mwmr_lock( fifo );
-	rehash_status( fifo, &status );
-    while ( lensw ) {
-        size_t len;
-        while (status.usage >= fifo->gdepth) {
-			writeback_status( fifo, &status );
-            mwmr_unlock( fifo );
-#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD)
-			srl_sched_wait_le_le(&fifo->status->usage, fifo->gdepth-fifo->width);
-#elif defined(CONFIG_PTHREAD)
-			pthread_yield();
-#else
-			cpu_interrupt_disable();
-			sched_context_switch();
-			cpu_interrupt_enable();
-#endif
-            mwmr_lock( fifo );
-			rehash_status( fifo, &status );
-        }
-        while ( lensw && status.usage < fifo->gdepth ) {
-			void *dptr;
-
-            if ( status.rptr <= status.wptr )
-                len = (fifo->gdepth - status.wptr);
-            else
-                len = fifo->gdepth - status.usage;
-            len = min(len, lensw);
-			dptr = &((uint8_t*)fifo->buffer)[status.wptr];
-            memcpy( dptr, ptr, len );
-            status.wptr += len;
-            if ( status.wptr == fifo->gdepth )
-                status.wptr = 0;
-            ptr += len;
-            status.usage += len;
-            lensw -= len;
-			status.modified = 1;
-        }
-    }
-	writeback_status( fifo, &status );
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	cpu_dcache_invld_buf(fifo, sizeof(*fifo));
-	fifo->n_write += tot;
-	fifo->time_write += cpu_cycle_count()-access_begin;
-#endif
-
-	mwmr_unlock( fifo );
-}
-
-size_t mwmr_try_read( struct mwmr_s *fifo, void *_ptr, size_t lensw )
-{
-	uint8_t *ptr = _ptr;
-	size_t done = 0;
-    local_mwmr_status_t status;
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	uint32_t access_begin = cpu_cycle_count();
-#endif
-
-	if ( mwmr_try_lock( fifo ) )
-		return done;
-	rehash_status( fifo, &status );
-	while ( lensw && status.usage >= fifo->width ) {
-        size_t len;
-		void *sptr;
-
-		if ( status.rptr < status.wptr )
-			len = status.usage;
-		else
-			len = (fifo->gdepth - status.rptr);
-		len = min(len, lensw);
-		sptr = &((uint8_t*)fifo->buffer)[status.rptr];
-		cpu_dcache_invld_buf(sptr, len);
-		memcpy( ptr, sptr, len );
-		status.rptr += len;
-		if ( status.rptr == fifo->gdepth )
-			status.rptr = 0;
-		ptr += len;
-		status.usage -= len;
-		lensw -= len;
-		done += len;
-		status.modified = 1;
-	}
-	writeback_status( fifo, &status );
-	mwmr_unlock( fifo );
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	cpu_dcache_invld_buf(fifo, sizeof(*fifo));
-	fifo->n_read += done/fifo->width;
-	fifo->time_read += cpu_cycle_count()-access_begin;
-#endif
-	return done;
-}
-
-size_t mwmr_try_write( struct mwmr_s *fifo, const void *_ptr, size_t lensw )
-{
-	const uint8_t *ptr = _ptr;
-	size_t done = 0;
-    local_mwmr_status_t status;
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	uint32_t access_begin = cpu_cycle_count();
-#endif
-
-	if ( mwmr_try_lock( fifo ) )
-		return done;
-	rehash_status( fifo, &status );
-	while ( lensw && status.usage < fifo->gdepth ) {
-        size_t len;
-		void *dptr;
-
-		if ( status.rptr <= status.wptr )
-			len = (fifo->gdepth - status.wptr);
-		else
-			len = fifo->gdepth - status.usage;
-		len = min(len, lensw);
-		dptr = &((uint8_t*)fifo->buffer)[status.wptr];
-		memcpy( dptr, ptr, len );
-		status.wptr += len;
-		if ( status.wptr == fifo->gdepth )
-			status.wptr = 0;
-		ptr += len;
-		status.usage += len;
-		lensw -= len;
-		done += len;
-		status.modified = 1;
-    }
-	writeback_status( fifo, &status );
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	cpu_dcache_invld_buf(fifo, sizeof(*fifo));
-	fifo->n_write += done/fifo->width;
-	fifo->time_write += cpu_cycle_count()-access_begin;
-#endif
-	mwmr_unlock( fifo );
-	return done;
-}
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-void mwmr_dump_stats( const struct mwmr_s *mwmr )
-{
-	cpu_dcache_invld_buf(mwmr, sizeof(*mwmr));
-	if ( mwmr->n_read )
-		srl_log_printf(NONE, "read,%s,%d,%d,%d\n",
-					   mwmr->name, cpu_cycle_count(),
-					   mwmr->time_read, mwmr->n_read );
-	if ( mwmr->n_write )
-		srl_log_printf(NONE, "write,%s,%d,%d,%d\n",
-					   mwmr->name, cpu_cycle_count(),
-					   mwmr->time_write, mwmr->n_write );
-}
-
-void mwmr_clear_stats( struct mwmr_s *mwmr )
-{
-	cpu_dcache_invld_buf(mwmr, sizeof(*mwmr));
-	mwmr->time_read =
-		mwmr->n_read =
-		mwmr->time_write =
-		mwmr->n_write = 0;
-}
-#endif
diff --git a/MPSoC/mutekh/libmwmr/mwmr_soclib.c-10-05 b/MPSoC/mutekh/libmwmr/mwmr_soclib.c-10-05
deleted file mode 100644
index 6c19991416..0000000000
--- a/MPSoC/mutekh/libmwmr/mwmr_soclib.c-10-05
+++ /dev/null
@@ -1,425 +0,0 @@
-/*
- * This file is part of MutekH.
- * 
- * MutekH is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation; version 2.1 of the License.
- * 
- * MutekH is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with MutekH; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301 USA
- *
- * Copyright (c) UPMC, Lip6, SoC
- *         Nicolas Pouillon <nipo@ssji.net>, 2008
- */
-
-#include <mutek/scheduler.h>
-#include <hexo/types.h>
-#include <hexo/atomic.h>
-#include <hexo/iospace.h>
-#include <hexo/endian.h>
-#include <hexo/interrupt.h>
-#include <string.h>
-#include <mwmr/mwmr.h>
-#include <stdio.h> //DG 08.12.
-#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD)
-# include <srl/srl_sched_wait.h>
-# include <srl/srl_log.h>
-# ifndef SRL_VERBOSITY
-#  define SRL_VERBOSITY VERB_DEBUG
-# endif
-#elif defined(CONFIG_PTHREAD)
-# include <pthread.h>
-#endif
-
-static inline size_t min(size_t a, size_t b)
-{
-	if ( a < b )
-		return a;
-	else
-		return b;
-}
-
-void
-mwmr_hw_init( void *coproc, enum SoclibMwmrWay way,
-			  size_t no, const struct mwmr_s* mwmr )
-{
-	uintptr_t c = (uintptr_t)coproc;
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_FIFO_WAY, endian_le32(way));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_FIFO_NO, endian_le32(no));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_STATUS_ADDR, endian_le32((uintptr_t)mwmr->status));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_DEPTH, endian_le32(mwmr->gdepth));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_BUFFER_ADDR, endian_le32((uintptr_t)mwmr->buffer));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_WIDTH, endian_le32((uintptr_t)mwmr->width));
-#ifdef CONFIG_MWMR_USE_RAMLOCKS
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_LOCK_ADDR, endian_le32((uintptr_t)mwmr->lock));
-#endif
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_RUNNING, endian_le32(1));
-}
-
-void mwmr_config( void *coproc, size_t no, const uint32_t val )
-{
-	uintptr_t c = (uintptr_t)coproc;
-	cpu_mem_write_32( c + sizeof(uint32_t) * no, val);
-}
-
-uint32_t mwmr_status( void *coproc, size_t no )
-{
-	uintptr_t c = (uintptr_t)coproc;
-	return cpu_mem_read_32( c + sizeof(uint32_t) * no );
-}
-
-static inline void mwmr_lock( struct mwmr_s *fifo )
-{
- printf("##### MWMR LOCK ####");
-#ifdef CONFIG_MWMR_USE_RAMLOCKS
-  printf("##### MWMR USE RAMLOCKS ####");
-	while (*((uint32_t *)fifo->lock) != 0) {
-# if defined(CONFIG_PTHREAD)
-printf("##### MWMR CONFIG_PTHREAD ####");
-		pthread_yield();
-# else
-printf("##### MWMR NON CONFIG_PTHREAD ####");
-		cpu_interrupt_disable();
-		sched_context_switch();
-		cpu_interrupt_enable();
-# endif
-	}
-#else
-# if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD)
-printf("##### MWMR CONFIG_SRL ####");
-	while (cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0)) {
-/* 		cpu_interrupt_disable(); */
-/* 		sched_context_switch(); */
-/* 		cpu_interrupt_enable(); */
-		srl_sched_wait_eq_le(&fifo->status->lock, 0);
-	}
-# elif defined(CONFIG_PTHREAD)
-printf("##### MWMR CONFIG_PTHREAD2 ####");
-
-while (cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0)) {
-		pthread_yield();printf("##### MWMR pthread_yield ####");
-	}
-# else
-printf("##### MWMR ELSE ####");
-	cpu_atomic_bit_waitset((atomic_int_t*)&fifo->status->lock, 0);
-# endif
-#endif
-}
-
-static inline uint32_t mwmr_try_lock( struct mwmr_s *fifo )
-{
-#ifdef CONFIG_MWMR_USE_RAMLOCKS
-	return !!cpu_mem_read_32((uintptr_t)fifo->lock);
-#else
-	return cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0);
-#endif
-}
-
-static inline void mwmr_unlock( struct mwmr_s *fifo )
-{
-#ifdef CONFIG_MWMR_USE_RAMLOCKS
-	cpu_mem_write_32((uintptr_t)fifo->lock, 0);
-#else
-    cpu_mem_write_32((uintptr_t)&fifo->status->lock, 0);
-#endif
-}
-
-typedef struct {
-	uint32_t usage, wptr, rptr, modified;
-} local_mwmr_status_t;
-
-static inline void rehash_status( struct mwmr_s *fifo, local_mwmr_status_t *status )
-{
-	struct mwmr_status_s *fstatus = fifo->status;
-	cpu_dcache_invld_buf((void*)fstatus, sizeof(*fstatus));
-	status->usage = endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->usage ));
-    status->wptr =  endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->wptr ));
-    status->rptr =  endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->rptr ));
-	status->modified = 0;
-        //printf("###### MWMR SOCLIB WRITE100 #############\n");
-	//printf("rehash_status : %s rptr %d wptr %d usage %d/depth %d\n", fifo->name, status->rptr, status->wptr, status->usage, fifo->gdepth);
-}
-
-static inline void writeback_status( struct mwmr_s *fifo, local_mwmr_status_t *status )
-{
-printf("###### MWMR SOCLIB 101 #############\n");
-    struct mwmr_status_s *fstatus = fifo->status;
-    	if ( !status->modified )
-    		return;
-printf("###### MWMR SOCLIB 101b #############\n");
-	cpu_mem_write_32( (uintptr_t)&fstatus->usage, endian_le32(status->usage) );
-    cpu_mem_write_32( (uintptr_t)&fstatus->wptr, endian_le32(status->wptr) );
-	cpu_mem_write_32( (uintptr_t)&fstatus->rptr, endian_le32(status->rptr) );
-printf("###### MWMR SOCLIB 101c #############\n");
-}
-
-void mwmr_read( struct mwmr_s *fifo, void *_ptr, size_t lensw )
-{
-	uint8_t *ptr = _ptr;
-	local_mwmr_status_t status;
-
-        printf("###### MWMR SOCLIB READ 0 #############\n");
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	size_t tot = lensw/fifo->width;
-	uint32_t access_begin = cpu_cycle_count();
-#endif
-
-	mwmr_lock( fifo ); printf("###### MWMR SOCLIB READ 1 #############\n");
-	rehash_status( fifo, &status );
-    while ( lensw ) {printf("lensw %x \n",lensw);
-        size_t len;
-		while ( status.usage < fifo->width ) { //DG 15.12.
-                  printf("status address %x\n", &status);
-                  printf("status.usage %x\n",  status.usage);
-                  printf("fifo->width %x\n", fifo->width);
-
-                  writeback_status( fifo, &status );
-                  mwmr_unlock( fifo ); 
-                  printf("###### MWMR SOCLIB READ 2 #############\n");
-#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD)
-			srl_sched_wait_ge_le(&fifo->status->usage, fifo->width);
-#elif defined(CONFIG_PTHREAD)
-			pthread_yield();
-                        printf("###### MWMR SOCLIB READ 2bis #############\n");
-#else
-			cpu_interrupt_disable();
-			sched_context_switch();
-			cpu_interrupt_enable();
-#endif
-printf("###### MWMR SOCLIB READ 3 #############\n");
-            mwmr_lock( fifo );
-printf("###### MWMR SOCLIB READ 4 #############\n");
-
-	rehash_status( fifo, &status );
-printf("###### MWMR SOCLIB READ 4a #############\n");
-        } //DG 15.12.
-printf("###### MWMR SOCLIB READ 4b #############\n");
-        while ( lensw && status.usage >= fifo->width ) {
-			void *sptr;
-
-            if ( status.rptr < status.wptr )
-                len = status.usage;
-            else
-                len = (fifo->gdepth - status.rptr);
-            len = min(len, lensw);
-			sptr = &((uint8_t*)fifo->buffer)[status.rptr];
-			cpu_dcache_invld_buf(sptr, len);
-            memcpy( ptr, sptr, len );
-printf("###### MWMR SOCLIB READ 5 #############\n");
-            status.rptr += len;
-            if ( status.rptr == fifo->gdepth )
-                status.rptr = 0;
-            ptr += len;
-            status.usage -= len;
-            lensw -= len;
-			status.modified = 1;
-        }
-    }
-printf("###### MWMR SOCLIB READ 6 #############\n");
-	writeback_status( fifo, &status );
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	cpu_dcache_invld_buf(fifo, sizeof(*fifo));
-	fifo->n_read += tot;
-	fifo->time_read += cpu_cycle_count()-access_begin;
-#endif
- printf("###### MWMR SOCLIB READ 7 #############\n");
-	mwmr_unlock( fifo );
-}
-
-void mwmr_write( struct mwmr_s *fifo, const void *_ptr, size_t lensw )
-{
-	const uint8_t *ptr = _ptr;
-    local_mwmr_status_t status;
-
-printf("###### MWMR SOCLIB WRITE #############\n");
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	size_t tot = lensw/fifo->width;
-	uint32_t access_begin = cpu_cycle_count();
-#endif
-        //printf("###### MWMR SOCLIB WRITE2 #############\n");
-printf(" %x \n",fifo); 
-//printf(" %x \n",fifo->depth);  DG 08.12. c'est ici que ca plante, fifo non initialise??
-printf("###### MWMR SOCLIB WRITE2 #############\n");
-//printf(" %x \n",fifo->lock); DG 08.12. c'est ici que ca plante, on n'a pas d elock!
-        mwmr_lock( fifo );
-       
-printf("###### MWMR SOCLIB WRITE3 #############\n");
-printf("###### MWMR SOCLIB WRITE3b #############\n");
-	rehash_status( fifo, &status );
-printf("###### MWMR SOCLIB WRITE3c #############\n");
-    while ( lensw ) {
-        size_t len;
-        while (status.usage >= fifo->gdepth) {
-			writeback_status( fifo, &status );
-            mwmr_unlock( fifo );
-#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD)
-			srl_sched_wait_le_le(&fifo->status->usage, fifo->gdepth-fifo->width);
-#elif defined(CONFIG_PTHREAD)
-			pthread_yield();
-#else
-			cpu_interrupt_disable();
-			sched_context_switch();
-			cpu_interrupt_enable();
-#endif
-            mwmr_lock( fifo );
-			rehash_status( fifo, &status );
-        }
-printf("###### MWMR SOCLIB WRITE4 #############\n");
-        while ( lensw && status.usage < fifo->gdepth ) {
-			void *dptr;
-                        printf("###### MWMR SOCLIB WRITE4 #######lensw %x \n",lensw);
-printf("###### MWMR SOCLIB WRITE4 #######fifo->gdepth %x \n",fifo->gdepth);
-
- if ( status.rptr <= status.wptr ){
-printf("###### MWMR SOCLIB WRITE4a #######fifo->gdepth %x \n",fifo->gdepth);
- len = (fifo->gdepth - status.wptr);
-printf("###### MWMR SOCLIB WRITE4a #######fifo->len %x \n",len);
-}
- else{
-printf("###### MWMR SOCLIB WRITE4b #######fifo->gdepth %x \n",fifo->gdepth);
-                len = fifo->gdepth - status.usage;
- }
-            len = min(len, lensw);
-			dptr = &((uint8_t*)fifo->buffer)[status.wptr];
-            memcpy( dptr, ptr, len );
-            status.wptr += len;
-            if ( status.wptr == fifo->gdepth )
-                status.wptr = 0;
-            ptr += len;
-            status.usage += len;
-            lensw -= len;
-            printf("######lensw %x", lensw);
-printf("######len %x", len);
-			status.modified = 1;
-        }
-    }
-	writeback_status( fifo, &status );
-printf("###### MWMR SOCLIB WRITE5 #############\n");
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	cpu_dcache_invld_buf(fifo, sizeof(*fifo));
-	fifo->n_write += tot;
-	fifo->time_write += cpu_cycle_count()-access_begin;
-#endif
-printf("###### MWMR SOCLIB WRITE6 #############\n");
-	mwmr_unlock( fifo );
-printf("###### MWMR SOCLIB WRITE7 #############\n");
-}
-
-size_t mwmr_try_read( struct mwmr_s *fifo, void *_ptr, size_t lensw )
-{
-	uint8_t *ptr = _ptr;
-	size_t done = 0;
-    local_mwmr_status_t status;
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	uint32_t access_begin = cpu_cycle_count();
-#endif
-
-	if ( mwmr_try_lock( fifo ) )
-		return done;
-	rehash_status( fifo, &status );
-	while ( lensw && status.usage >= fifo->width ) {
-        size_t len;
-		void *sptr;
-
-		if ( status.rptr < status.wptr )
-			len = status.usage;
-		else
-			len = (fifo->gdepth - status.rptr);
-		len = min(len, lensw);
-		sptr = &((uint8_t*)fifo->buffer)[status.rptr];
-		cpu_dcache_invld_buf(sptr, len);
-		memcpy( ptr, sptr, len );
-		status.rptr += len;
-		if ( status.rptr == fifo->gdepth )
-			status.rptr = 0;
-		ptr += len;
-		status.usage -= len;
-		lensw -= len;
-		done += len;
-		status.modified = 1;
-	}
-	writeback_status( fifo, &status );
-	mwmr_unlock( fifo );
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	cpu_dcache_invld_buf(fifo, sizeof(*fifo));
-	fifo->n_read += done/fifo->width;
-	fifo->time_read += cpu_cycle_count()-access_begin;
-#endif
-	return done;
-}
-
-size_t mwmr_try_write( struct mwmr_s *fifo, const void *_ptr, size_t lensw )
-{
-	const uint8_t *ptr = _ptr;
-	size_t done = 0;
-    local_mwmr_status_t status;
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	uint32_t access_begin = cpu_cycle_count();
-#endif
-
-	if ( mwmr_try_lock( fifo ) )
-		return done;
-	rehash_status( fifo, &status );
-	while ( lensw && status.usage < fifo->gdepth ) {
-        size_t len;
-		void *dptr;
-
-		if ( status.rptr <= status.wptr )
-			len = (fifo->gdepth - status.wptr);
-		else
-			len = fifo->gdepth - status.usage;
-		len = min(len, lensw);
-		dptr = &((uint8_t*)fifo->buffer)[status.wptr];
-		memcpy( dptr, ptr, len );
-		status.wptr += len;
-		if ( status.wptr == fifo->gdepth )
-			status.wptr = 0;
-		ptr += len;
-		status.usage += len;
-		lensw -= len;
-		done += len;
-		status.modified = 1;
-    }
-	writeback_status( fifo, &status );
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	cpu_dcache_invld_buf(fifo, sizeof(*fifo));
-	fifo->n_write += done/fifo->width;
-	fifo->time_write += cpu_cycle_count()-access_begin;
-#endif
-	mwmr_unlock( fifo );
-	return done;
-}
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-void mwmr_dump_stats( const struct mwmr_s *mwmr )
-{
-	cpu_dcache_invld_buf(mwmr, sizeof(*mwmr));
-	if ( mwmr->n_read )
-		srl_log_printf(NONE, "read,%s,%d,%d,%d\n",
-					   mwmr->name, cpu_cycle_count(),
-					   mwmr->time_read, mwmr->n_read );
-	if ( mwmr->n_write )
-		srl_log_printf(NONE, "write,%s,%d,%d,%d\n",
-					   mwmr->name, cpu_cycle_count(),
-					   mwmr->time_write, mwmr->n_write );
-}
-
-void mwmr_clear_stats( struct mwmr_s *mwmr )
-{
-	cpu_dcache_invld_buf(mwmr, sizeof(*mwmr));
-	mwmr->time_read =
-		mwmr->n_read =
-		mwmr->time_write =
-		mwmr->n_write = 0;
-}
-#endif
diff --git a/MPSoC/mutekh/libmwmr/mwmr_soclib.c-13-06 b/MPSoC/mutekh/libmwmr/mwmr_soclib.c-13-06
deleted file mode 100644
index 8a921ec888..0000000000
--- a/MPSoC/mutekh/libmwmr/mwmr_soclib.c-13-06
+++ /dev/null
@@ -1,397 +0,0 @@
-/*
- * This file is part of MutekH.
- * 
- * MutekH is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation; version 2.1 of the License.
- * 
- * MutekH is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with MutekH; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301 USA
- *
- * Copyright (c) UPMC, Lip6, SoC
- *         Nicolas Pouillon <nipo@ssji.net>, 2008
- */
-
-#include <mutek/scheduler.h>
-#include <hexo/types.h>
-#include <hexo/atomic.h>
-#include <hexo/iospace.h>
-#include <hexo/endian.h>
-#include <hexo/interrupt.h>
-#include <string.h>
-#include <mwmr/mwmr.h>
-#include <stdio.h> //DG 19.05. for debug
-#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD)
-# include <srl/srl_sched_wait.h>
-# include <srl/srl_log.h>
-# ifndef SRL_VERBOSITY
-#  define SRL_VERBOSITY VERB_DEBUG
-# endif
-#elif defined(CONFIG_PTHREAD)
-# include <pthread.h>
-#endif
-
-#define CONFIG_MWMR_USE_RAMLOCKS //DG 19.05.
-
-static inline size_t min(size_t a, size_t b)
-{
-	if ( a < b )
-		return a;
-	else
-		return b;
-}
-
-void
-mwmr_hw_init( void *coproc, enum SoclibMwmrWay way,
-			  size_t no, const struct mwmr_s* mwmr )
-{
-	uintptr_t c = (uintptr_t)coproc;
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_FIFO_WAY, endian_le32(way));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_FIFO_NO, endian_le32(no));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_STATUS_ADDR, endian_le32((uintptr_t)mwmr->status));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_DEPTH, endian_le32(mwmr->gdepth));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_BUFFER_ADDR, endian_le32((uintptr_t)mwmr->buffer));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_WIDTH, endian_le32((uintptr_t)mwmr->width));
-#ifdef CONFIG_MWMR_USE_RAMLOCKS
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_LOCK_ADDR, endian_le32((uintptr_t)mwmr->lock));
-#endif
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_RUNNING, endian_le32(1));
-}
-
-void mwmr_config( void *coproc, size_t no, const uint32_t val )
-{
-	uintptr_t c = (uintptr_t)coproc;
-	cpu_mem_write_32( c + sizeof(uint32_t) * no, val);
-}
-
-uint32_t mwmr_status( void *coproc, size_t no )
-{
-	uintptr_t c = (uintptr_t)coproc;
-	return cpu_mem_read_32( c + sizeof(uint32_t) * no );
-}
-
-static inline void mwmr_lock( struct mwmr_s *fifo )
-{
-printf("debug lock\n");
-
-#ifdef CONFIG_MWMR_USE_RAMLOCKS
- 
- printf("debug lock 0 %x \n",fifo->lock);
- 
-	while (*((uint32_t *)fifo->lock) != 0) {
-
-# if defined(CONFIG_PTHREAD)
-printf("debug lock 1\n");
-		pthread_yield();
-# else
-printf("debug lock 2\n");
-		cpu_interrupt_disable();printf("debug lock 3\n");
-		sched_context_switch();printf("debug lock 4\n");
-		cpu_interrupt_enable();printf("debug lock 5\n");
-# endif
-	}
-printf("debug lock 6\n");
-#else
-# if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD)
-printf("debug lock 7\n");
-	while (cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0)) {
-/* 		cpu_interrupt_disable(); */
-/* 		sched_context_switch(); */
-/* 		cpu_interrupt_enable(); */
-printf("debug lock 8\n");
-		srl_sched_wait_eq_le(&fifo->status->lock, 0);
-printf("debug lock 9\n");
-	}
-# elif defined(CONFIG_PTHREAD)
-printf("debug lock 10\n");
-	while (cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0)) {
-	printf("debug lock 11\n");	pthread_yield();
-	}
-# else
-printf("debug lock 12\n");
-	cpu_atomic_bit_waitset((atomic_int_t*)&fifo->status->lock, 0);
-# endif
-#endif
-}
-
-static inline uint32_t mwmr_try_lock( struct mwmr_s *fifo )
-{
-#ifdef CONFIG_MWMR_USE_RAMLOCKS
-	return !!cpu_mem_read_32((uintptr_t)fifo->lock);
-#else
-	return cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0);
-#endif
-}
-
-static inline void mwmr_unlock( struct mwmr_s *fifo )
-{
-#ifdef CONFIG_MWMR_USE_RAMLOCKS
-	cpu_mem_write_32((uintptr_t)fifo->lock, 0);
-#else
-    cpu_mem_write_32((uintptr_t)&fifo->status->lock, 0);
-#endif
-}
-
-typedef struct {
-	uint32_t usage, wptr, rptr, modified;
-} local_mwmr_status_t;
-
-static inline void rehash_status( struct mwmr_s *fifo, local_mwmr_status_t *status )
-{
-	struct mwmr_status_s *fstatus = fifo->status;
-	cpu_dcache_invld_buf((void*)fstatus, sizeof(*fstatus));
-	status->usage = endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->usage ));
-    status->wptr =  endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->wptr ));
-    status->rptr =  endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->rptr ));
-	status->modified = 0;
-//	srl_log_printf(NONE,"%s %d %d %d/%d\n", fifo->name, status->rptr, status->wptr, status->usage, fifo->gdepth);
-}
-
-static inline void writeback_status( struct mwmr_s *fifo, local_mwmr_status_t *status )
-{
-    struct mwmr_status_s *fstatus = fifo->status;
-	if ( !status->modified )
-		return;
-	cpu_mem_write_32( (uintptr_t)&fstatus->usage, endian_le32(status->usage) );
-    cpu_mem_write_32( (uintptr_t)&fstatus->wptr, endian_le32(status->wptr) );
-	cpu_mem_write_32( (uintptr_t)&fstatus->rptr, endian_le32(status->rptr) );
-}
-
-void mwmr_read( struct mwmr_s *fifo, void *_ptr, size_t lensw )
-{
-	uint8_t *ptr = _ptr;
-	local_mwmr_status_t status;
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	size_t tot = lensw/fifo->width;
-	uint32_t access_begin = cpu_cycle_count();
-#endif
-
-	mwmr_lock( fifo );
-	rehash_status( fifo, &status );
-    while ( lensw ) {
-        size_t len;
-		while ( status.usage < fifo->width ) {
-			writeback_status( fifo, &status );
-            mwmr_unlock( fifo );
-#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD)
-			srl_sched_wait_ge_le(&fifo->status->usage, fifo->width);
-#elif defined(CONFIG_PTHREAD)
-			pthread_yield();
-#else
-			cpu_interrupt_disable();
-			sched_context_switch();
-			cpu_interrupt_enable();
-#endif
-            mwmr_lock( fifo );
-			rehash_status( fifo, &status );
-        }
-        while ( lensw && status.usage >= fifo->width ) {
-			void *sptr;
-
-            if ( status.rptr < status.wptr )
-                len = status.usage;
-            else
-                len = (fifo->gdepth - status.rptr);
-            len = min(len, lensw);
-			sptr = &((uint8_t*)fifo->buffer)[status.rptr];
-			cpu_dcache_invld_buf(sptr, len);
-            memcpy( ptr, sptr, len );
-            status.rptr += len;
-            if ( status.rptr == fifo->gdepth )
-                status.rptr = 0;
-            ptr += len;
-            status.usage -= len;
-            lensw -= len;
-			status.modified = 1;
-        }
-    }
-	writeback_status( fifo, &status );
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	cpu_dcache_invld_buf(fifo, sizeof(*fifo));
-	fifo->n_read += tot;
-	fifo->time_read += cpu_cycle_count()-access_begin;
-#endif
-
-	mwmr_unlock( fifo );
-}
-
-void mwmr_write( struct mwmr_s *fifo, const void *_ptr, size_t lensw )
-{
-	const uint8_t *ptr = _ptr;
-    local_mwmr_status_t status;
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	size_t tot = lensw/fifo->width;
-	uint32_t access_begin = cpu_cycle_count();
-#endif
-        printf("**debug mwmr 0\n");
-	mwmr_lock( fifo ); 
-        printf("debug mwmr 1\n");
-	rehash_status( fifo, &status ); printf("debug mwmr 2\n");
-    while ( lensw ) {
-        size_t len;
-        while (status.usage >= fifo->gdepth) {
- printf("debug mwmr 3\n");
-			writeback_status( fifo, &status );
- printf("debug mwmr 4\n");
-            mwmr_unlock( fifo ); printf("debug mwmr 5\n");
-#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD)
-			srl_sched_wait_le_le(&fifo->status->usage, fifo->gdepth-fifo->width);
-#elif defined(CONFIG_PTHREAD)
-			pthread_yield();
-#else
-			cpu_interrupt_disable();
-			sched_context_switch();
-			cpu_interrupt_enable();
- printf("debug mwmr 6\n");
-#endif
-            mwmr_lock( fifo );
-			rehash_status( fifo, &status );
-        }
-        while ( lensw && status.usage < fifo->gdepth ) {
-			void *dptr;
-
-            if ( status.rptr <= status.wptr )
-                len = (fifo->gdepth - status.wptr);
-            else
-                len = fifo->gdepth - status.usage;
-            len = min(len, lensw);
-			dptr = &((uint8_t*)fifo->buffer)[status.wptr];
-            memcpy( dptr, ptr, len );
-            status.wptr += len;
-            if ( status.wptr == fifo->gdepth )
-                status.wptr = 0;
-            ptr += len;
-            status.usage += len;
-            lensw -= len;
-			status.modified = 1;
-        }
-    }
-	writeback_status( fifo, &status );
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	cpu_dcache_invld_buf(fifo, sizeof(*fifo));
-	fifo->n_write += tot;
-	fifo->time_write += cpu_cycle_count()-access_begin;
-#endif
-
-	mwmr_unlock( fifo );
-}
-
-size_t mwmr_try_read( struct mwmr_s *fifo, void *_ptr, size_t lensw )
-{
-	uint8_t *ptr = _ptr;
-	size_t done = 0;
-    local_mwmr_status_t status;
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	uint32_t access_begin = cpu_cycle_count();
-#endif
-
-	if ( mwmr_try_lock( fifo ) )
-		return done;
-	rehash_status( fifo, &status );
-	while ( lensw && status.usage >= fifo->width ) {
-        size_t len;
-		void *sptr;
-
-		if ( status.rptr < status.wptr )
-			len = status.usage;
-		else
-			len = (fifo->gdepth - status.rptr);
-		len = min(len, lensw);
-		sptr = &((uint8_t*)fifo->buffer)[status.rptr];
-		cpu_dcache_invld_buf(sptr, len);
-		memcpy( ptr, sptr, len );
-		status.rptr += len;
-		if ( status.rptr == fifo->gdepth )
-			status.rptr = 0;
-		ptr += len;
-		status.usage -= len;
-		lensw -= len;
-		done += len;
-		status.modified = 1;
-	}
-	writeback_status( fifo, &status );
-	mwmr_unlock( fifo );
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	cpu_dcache_invld_buf(fifo, sizeof(*fifo));
-	fifo->n_read += done/fifo->width;
-	fifo->time_read += cpu_cycle_count()-access_begin;
-#endif
-	return done;
-}
-
-size_t mwmr_try_write( struct mwmr_s *fifo, const void *_ptr, size_t lensw )
-{
-	const uint8_t *ptr = _ptr;
-	size_t done = 0;
-    local_mwmr_status_t status;
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	uint32_t access_begin = cpu_cycle_count();
-#endif
-
-	if ( mwmr_try_lock( fifo ) )
-		return done;
-	rehash_status( fifo, &status );
-	while ( lensw && status.usage < fifo->gdepth ) {
-        size_t len;
-		void *dptr;
-
-		if ( status.rptr <= status.wptr )
-			len = (fifo->gdepth - status.wptr);
-		else
-			len = fifo->gdepth - status.usage;
-		len = min(len, lensw);
-		dptr = &((uint8_t*)fifo->buffer)[status.wptr];
-		memcpy( dptr, ptr, len );
-		status.wptr += len;
-		if ( status.wptr == fifo->gdepth )
-			status.wptr = 0;
-		ptr += len;
-		status.usage += len;
-		lensw -= len;
-		done += len;
-		status.modified = 1;
-    }
-	writeback_status( fifo, &status );
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	cpu_dcache_invld_buf(fifo, sizeof(*fifo));
-	fifo->n_write += done/fifo->width;
-	fifo->time_write += cpu_cycle_count()-access_begin;
-#endif
-	mwmr_unlock( fifo );
-	return done;
-}
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-void mwmr_dump_stats( const struct mwmr_s *mwmr )
-{
-	cpu_dcache_invld_buf(mwmr, sizeof(*mwmr));
-	if ( mwmr->n_read )
-		srl_log_printf(NONE, "read,%s,%d,%d,%d\n",
-					   mwmr->name, cpu_cycle_count(),
-					   mwmr->time_read, mwmr->n_read );
-	if ( mwmr->n_write )
-		srl_log_printf(NONE, "write,%s,%d,%d,%d\n",
-					   mwmr->name, cpu_cycle_count(),
-					   mwmr->time_write, mwmr->n_write );
-}
-
-void mwmr_clear_stats( struct mwmr_s *mwmr )
-{
-	cpu_dcache_invld_buf(mwmr, sizeof(*mwmr));
-	mwmr->time_read =
-		mwmr->n_read =
-		mwmr->time_write =
-		mwmr->n_write = 0;
-}
-#endif
diff --git a/MPSoC/mutekh/libmwmr/mwmr_soclib.c-19-05 b/MPSoC/mutekh/libmwmr/mwmr_soclib.c-19-05
deleted file mode 100644
index 43a31fc540..0000000000
--- a/MPSoC/mutekh/libmwmr/mwmr_soclib.c-19-05
+++ /dev/null
@@ -1,377 +0,0 @@
-/*
- * This file is part of MutekH.
- * 
- * MutekH is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation; version 2.1 of the License.
- * 
- * MutekH is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with MutekH; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301 USA
- *
- * Copyright (c) UPMC, Lip6, SoC
- *         Nicolas Pouillon <nipo@ssji.net>, 2008
- */
-
-#include <mutek/scheduler.h>
-#include <hexo/types.h>
-#include <hexo/atomic.h>
-#include <hexo/iospace.h>
-#include <hexo/endian.h>
-#include <hexo/interrupt.h>
-#include <string.h>
-#include <mwmr/mwmr.h>
-
-#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD)
-# include <srl/srl_sched_wait.h>
-# include <srl/srl_log.h>
-# ifndef SRL_VERBOSITY
-#  define SRL_VERBOSITY VERB_DEBUG
-# endif
-#elif defined(CONFIG_PTHREAD)
-# include <pthread.h>
-#endif
-
-static inline size_t min(size_t a, size_t b)
-{
-	if ( a < b )
-		return a;
-	else
-		return b;
-}
-
-void
-mwmr_hw_init( void *coproc, enum SoclibMwmrWay way,
-			  size_t no, const struct mwmr_s* mwmr )
-{
-	uintptr_t c = (uintptr_t)coproc;
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_FIFO_WAY, endian_le32(way));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_FIFO_NO, endian_le32(no));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_STATUS_ADDR, endian_le32((uintptr_t)mwmr->status));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_DEPTH, endian_le32(mwmr->gdepth));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_BUFFER_ADDR, endian_le32((uintptr_t)mwmr->buffer));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_WIDTH, endian_le32((uintptr_t)mwmr->width));
-#ifdef CONFIG_MWMR_USE_RAMLOCKS
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_LOCK_ADDR, endian_le32((uintptr_t)mwmr->lock));
-#endif
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_RUNNING, endian_le32(1));
-}
-
-void mwmr_config( void *coproc, size_t no, const uint32_t val )
-{
-	uintptr_t c = (uintptr_t)coproc;
-	cpu_mem_write_32( c + sizeof(uint32_t) * no, val);
-}
-
-uint32_t mwmr_status( void *coproc, size_t no )
-{
-	uintptr_t c = (uintptr_t)coproc;
-	return cpu_mem_read_32( c + sizeof(uint32_t) * no );
-}
-
-static inline void mwmr_lock( struct mwmr_s *fifo )
-{
-#ifdef CONFIG_MWMR_USE_RAMLOCKS
-	while (*((uint32_t *)fifo->lock) != 0) {
-# if defined(CONFIG_PTHREAD)
-		pthread_yield();
-# else
-		cpu_interrupt_disable();
-		sched_context_switch();
-		cpu_interrupt_enable();
-# endif
-	}
-#else
-# if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD)
-	while (cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0)) {
-/* 		cpu_interrupt_disable(); */
-/* 		sched_context_switch(); */
-/* 		cpu_interrupt_enable(); */
-		srl_sched_wait_eq_le(&fifo->status->lock, 0);
-	}
-# elif defined(CONFIG_PTHREAD)
-	while (cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0)) {
-		pthread_yield();
-	}
-# else
-	cpu_atomic_bit_waitset((atomic_int_t*)&fifo->status->lock, 0);
-# endif
-#endif
-}
-
-static inline uint32_t mwmr_try_lock( struct mwmr_s *fifo )
-{
-#ifdef CONFIG_MWMR_USE_RAMLOCKS
-	return !!cpu_mem_read_32((uintptr_t)fifo->lock);
-#else
-	return cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0);
-#endif
-}
-
-static inline void mwmr_unlock( struct mwmr_s *fifo )
-{
-#ifdef CONFIG_MWMR_USE_RAMLOCKS
-	cpu_mem_write_32((uintptr_t)fifo->lock, 0);
-#else
-    cpu_mem_write_32((uintptr_t)&fifo->status->lock, 0);
-#endif
-}
-
-typedef struct {
-	uint32_t usage, wptr, rptr, modified;
-} local_mwmr_status_t;
-
-static inline void rehash_status( struct mwmr_s *fifo, local_mwmr_status_t *status )
-{
-	struct mwmr_status_s *fstatus = fifo->status;
-	cpu_dcache_invld_buf((void*)fstatus, sizeof(*fstatus));
-	status->usage = endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->usage ));
-    status->wptr =  endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->wptr ));
-    status->rptr =  endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->rptr ));
-	status->modified = 0;
-//	srl_log_printf(NONE,"%s %d %d %d/%d\n", fifo->name, status->rptr, status->wptr, status->usage, fifo->gdepth);
-}
-
-static inline void writeback_status( struct mwmr_s *fifo, local_mwmr_status_t *status )
-{
-    struct mwmr_status_s *fstatus = fifo->status;
-	if ( !status->modified )
-		return;
-	cpu_mem_write_32( (uintptr_t)&fstatus->usage, endian_le32(status->usage) );
-    cpu_mem_write_32( (uintptr_t)&fstatus->wptr, endian_le32(status->wptr) );
-	cpu_mem_write_32( (uintptr_t)&fstatus->rptr, endian_le32(status->rptr) );
-}
-
-void mwmr_read( struct mwmr_s *fifo, void *_ptr, size_t lensw )
-{
-	uint8_t *ptr = _ptr;
-	local_mwmr_status_t status;
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	size_t tot = lensw/fifo->width;
-	uint32_t access_begin = cpu_cycle_count();
-#endif
-
-	mwmr_lock( fifo );
-	rehash_status( fifo, &status );
-    while ( lensw ) {
-        size_t len;
-		while ( status.usage < fifo->width ) {
-			writeback_status( fifo, &status );
-            mwmr_unlock( fifo );
-#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD)
-			srl_sched_wait_ge_le(&fifo->status->usage, fifo->width);
-#elif defined(CONFIG_PTHREAD)
-			pthread_yield();
-#else
-			cpu_interrupt_disable();
-			sched_context_switch();
-			cpu_interrupt_enable();
-#endif
-            mwmr_lock( fifo );
-			rehash_status( fifo, &status );
-        }
-        while ( lensw && status.usage >= fifo->width ) {
-			void *sptr;
-
-            if ( status.rptr < status.wptr )
-                len = status.usage;
-            else
-                len = (fifo->gdepth - status.rptr);
-            len = min(len, lensw);
-			sptr = &((uint8_t*)fifo->buffer)[status.rptr];
-			cpu_dcache_invld_buf(sptr, len);
-            memcpy( ptr, sptr, len );
-            status.rptr += len;
-            if ( status.rptr == fifo->gdepth )
-                status.rptr = 0;
-            ptr += len;
-            status.usage -= len;
-            lensw -= len;
-			status.modified = 1;
-        }
-    }
-	writeback_status( fifo, &status );
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	cpu_dcache_invld_buf(fifo, sizeof(*fifo));
-	fifo->n_read += tot;
-	fifo->time_read += cpu_cycle_count()-access_begin;
-#endif
-
-	mwmr_unlock( fifo );
-}
-
-void mwmr_write( struct mwmr_s *fifo, const void *_ptr, size_t lensw )
-{
-	const uint8_t *ptr = _ptr;
-    local_mwmr_status_t status;
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	size_t tot = lensw/fifo->width;
-	uint32_t access_begin = cpu_cycle_count();
-#endif
-
-	mwmr_lock( fifo );
-	rehash_status( fifo, &status );
-    while ( lensw ) {
-        size_t len;
-        while (status.usage >= fifo->gdepth) {
-			writeback_status( fifo, &status );
-            mwmr_unlock( fifo );
-#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD)
-			srl_sched_wait_le_le(&fifo->status->usage, fifo->gdepth-fifo->width);
-#elif defined(CONFIG_PTHREAD)
-			pthread_yield();
-#else
-			cpu_interrupt_disable();
-			sched_context_switch();
-			cpu_interrupt_enable();
-#endif
-            mwmr_lock( fifo );
-			rehash_status( fifo, &status );
-        }
-        while ( lensw && status.usage < fifo->gdepth ) {
-			void *dptr;
-
-            if ( status.rptr <= status.wptr )
-                len = (fifo->gdepth - status.wptr);
-            else
-                len = fifo->gdepth - status.usage;
-            len = min(len, lensw);
-			dptr = &((uint8_t*)fifo->buffer)[status.wptr];
-            memcpy( dptr, ptr, len );
-            status.wptr += len;
-            if ( status.wptr == fifo->gdepth )
-                status.wptr = 0;
-            ptr += len;
-            status.usage += len;
-            lensw -= len;
-			status.modified = 1;
-        }
-    }
-	writeback_status( fifo, &status );
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	cpu_dcache_invld_buf(fifo, sizeof(*fifo));
-	fifo->n_write += tot;
-	fifo->time_write += cpu_cycle_count()-access_begin;
-#endif
-
-	mwmr_unlock( fifo );
-}
-
-size_t mwmr_try_read( struct mwmr_s *fifo, void *_ptr, size_t lensw )
-{
-	uint8_t *ptr = _ptr;
-	size_t done = 0;
-    local_mwmr_status_t status;
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	uint32_t access_begin = cpu_cycle_count();
-#endif
-
-	if ( mwmr_try_lock( fifo ) )
-		return done;
-	rehash_status( fifo, &status );
-	while ( lensw && status.usage >= fifo->width ) {
-        size_t len;
-		void *sptr;
-
-		if ( status.rptr < status.wptr )
-			len = status.usage;
-		else
-			len = (fifo->gdepth - status.rptr);
-		len = min(len, lensw);
-		sptr = &((uint8_t*)fifo->buffer)[status.rptr];
-		cpu_dcache_invld_buf(sptr, len);
-		memcpy( ptr, sptr, len );
-		status.rptr += len;
-		if ( status.rptr == fifo->gdepth )
-			status.rptr = 0;
-		ptr += len;
-		status.usage -= len;
-		lensw -= len;
-		done += len;
-		status.modified = 1;
-	}
-	writeback_status( fifo, &status );
-	mwmr_unlock( fifo );
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	cpu_dcache_invld_buf(fifo, sizeof(*fifo));
-	fifo->n_read += done/fifo->width;
-	fifo->time_read += cpu_cycle_count()-access_begin;
-#endif
-	return done;
-}
-
-size_t mwmr_try_write( struct mwmr_s *fifo, const void *_ptr, size_t lensw )
-{
-	const uint8_t *ptr = _ptr;
-	size_t done = 0;
-    local_mwmr_status_t status;
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	uint32_t access_begin = cpu_cycle_count();
-#endif
-
-	if ( mwmr_try_lock( fifo ) )
-		return done;
-	rehash_status( fifo, &status );
-	while ( lensw && status.usage < fifo->gdepth ) {
-        size_t len;
-		void *dptr;
-
-		if ( status.rptr <= status.wptr )
-			len = (fifo->gdepth - status.wptr);
-		else
-			len = fifo->gdepth - status.usage;
-		len = min(len, lensw);
-		dptr = &((uint8_t*)fifo->buffer)[status.wptr];
-		memcpy( dptr, ptr, len );
-		status.wptr += len;
-		if ( status.wptr == fifo->gdepth )
-			status.wptr = 0;
-		ptr += len;
-		status.usage += len;
-		lensw -= len;
-		done += len;
-		status.modified = 1;
-    }
-	writeback_status( fifo, &status );
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	cpu_dcache_invld_buf(fifo, sizeof(*fifo));
-	fifo->n_write += done/fifo->width;
-	fifo->time_write += cpu_cycle_count()-access_begin;
-#endif
-	mwmr_unlock( fifo );
-	return done;
-}
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-void mwmr_dump_stats( const struct mwmr_s *mwmr )
-{
-	cpu_dcache_invld_buf(mwmr, sizeof(*mwmr));
-	if ( mwmr->n_read )
-		srl_log_printf(NONE, "read,%s,%d,%d,%d\n",
-					   mwmr->name, cpu_cycle_count(),
-					   mwmr->time_read, mwmr->n_read );
-	if ( mwmr->n_write )
-		srl_log_printf(NONE, "write,%s,%d,%d,%d\n",
-					   mwmr->name, cpu_cycle_count(),
-					   mwmr->time_write, mwmr->n_write );
-}
-
-void mwmr_clear_stats( struct mwmr_s *mwmr )
-{
-	cpu_dcache_invld_buf(mwmr, sizeof(*mwmr));
-	mwmr->time_read =
-		mwmr->n_read =
-		mwmr->time_write =
-		mwmr->n_write = 0;
-}
-#endif
diff --git a/MPSoC/mutekh/libmwmr/mwmr_soclib.c-27-06 b/MPSoC/mutekh/libmwmr/mwmr_soclib.c-27-06
deleted file mode 100644
index 58c866fc66..0000000000
--- a/MPSoC/mutekh/libmwmr/mwmr_soclib.c-27-06
+++ /dev/null
@@ -1,408 +0,0 @@
-/*
- * This file is part of MutekH.
- * 
- * MutekH is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation; version 2.1 of the License.
- * 
- * MutekH is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with MutekH; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301 USA
- *
- * Copyright (c) UPMC, Lip6, SoC
- *         Nicolas Pouillon <nipo@ssji.net>, 2008
- */
-
-#include <mutek/scheduler.h>
-#include <hexo/types.h>
-#include <hexo/atomic.h>
-#include <hexo/iospace.h>
-#include <hexo/endian.h>
-#include <hexo/interrupt.h>
-#include <string.h>
-#include <mwmr/mwmr.h>
-#include <stdio.h>
-
-//#undef CONFIG_PTHREAD
-
-#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD)
-# include <srl/srl_sched_wait.h>
-# include <srl/srl_log.h>
-# ifndef SRL_VERBOSITY
-#  define SRL_VERBOSITY VERB_DEBUG
-# endif
-#elif defined(CONFIG_PTHREAD)
-# include <pthread.h>
-#endif
-
-//#define CONFIG_MWMR_USE_RAMLOCKS
-//#undef CONFIG_MWMR_USE_RAMLOCKS
-
-static inline size_t min(size_t a, size_t b)
-{
-	if ( a < b )
-		return a;
-	else
-		return b;
-}
-
-void
-mwmr_hw_init( void *coproc, enum SoclibMwmrWay way,
-			  size_t no, const struct mwmr_s* mwmr )
-{
-	uintptr_t c = (uintptr_t)coproc;
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_FIFO_WAY, endian_le32(way));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_FIFO_NO, endian_le32(no));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_STATUS_ADDR, endian_le32((uintptr_t)mwmr->status));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_DEPTH, endian_le32(mwmr->gdepth));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_BUFFER_ADDR, endian_le32((uintptr_t)mwmr->buffer));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_WIDTH, endian_le32((uintptr_t)mwmr->width));
-#ifdef CONFIG_MWMR_USE_RAMLOCKS
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_LOCK_ADDR, endian_le32((uintptr_t)mwmr->lock));
-#endif
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_RUNNING, endian_le32(1));
-}
-
-void mwmr_config( void *coproc, size_t no, const uint32_t val )
-{
-	uintptr_t c = (uintptr_t)coproc;
-	cpu_mem_write_32( c + sizeof(uint32_t) * no, val);
-}
-
-uint32_t mwmr_status( void *coproc, size_t no )
-{
-	uintptr_t c = (uintptr_t)coproc;
-	return cpu_mem_read_32( c + sizeof(uint32_t) * no );
-}
-
-static inline void mwmr_lock( struct mwmr_s *fifo )
-{
-  // printf("test %x\n", (fifo)->lock);
-  //printf("testbis %x\n", &((fifo)->lock));
-  //printf("testlock %x \n",*((uint32_t *)fifo->lock));
-
-#ifdef CONFIG_MWMR_USE_RAMLOCKS
-  printf("test0\n");
-  while (*((uint32_t *)fifo->lock) != 0) {
-       
-    //# if defined(CONFIG_PTHREAD)
-    //  printf("test2ter\n");
-    //   pthread_yield();
-    //# else
-    printf("test2bis\n");
-    // cpu_interrupt_disable();
-    // sched_context_switch();
-    // cpu_interrupt_enable();
-    
-    printf("lock status before %x\n",(atomic_int_t*)&fifo->status->lock);
-    cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0);//DG 27.06.
-    printf("lock status after %x\n",(atomic_int_t*)&fifo->status->lock);
-    //# endif
-    }
-printf("test3\n");
-#else
-printf("test4a\n");	
-# if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD)
-printf("lock status before %x\n",(atomic_int_t*)&fifo->status->lock);
-	while (cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0)) {
-/* 		cpu_interrupt_disable(); */
-/* 		sched_context_switch(); */
-/* 		cpu_interrupt_enable(); */
-		srl_sched_wait_eq_le(&fifo->status->lock, 0);
-	}
-printf("lock status after %x\n",(atomic_int_t*)&fifo->status->lock);
-# elif defined(CONFIG_PTHREAD)
-        printf("test4\n");	
-        printf("lock status before %x\n",(atomic_int_t*)&fifo->status->lock);
-        //	cpu_atomic_bit_waitset((atomic_int_t*)&fifo->status->lock, 0);
-         while (cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0)) {
-          pthread_yield();
-          printf("lock status in %x\n",(atomic_int_t*)&fifo->status->lock);
-            }
-         printf("lock status after %x\n",(atomic_int_t*)&fifo->status->lock);
-# else
-printf("test5\n");
-	cpu_atomic_bit_waitset((atomic_int_t*)&fifo->status->lock, 0);
-#endif
-#endif
-}
-
-static inline uint32_t mwmr_try_lock( struct mwmr_s *fifo )
-{
-#ifdef CONFIG_MWMR_USE_RAMLOCKS
-	return !!cpu_mem_read_32((uintptr_t)fifo->lock);
-#else
-	return cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0);
-#endif
-}
-
-static inline void mwmr_unlock( struct mwmr_s *fifo )
-{
-#ifdef CONFIG_MWMR_USE_RAMLOCKS
-	cpu_mem_write_32((uintptr_t)fifo->lock, 0);
-#else
-    cpu_mem_write_32((uintptr_t)&fifo->status->lock, 0);
-#endif
-}
-
-typedef struct {
-	uint32_t usage, wptr, rptr, modified;
-} local_mwmr_status_t;
-
-static inline void rehash_status( struct mwmr_s *fifo, local_mwmr_status_t *status )
-{
-	struct mwmr_status_s *fstatus = fifo->status;
-	cpu_dcache_invld_buf((void*)fstatus, sizeof(*fstatus));
-	status->usage = endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->usage ));
-    status->wptr =  endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->wptr ));
-    status->rptr =  endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->rptr ));
-	status->modified = 0;
-//	srl_log_printf(NONE,"%s %d %d %d/%d\n", fifo->name, status->rptr, status->wptr, status->usage, fifo->gdepth);
-}
-
-static inline void writeback_status( struct mwmr_s *fifo, local_mwmr_status_t *status )
-{
-    struct mwmr_status_s *fstatus = fifo->status;
-	if ( !status->modified )
-		return;
-	cpu_mem_write_32( (uintptr_t)&fstatus->usage, endian_le32(status->usage) );
-    cpu_mem_write_32( (uintptr_t)&fstatus->wptr, endian_le32(status->wptr) );
-	cpu_mem_write_32( (uintptr_t)&fstatus->rptr, endian_le32(status->rptr) );
-}
-
-void mwmr_read( struct mwmr_s *fifo, void *_ptr, size_t lensw )
-{
-	uint8_t *ptr = _ptr;
-	local_mwmr_status_t status;
-    printf("call read %x\n",fifo);
-
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	size_t tot = lensw/fifo->width;
-	uint32_t access_begin = cpu_cycle_count();
-#endif
-
-	mwmr_lock( fifo );
-	rehash_status( fifo, &status );
-    while ( lensw ) {
-        size_t len;
-		while ( status.usage < fifo->width ) {
-			writeback_status( fifo, &status );
-            mwmr_unlock( fifo );
-#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD)
-			srl_sched_wait_ge_le(&fifo->status->usage, fifo->width);
-#elif defined(CONFIG_PTHREAD)
-			pthread_yield();
-#else
-			cpu_interrupt_disable();
-			sched_context_switch();
-			cpu_interrupt_enable();
-#endif
-            mwmr_lock( fifo );
-			rehash_status( fifo, &status );
-        }
-        while ( lensw && status.usage >= fifo->width ) {
-			void *sptr;
-
-            if ( status.rptr < status.wptr )
-                len = status.usage;
-            else
-                len = (fifo->gdepth - status.rptr);
-            len = min(len, lensw);
-			sptr = &((uint8_t*)fifo->buffer)[status.rptr];
-			cpu_dcache_invld_buf(sptr, len);
-            memcpy( ptr, sptr, len );
-            status.rptr += len;
-            if ( status.rptr == fifo->gdepth )
-                status.rptr = 0;
-            ptr += len;
-            status.usage -= len;
-            lensw -= len;
-			status.modified = 1;
-        }
-    }
-	writeback_status( fifo, &status );
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	cpu_dcache_invld_buf(fifo, sizeof(*fifo));
-	fifo->n_read += tot;
-	fifo->time_read += cpu_cycle_count()-access_begin;
-#endif
-
-	mwmr_unlock( fifo );
-}
-
-void mwmr_write( struct mwmr_s *fifo, const void *_ptr, size_t lensw )
-{
-	const uint8_t *ptr = _ptr;
-    local_mwmr_status_t status;
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	size_t tot = lensw/fifo->width;
-	uint32_t access_begin = cpu_cycle_count();
-#endif
-        printf("call write %x\n",fifo);
-      
-	mwmr_lock( fifo );
-	rehash_status( fifo, &status );
-    while ( lensw ) {
-        size_t len;
-        while (status.usage >= fifo->gdepth) {
-			writeback_status( fifo, &status );
-            mwmr_unlock( fifo );
-#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD)
-			srl_sched_wait_le_le(&fifo->status->usage, fifo->gdepth-fifo->width);
-#elif defined(CONFIG_PTHREAD)
-			pthread_yield();
-#else
-			cpu_interrupt_disable();
-			sched_context_switch();
-			cpu_interrupt_enable();
-#endif
-            mwmr_lock( fifo );
-			rehash_status( fifo, &status );
-        }
-        while ( lensw && status.usage < fifo->gdepth ) {
-			void *dptr;
-
-            if ( status.rptr <= status.wptr )
-                len = (fifo->gdepth - status.wptr);
-            else
-                len = fifo->gdepth - status.usage;
-            len = min(len, lensw);
-			dptr = &((uint8_t*)fifo->buffer)[status.wptr];
-            memcpy( dptr, ptr, len );
-            status.wptr += len;
-            if ( status.wptr == fifo->gdepth )
-                status.wptr = 0;
-            ptr += len;
-            status.usage += len;
-            lensw -= len;
-			status.modified = 1;
-        }
-    }
-	writeback_status( fifo, &status );
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	cpu_dcache_invld_buf(fifo, sizeof(*fifo));
-	fifo->n_write += tot;
-	fifo->time_write += cpu_cycle_count()-access_begin;
-#endif
-
-	mwmr_unlock( fifo );
-}
-
-size_t mwmr_try_read( struct mwmr_s *fifo, void *_ptr, size_t lensw )
-{
-	uint8_t *ptr = _ptr;
-	size_t done = 0;
-    local_mwmr_status_t status;
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	uint32_t access_begin = cpu_cycle_count();
-#endif
-
-	if ( mwmr_try_lock( fifo ) )
-		return done;
-	rehash_status( fifo, &status );
-	while ( lensw && status.usage >= fifo->width ) {
-        size_t len;
-		void *sptr;
-
-		if ( status.rptr < status.wptr )
-			len = status.usage;
-		else
-			len = (fifo->gdepth - status.rptr);
-		len = min(len, lensw);
-		sptr = &((uint8_t*)fifo->buffer)[status.rptr];
-		cpu_dcache_invld_buf(sptr, len);
-		memcpy( ptr, sptr, len );
-		status.rptr += len;
-		if ( status.rptr == fifo->gdepth )
-			status.rptr = 0;
-		ptr += len;
-		status.usage -= len;
-		lensw -= len;
-		done += len;
-		status.modified = 1;
-	}
-	writeback_status( fifo, &status );
-	mwmr_unlock( fifo );
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	cpu_dcache_invld_buf(fifo, sizeof(*fifo));
-	fifo->n_read += done/fifo->width;
-	fifo->time_read += cpu_cycle_count()-access_begin;
-#endif
-	return done;
-}
-
-size_t mwmr_try_write( struct mwmr_s *fifo, const void *_ptr, size_t lensw )
-{
-	const uint8_t *ptr = _ptr;
-	size_t done = 0;
-    local_mwmr_status_t status;
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	uint32_t access_begin = cpu_cycle_count();
-#endif
-
-	if ( mwmr_try_lock( fifo ) )
-		return done;
-	rehash_status( fifo, &status );
-	while ( lensw && status.usage < fifo->gdepth ) {
-        size_t len;
-		void *dptr;
-
-		if ( status.rptr <= status.wptr )
-			len = (fifo->gdepth - status.wptr);
-		else
-			len = fifo->gdepth - status.usage;
-		len = min(len, lensw);
-		dptr = &((uint8_t*)fifo->buffer)[status.wptr];
-		memcpy( dptr, ptr, len );
-		status.wptr += len;
-		if ( status.wptr == fifo->gdepth )
-			status.wptr = 0;
-		ptr += len;
-		status.usage += len;
-		lensw -= len;
-		done += len;
-		status.modified = 1;
-    }
-	writeback_status( fifo, &status );
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	cpu_dcache_invld_buf(fifo, sizeof(*fifo));
-	fifo->n_write += done/fifo->width;
-	fifo->time_write += cpu_cycle_count()-access_begin;
-#endif
-	mwmr_unlock( fifo );
-	return done;
-}
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-void mwmr_dump_stats( const struct mwmr_s *mwmr )
-{
-	cpu_dcache_invld_buf(mwmr, sizeof(*mwmr));
-	if ( mwmr->n_read )
-		srl_log_printf(NONE, "read,%s,%d,%d,%d\n",
-					   mwmr->name, cpu_cycle_count(),
-					   mwmr->time_read, mwmr->n_read );
-	if ( mwmr->n_write )
-		srl_log_printf(NONE, "write,%s,%d,%d,%d\n",
-					   mwmr->name, cpu_cycle_count(),
-					   mwmr->time_write, mwmr->n_write );
-}
-
-void mwmr_clear_stats( struct mwmr_s *mwmr )
-{
-	cpu_dcache_invld_buf(mwmr, sizeof(*mwmr));
-	mwmr->time_read =
-		mwmr->n_read =
-		mwmr->time_write =
-		mwmr->n_write = 0;
-}
-#endif
diff --git a/MPSoC/mutekh/libmwmr/mwmr_soclib.c-4-7 b/MPSoC/mutekh/libmwmr/mwmr_soclib.c-4-7
deleted file mode 100644
index bafa13dce1..0000000000
--- a/MPSoC/mutekh/libmwmr/mwmr_soclib.c-4-7
+++ /dev/null
@@ -1,383 +0,0 @@
-/*
- * This file is part of MutekH.
- * 
- * MutekH is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation; version 2.1 of the License.
- * 
- * MutekH is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with MutekH; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301 USA
- *
- * Copyright (c) UPMC, Lip6, SoC
- *         Nicolas Pouillon <nipo@ssji.net>, 2008
- */
-
-#include <mutek/scheduler.h>
-#include <hexo/types.h>
-#include <hexo/atomic.h>
-#include <hexo/iospace.h>
-#include <hexo/endian.h>
-#include <hexo/interrupt.h>
-#include <string.h>
-#include <mwmr/mwmr.h>
-
-#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD)
-# include <srl/srl_sched_wait.h>
-# include <srl/srl_log.h>
-# ifndef SRL_VERBOSITY
-#  define SRL_VERBOSITY VERB_DEBUG
-# endif
-#elif defined(CONFIG_PTHREAD)
-# include <pthread.h>
-#endif
-
-# include <stdio.h>
-static inline size_t min(size_t a, size_t b)
-{
-	if ( a < b )
-		return a;
-	else
-		return b;
-}
-
-void
-mwmr_hw_init( void *coproc, enum SoclibMwmrWay way,
-			  size_t no, const struct mwmr_s* mwmr )
-{
-	uintptr_t c = (uintptr_t)coproc;
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_FIFO_WAY, endian_le32(way));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_FIFO_NO, endian_le32(no));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_STATUS_ADDR, endian_le32((uintptr_t)mwmr->status));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_DEPTH, endian_le32(mwmr->gdepth));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_BUFFER_ADDR, endian_le32((uintptr_t)mwmr->buffer));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_WIDTH, endian_le32((uintptr_t)mwmr->width));
-#ifdef CONFIG_MWMR_USE_RAMLOCKS
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_LOCK_ADDR, endian_le32((uintptr_t)mwmr->lock));
-#endif
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_RUNNING, endian_le32(1));
-}
-
-void mwmr_config( void *coproc, size_t no, const uint32_t val )
-{
-	uintptr_t c = (uintptr_t)coproc;
-	cpu_mem_write_32( c + sizeof(uint32_t) * no, val);
-}
-
-uint32_t mwmr_status( void *coproc, size_t no )
-{
-	uintptr_t c = (uintptr_t)coproc;
-	return cpu_mem_read_32( c + sizeof(uint32_t) * no );
-}
-
-static inline void mwmr_lock( struct mwmr_s *fifo )
-{
-#ifdef CONFIG_MWMR_USE_RAMLOCKS
-  printf("use ramlocks\n");
-	while (*((uint32_t *)fifo->lock) != 0) {
-# if defined(CONFIG_PTHREAD)
-		pthread_yield();
-# else
-		cpu_interrupt_disable();
-		sched_context_switch();
-		cpu_interrupt_enable();
-# endif
-	}
-#else
-printf("do not use ramlocks\n");
-# if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD)
-	while (cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0)) {
-/* 		cpu_interrupt_disable(); */
-/* 		sched_context_switch(); */
-/* 		cpu_interrupt_enable(); */
-		srl_sched_wait_eq_le(&fifo->status->lock, 0);
-	}
-# elif defined(CONFIG_PTHREAD)
-        printf("use pthread; lock address %x value %x \n",(atomic_int_t*)&(fifo->status->lock),fifo->status->lock);
- 	while (cpu_atomic_bit_testset((atomic_int_t*)&(fifo->status->lock), 0)) {
- 		pthread_yield();
- 	}
-
-# else
-printf("do not use pthread\n");
-	cpu_atomic_bit_waitset((atomic_int_t*)&fifo->status->lock, 0);
-# endif
-#endif
-}
-
-static inline uint32_t mwmr_try_lock( struct mwmr_s *fifo )
-{
-#ifdef CONFIG_MWMR_USE_RAMLOCKS
-	return !!cpu_mem_read_32((uintptr_t)fifo->lock);
-#else
-	return cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0);
-#endif
-}
-
-static inline void mwmr_unlock( struct mwmr_s *fifo )
-{
-#ifdef CONFIG_MWMR_USE_RAMLOCKS
-	cpu_mem_write_32((uintptr_t)fifo->lock, 0);
-#else
-    cpu_mem_write_32((uintptr_t)&fifo->status->lock, 0);
-#endif
-}
-
-typedef struct {
-	uint32_t usage, wptr, rptr, modified;
-} local_mwmr_status_t;
-
-static inline void rehash_status( struct mwmr_s *fifo, local_mwmr_status_t *status )
-{
-	struct mwmr_status_s *fstatus = fifo->status;
-	cpu_dcache_invld_buf((void*)fstatus, sizeof(*fstatus));
-	status->usage = endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->usage ));
-    status->wptr =  endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->wptr ));
-    status->rptr =  endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->rptr ));
-	status->modified = 0;
-//	srl_log_printf(NONE,"%s %d %d %d/%d\n", fifo->name, status->rptr, status->wptr, status->usage, fifo->gdepth);
-}
-
-static inline void writeback_status( struct mwmr_s *fifo, local_mwmr_status_t *status )
-{
-    struct mwmr_status_s *fstatus = fifo->status;
-	if ( !status->modified )
-		return;
-	cpu_mem_write_32( (uintptr_t)&fstatus->usage, endian_le32(status->usage) );
-    cpu_mem_write_32( (uintptr_t)&fstatus->wptr, endian_le32(status->wptr) );
-	cpu_mem_write_32( (uintptr_t)&fstatus->rptr, endian_le32(status->rptr) );
-}
-
-void mwmr_read( struct mwmr_s *fifo, void *_ptr, size_t lensw )
-{
-	uint8_t *ptr = _ptr;
-	local_mwmr_status_t status;
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	size_t tot = lensw/fifo->width;
-	uint32_t access_begin = cpu_cycle_count();
-#endif
-
-	mwmr_lock( fifo );
-	rehash_status( fifo, &status );
-    while ( lensw ) {
-        size_t len;
-		while ( status.usage < fifo->width ) {
-			writeback_status( fifo, &status );
-            mwmr_unlock( fifo );
-#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD)
-			srl_sched_wait_ge_le(&fifo->status->usage, fifo->width);
-#elif defined(CONFIG_PTHREAD)
-			pthread_yield();
-#else
-			cpu_interrupt_disable();
-			sched_context_switch();
-			cpu_interrupt_enable();
-#endif
-            mwmr_lock( fifo );
-			rehash_status( fifo, &status );
-        }
-        while ( lensw && status.usage >= fifo->width ) {
-			void *sptr;
-
-            if ( status.rptr < status.wptr )
-                len = status.usage;
-            else
-                len = (fifo->gdepth - status.rptr);
-            len = min(len, lensw);
-			sptr = &((uint8_t*)fifo->buffer)[status.rptr];
-			cpu_dcache_invld_buf(sptr, len);
-            memcpy( ptr, sptr, len );
-            status.rptr += len;
-            if ( status.rptr == fifo->gdepth )
-                status.rptr = 0;
-            ptr += len;
-            status.usage -= len;
-            lensw -= len;
-			status.modified = 1;
-        }
-    }
-	writeback_status( fifo, &status );
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	cpu_dcache_invld_buf(fifo, sizeof(*fifo));
-	fifo->n_read += tot;
-	fifo->time_read += cpu_cycle_count()-access_begin;
-#endif
-
-	mwmr_unlock( fifo );
-}
-
-void mwmr_write( struct mwmr_s *fifo, const void *_ptr, size_t lensw )
-{
-	const uint8_t *ptr = _ptr;
-    local_mwmr_status_t status;
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	size_t tot = lensw/fifo->width;
-	uint32_t access_begin = cpu_cycle_count();
-#endif
-
-	mwmr_lock( fifo );
-	rehash_status( fifo, &status );
-    while ( lensw ) {
-        size_t len;
-        while (status.usage >= fifo->gdepth) {
-			writeback_status( fifo, &status );
-            mwmr_unlock( fifo );
-#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD)
-			srl_sched_wait_le_le(&fifo->status->usage, fifo->gdepth-fifo->width);
-#elif defined(CONFIG_PTHREAD)
-			pthread_yield();
-#else
-			cpu_interrupt_disable();
-			sched_context_switch();
-			cpu_interrupt_enable();
-#endif
-            mwmr_lock( fifo );
-			rehash_status( fifo, &status );
-        }
-        while ( lensw && status.usage < fifo->gdepth ) {
-			void *dptr;
-
-            if ( status.rptr <= status.wptr )
-                len = (fifo->gdepth - status.wptr);
-            else
-                len = fifo->gdepth - status.usage;
-            len = min(len, lensw);
-			dptr = &((uint8_t*)fifo->buffer)[status.wptr];
-            memcpy( dptr, ptr, len );
-            status.wptr += len;
-            if ( status.wptr == fifo->gdepth )
-                status.wptr = 0;
-            ptr += len;
-            status.usage += len;
-            lensw -= len;
-			status.modified = 1;
-        }
-    }
-	writeback_status( fifo, &status );
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	cpu_dcache_invld_buf(fifo, sizeof(*fifo));
-	fifo->n_write += tot;
-	fifo->time_write += cpu_cycle_count()-access_begin;
-#endif
-
-	mwmr_unlock( fifo );
-}
-
-size_t mwmr_try_read( struct mwmr_s *fifo, void *_ptr, size_t lensw )
-{
-	uint8_t *ptr = _ptr;
-	size_t done = 0;
-    local_mwmr_status_t status;
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	uint32_t access_begin = cpu_cycle_count();
-#endif
-
-	if ( mwmr_try_lock( fifo ) )
-		return done;
-	rehash_status( fifo, &status );
-	while ( lensw && status.usage >= fifo->width ) {
-        size_t len;
-		void *sptr;
-
-		if ( status.rptr < status.wptr )
-			len = status.usage;
-		else
-			len = (fifo->gdepth - status.rptr);
-		len = min(len, lensw);
-		sptr = &((uint8_t*)fifo->buffer)[status.rptr];
-		cpu_dcache_invld_buf(sptr, len);
-		memcpy( ptr, sptr, len );
-		status.rptr += len;
-		if ( status.rptr == fifo->gdepth )
-			status.rptr = 0;
-		ptr += len;
-		status.usage -= len;
-		lensw -= len;
-		done += len;
-		status.modified = 1;
-	}
-	writeback_status( fifo, &status );
-	mwmr_unlock( fifo );
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	cpu_dcache_invld_buf(fifo, sizeof(*fifo));
-	fifo->n_read += done/fifo->width;
-	fifo->time_read += cpu_cycle_count()-access_begin;
-#endif
-	return done;
-}
-
-size_t mwmr_try_write( struct mwmr_s *fifo, const void *_ptr, size_t lensw )
-{
-	const uint8_t *ptr = _ptr;
-	size_t done = 0;
-    local_mwmr_status_t status;
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	uint32_t access_begin = cpu_cycle_count();
-#endif
-
-	if ( mwmr_try_lock( fifo ) )
-		return done;
-	rehash_status( fifo, &status );
-	while ( lensw && status.usage < fifo->gdepth ) {
-        size_t len;
-		void *dptr;
-
-		if ( status.rptr <= status.wptr )
-			len = (fifo->gdepth - status.wptr);
-		else
-			len = fifo->gdepth - status.usage;
-		len = min(len, lensw);
-		dptr = &((uint8_t*)fifo->buffer)[status.wptr];
-		memcpy( dptr, ptr, len );
-		status.wptr += len;
-		if ( status.wptr == fifo->gdepth )
-			status.wptr = 0;
-		ptr += len;
-		status.usage += len;
-		lensw -= len;
-		done += len;
-		status.modified = 1;
-    }
-	writeback_status( fifo, &status );
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	cpu_dcache_invld_buf(fifo, sizeof(*fifo));
-	fifo->n_write += done/fifo->width;
-	fifo->time_write += cpu_cycle_count()-access_begin;
-#endif
-	mwmr_unlock( fifo );
-	return done;
-}
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-void mwmr_dump_stats( const struct mwmr_s *mwmr )
-{
-	cpu_dcache_invld_buf(mwmr, sizeof(*mwmr));
-	if ( mwmr->n_read )
-		srl_log_printf(NONE, "read,%s,%d,%d,%d\n",
-					   mwmr->name, cpu_cycle_count(),
-					   mwmr->time_read, mwmr->n_read );
-	if ( mwmr->n_write )
-		srl_log_printf(NONE, "write,%s,%d,%d,%d\n",
-					   mwmr->name, cpu_cycle_count(),
-					   mwmr->time_write, mwmr->n_write );
-}
-
-void mwmr_clear_stats( struct mwmr_s *mwmr )
-{
-	cpu_dcache_invld_buf(mwmr, sizeof(*mwmr));
-	mwmr->time_read =
-		mwmr->n_read =
-		mwmr->time_write =
-		mwmr->n_write = 0;
-}
-#endif
diff --git a/MPSoC/mutekh/libmwmr/mwmr_soclib.c-fonctionne b/MPSoC/mutekh/libmwmr/mwmr_soclib.c-fonctionne
deleted file mode 100644
index 1531c4b40a..0000000000
--- a/MPSoC/mutekh/libmwmr/mwmr_soclib.c-fonctionne
+++ /dev/null
@@ -1,409 +0,0 @@
-/*
- * This file is part of MutekH.
- * 
- * MutekH is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation; version 2.1 of the License.
- * 
- * MutekH is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with MutekH; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301 USA
- *
- * Copyright (c) UPMC, Lip6, SoC
- *         Nicolas Pouillon <nipo@ssji.net>, 2008
- */
-
-#include <mutek/scheduler.h>
-#include <hexo/types.h>
-#include <hexo/atomic.h>
-#include <hexo/iospace.h>
-#include <hexo/endian.h>
-#include <hexo/interrupt.h>
-#include <string.h>
-#include <mwmr/mwmr.h>
-#include <stdio.h> //DG 08.12.
-#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD)
-# include <srl/srl_sched_wait.h>
-# include <srl/srl_log.h>
-# ifndef SRL_VERBOSITY
-#  define SRL_VERBOSITY VERB_DEBUG
-# endif
-#elif defined(CONFIG_PTHREAD)
-# include <pthread.h>
-#endif
-
-static inline size_t min(size_t a, size_t b)
-{
-	if ( a < b )
-		return a;
-	else
-		return b;
-}
-
-void
-mwmr_hw_init( void *coproc, enum SoclibMwmrWay way,
-			  size_t no, const struct mwmr_s* mwmr )
-{
-	uintptr_t c = (uintptr_t)coproc;
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_FIFO_WAY, endian_le32(way));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_FIFO_NO, endian_le32(no));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_STATUS_ADDR, endian_le32((uintptr_t)mwmr->status));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_DEPTH, endian_le32(mwmr->gdepth));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_BUFFER_ADDR, endian_le32((uintptr_t)mwmr->buffer));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_WIDTH, endian_le32((uintptr_t)mwmr->width));
-#ifdef CONFIG_MWMR_USE_RAMLOCKS
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_LOCK_ADDR, endian_le32((uintptr_t)mwmr->lock));
-#endif
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_RUNNING, endian_le32(1));
-}
-
-void mwmr_config( void *coproc, size_t no, const uint32_t val )
-{
-	uintptr_t c = (uintptr_t)coproc;
-	cpu_mem_write_32( c + sizeof(uint32_t) * no, val);
-}
-
-uint32_t mwmr_status( void *coproc, size_t no )
-{
-	uintptr_t c = (uintptr_t)coproc;
-	return cpu_mem_read_32( c + sizeof(uint32_t) * no );
-}
-
-static inline void mwmr_lock( struct mwmr_s *fifo )
-{
- printf("##### MWMR LOCK ####");
-#ifdef CONFIG_MWMR_USE_RAMLOCKS
-  printf("##### MWMR USE RAMLOCKS ####");
-	while (*((uint32_t *)fifo->lock) != 0) {
-# if defined(CONFIG_PTHREAD)
-printf("##### MWMR CONFIG_PTHREAD ####");
-		pthread_yield();
-# else
-printf("##### MWMR NON CONFIG_PTHREAD ####");
-		cpu_interrupt_disable();
-		sched_context_switch();
-		cpu_interrupt_enable();
-# endif
-	}
-#else
-# if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD)
-printf("##### MWMR CONFIG_SRL ####");
-	while (cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0)) {
-/* 		cpu_interrupt_disable(); */
-/* 		sched_context_switch(); */
-/* 		cpu_interrupt_enable(); */
-		srl_sched_wait_eq_le(&fifo->status->lock, 0);
-	}
-# elif defined(CONFIG_PTHREAD)
-printf("##### MWMR CONFIG_PTHREAD2 ####");
-
-while (cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0)) {
-		pthread_yield();printf("##### MWMR pthread_yield ####");
-	}
-# else
-printf("##### MWMR ELSE ####");
-	cpu_atomic_bit_waitset((atomic_int_t*)&fifo->status->lock, 0);
-# endif
-#endif
-}
-
-static inline uint32_t mwmr_try_lock( struct mwmr_s *fifo )
-{
-#ifdef CONFIG_MWMR_USE_RAMLOCKS
-	return !!cpu_mem_read_32((uintptr_t)fifo->lock);
-#else
-	return cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0);
-#endif
-}
-
-static inline void mwmr_unlock( struct mwmr_s *fifo )
-{
-#ifdef CONFIG_MWMR_USE_RAMLOCKS
-	cpu_mem_write_32((uintptr_t)fifo->lock, 0);
-#else
-    cpu_mem_write_32((uintptr_t)&fifo->status->lock, 0);
-#endif
-}
-
-typedef struct {
-	uint32_t usage, wptr, rptr, modified;
-} local_mwmr_status_t;
-
-static inline void rehash_status( struct mwmr_s *fifo, local_mwmr_status_t *status )
-{
-	struct mwmr_status_s *fstatus = fifo->status;
-	cpu_dcache_invld_buf((void*)fstatus, sizeof(*fstatus));
-	status->usage = endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->usage ));
-    status->wptr =  endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->wptr ));
-    status->rptr =  endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->rptr ));
-	status->modified = 0;
-	printf("rehash_status : %s rptr %d wptr %d usage %d/depth %d\n", fifo->name, status->rptr, status->wptr, status->usage, fifo->gdepth);
-}
-
-static inline void writeback_status( struct mwmr_s *fifo, local_mwmr_status_t *status )
-{
-    struct mwmr_status_s *fstatus = fifo->status;
-	if ( !status->modified )
-		return;
-	cpu_mem_write_32( (uintptr_t)&fstatus->usage, endian_le32(status->usage) );
-    cpu_mem_write_32( (uintptr_t)&fstatus->wptr, endian_le32(status->wptr) );
-	cpu_mem_write_32( (uintptr_t)&fstatus->rptr, endian_le32(status->rptr) );
-}
-
-void mwmr_read( struct mwmr_s *fifo, void *_ptr, size_t lensw )
-{
-	uint8_t *ptr = _ptr;
-	local_mwmr_status_t status;
-
-        printf("###### MWMR SOCLIB READ 0 #############\n");
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	size_t tot = lensw/fifo->width;
-	uint32_t access_begin = cpu_cycle_count();
-#endif
-
-	mwmr_lock( fifo ); printf("###### MWMR SOCLIB READ 1 #############\n");
-	rehash_status( fifo, &status );
-    while ( lensw ) {printf("lensw %x \n",lensw);
-        size_t len;
-		while ( status.usage < fifo->width ) { //DG 15.12.
-                  printf("status address %x\n", &status);
-                  printf("status.usage %x\n",  status.usage);
-                  printf("fifo->width %x\n", fifo->width);
-
-                  writeback_status( fifo, &status );
-                  mwmr_unlock( fifo ); 
-                  printf("###### MWMR SOCLIB READ 2 #############\n");
-#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD)
-			srl_sched_wait_ge_le(&fifo->status->usage, fifo->width);
-#elif defined(CONFIG_PTHREAD)
-			pthread_yield();
-                        printf("###### MWMR SOCLIB READ 2bis #############\n");
-#else
-			cpu_interrupt_disable();
-			sched_context_switch();
-			cpu_interrupt_enable();
-#endif
-printf("###### MWMR SOCLIB READ 3 #############\n");
-            mwmr_lock( fifo );
-printf("###### MWMR SOCLIB READ 4 #############\n");
-	rehash_status( fifo, &status );
-        } //DG 15.12.
-printf("###### MWMR SOCLIB READ 4a #############\n");
-        while ( lensw && status.usage >= fifo->width ) {
-			void *sptr;
-
-            if ( status.rptr < status.wptr )
-                len = status.usage;
-            else
-                len = (fifo->gdepth - status.rptr);
-            len = min(len, lensw);
-			sptr = &((uint8_t*)fifo->buffer)[status.rptr];
-			cpu_dcache_invld_buf(sptr, len);
-            memcpy( ptr, sptr, len );
-printf("###### MWMR SOCLIB READ 5 #############\n");
-            status.rptr += len;
-            if ( status.rptr == fifo->gdepth )
-                status.rptr = 0;
-            ptr += len;
-            status.usage -= len;
-            lensw -= len;
-			status.modified = 1;
-        }
-    }
-printf("###### MWMR SOCLIB READ 6 #############\n");
-	writeback_status( fifo, &status );
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	cpu_dcache_invld_buf(fifo, sizeof(*fifo));
-	fifo->n_read += tot;
-	fifo->time_read += cpu_cycle_count()-access_begin;
-#endif
- printf("###### MWMR SOCLIB READ 7 #############\n");
-	mwmr_unlock( fifo );
-}
-
-void mwmr_write( struct mwmr_s *fifo, const void *_ptr, size_t lensw )
-{
-	const uint8_t *ptr = _ptr;
-    local_mwmr_status_t status;
-
-printf("###### MWMR SOCLIB WRITE #############\n");
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	size_t tot = lensw/fifo->width;
-	uint32_t access_begin = cpu_cycle_count();
-#endif
-        //printf("###### MWMR SOCLIB WRITE2 #############\n");
-printf(" %x \n",fifo); 
-//printf(" %x \n",fifo->depth);  DG 08.12. c'est ici que ca plante, fifo non initialise??
-printf("###### MWMR SOCLIB WRITE2 #############\n");
-//printf(" %x \n",fifo->lock); DG 08.12. c'est ici que ca plante, on n'a pas d elock!
-        mwmr_lock( fifo );
-       
-printf("###### MWMR SOCLIB WRITE3 #############\n");
-printf("###### MWMR SOCLIB WRITE3b #############\n");
-	rehash_status( fifo, &status );
-    while ( lensw ) {
-        size_t len;
-        while (status.usage >= fifo->gdepth) {
-			writeback_status( fifo, &status );
-            mwmr_unlock( fifo );
-#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD)
-			srl_sched_wait_le_le(&fifo->status->usage, fifo->gdepth-fifo->width);
-#elif defined(CONFIG_PTHREAD)
-			pthread_yield();
-#else
-			cpu_interrupt_disable();
-			sched_context_switch();
-			cpu_interrupt_enable();
-#endif
-            mwmr_lock( fifo );
-			rehash_status( fifo, &status );
-        }
-printf("###### MWMR SOCLIB WRITE4 #############\n");
-        while ( lensw && status.usage < fifo->gdepth ) {
-			void *dptr;
-
-            if ( status.rptr <= status.wptr )
-                len = (fifo->gdepth - status.wptr);
-            else
-                len = fifo->gdepth - status.usage;
-            len = min(len, lensw);
-			dptr = &((uint8_t*)fifo->buffer)[status.wptr];
-            memcpy( dptr, ptr, len );
-            status.wptr += len;
-            if ( status.wptr == fifo->gdepth )
-                status.wptr = 0;
-            ptr += len;
-            status.usage += len;
-            lensw -= len;
-			status.modified = 1;
-        }
-    }
-	writeback_status( fifo, &status );
-printf("###### MWMR SOCLIB WRITE5 #############\n");
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	cpu_dcache_invld_buf(fifo, sizeof(*fifo));
-	fifo->n_write += tot;
-	fifo->time_write += cpu_cycle_count()-access_begin;
-#endif
-printf("###### MWMR SOCLIB WRITE6 #############\n");
-	mwmr_unlock( fifo );
-printf("###### MWMR SOCLIB WRITE7 #############\n");
-}
-
-size_t mwmr_try_read( struct mwmr_s *fifo, void *_ptr, size_t lensw )
-{
-	uint8_t *ptr = _ptr;
-	size_t done = 0;
-    local_mwmr_status_t status;
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	uint32_t access_begin = cpu_cycle_count();
-#endif
-
-	if ( mwmr_try_lock( fifo ) )
-		return done;
-	rehash_status( fifo, &status );
-	while ( lensw && status.usage >= fifo->width ) {
-        size_t len;
-		void *sptr;
-
-		if ( status.rptr < status.wptr )
-			len = status.usage;
-		else
-			len = (fifo->gdepth - status.rptr);
-		len = min(len, lensw);
-		sptr = &((uint8_t*)fifo->buffer)[status.rptr];
-		cpu_dcache_invld_buf(sptr, len);
-		memcpy( ptr, sptr, len );
-		status.rptr += len;
-		if ( status.rptr == fifo->gdepth )
-			status.rptr = 0;
-		ptr += len;
-		status.usage -= len;
-		lensw -= len;
-		done += len;
-		status.modified = 1;
-	}
-	writeback_status( fifo, &status );
-	mwmr_unlock( fifo );
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	cpu_dcache_invld_buf(fifo, sizeof(*fifo));
-	fifo->n_read += done/fifo->width;
-	fifo->time_read += cpu_cycle_count()-access_begin;
-#endif
-	return done;
-}
-
-size_t mwmr_try_write( struct mwmr_s *fifo, const void *_ptr, size_t lensw )
-{
-	const uint8_t *ptr = _ptr;
-	size_t done = 0;
-    local_mwmr_status_t status;
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	uint32_t access_begin = cpu_cycle_count();
-#endif
-
-	if ( mwmr_try_lock( fifo ) )
-		return done;
-	rehash_status( fifo, &status );
-	while ( lensw && status.usage < fifo->gdepth ) {
-        size_t len;
-		void *dptr;
-
-		if ( status.rptr <= status.wptr )
-			len = (fifo->gdepth - status.wptr);
-		else
-			len = fifo->gdepth - status.usage;
-		len = min(len, lensw);
-		dptr = &((uint8_t*)fifo->buffer)[status.wptr];
-		memcpy( dptr, ptr, len );
-		status.wptr += len;
-		if ( status.wptr == fifo->gdepth )
-			status.wptr = 0;
-		ptr += len;
-		status.usage += len;
-		lensw -= len;
-		done += len;
-		status.modified = 1;
-    }
-	writeback_status( fifo, &status );
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	cpu_dcache_invld_buf(fifo, sizeof(*fifo));
-	fifo->n_write += done/fifo->width;
-	fifo->time_write += cpu_cycle_count()-access_begin;
-#endif
-	mwmr_unlock( fifo );
-	return done;
-}
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-void mwmr_dump_stats( const struct mwmr_s *mwmr )
-{
-	cpu_dcache_invld_buf(mwmr, sizeof(*mwmr));
-	if ( mwmr->n_read )
-		srl_log_printf(NONE, "read,%s,%d,%d,%d\n",
-					   mwmr->name, cpu_cycle_count(),
-					   mwmr->time_read, mwmr->n_read );
-	if ( mwmr->n_write )
-		srl_log_printf(NONE, "write,%s,%d,%d,%d\n",
-					   mwmr->name, cpu_cycle_count(),
-					   mwmr->time_write, mwmr->n_write );
-}
-
-void mwmr_clear_stats( struct mwmr_s *mwmr )
-{
-	cpu_dcache_invld_buf(mwmr, sizeof(*mwmr));
-	mwmr->time_read =
-		mwmr->n_read =
-		mwmr->time_write =
-		mwmr->n_write = 0;
-}
-#endif
diff --git a/MPSoC/mutekh/libmwmr/mwmr_soclib.c-fully-instrumented b/MPSoC/mutekh/libmwmr/mwmr_soclib.c-fully-instrumented
deleted file mode 100644
index 6c19991416..0000000000
--- a/MPSoC/mutekh/libmwmr/mwmr_soclib.c-fully-instrumented
+++ /dev/null
@@ -1,425 +0,0 @@
-/*
- * This file is part of MutekH.
- * 
- * MutekH is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation; version 2.1 of the License.
- * 
- * MutekH is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with MutekH; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301 USA
- *
- * Copyright (c) UPMC, Lip6, SoC
- *         Nicolas Pouillon <nipo@ssji.net>, 2008
- */
-
-#include <mutek/scheduler.h>
-#include <hexo/types.h>
-#include <hexo/atomic.h>
-#include <hexo/iospace.h>
-#include <hexo/endian.h>
-#include <hexo/interrupt.h>
-#include <string.h>
-#include <mwmr/mwmr.h>
-#include <stdio.h> //DG 08.12.
-#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD)
-# include <srl/srl_sched_wait.h>
-# include <srl/srl_log.h>
-# ifndef SRL_VERBOSITY
-#  define SRL_VERBOSITY VERB_DEBUG
-# endif
-#elif defined(CONFIG_PTHREAD)
-# include <pthread.h>
-#endif
-
-static inline size_t min(size_t a, size_t b)
-{
-	if ( a < b )
-		return a;
-	else
-		return b;
-}
-
-void
-mwmr_hw_init( void *coproc, enum SoclibMwmrWay way,
-			  size_t no, const struct mwmr_s* mwmr )
-{
-	uintptr_t c = (uintptr_t)coproc;
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_FIFO_WAY, endian_le32(way));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_FIFO_NO, endian_le32(no));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_STATUS_ADDR, endian_le32((uintptr_t)mwmr->status));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_DEPTH, endian_le32(mwmr->gdepth));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_BUFFER_ADDR, endian_le32((uintptr_t)mwmr->buffer));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_WIDTH, endian_le32((uintptr_t)mwmr->width));
-#ifdef CONFIG_MWMR_USE_RAMLOCKS
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_LOCK_ADDR, endian_le32((uintptr_t)mwmr->lock));
-#endif
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_RUNNING, endian_le32(1));
-}
-
-void mwmr_config( void *coproc, size_t no, const uint32_t val )
-{
-	uintptr_t c = (uintptr_t)coproc;
-	cpu_mem_write_32( c + sizeof(uint32_t) * no, val);
-}
-
-uint32_t mwmr_status( void *coproc, size_t no )
-{
-	uintptr_t c = (uintptr_t)coproc;
-	return cpu_mem_read_32( c + sizeof(uint32_t) * no );
-}
-
-static inline void mwmr_lock( struct mwmr_s *fifo )
-{
- printf("##### MWMR LOCK ####");
-#ifdef CONFIG_MWMR_USE_RAMLOCKS
-  printf("##### MWMR USE RAMLOCKS ####");
-	while (*((uint32_t *)fifo->lock) != 0) {
-# if defined(CONFIG_PTHREAD)
-printf("##### MWMR CONFIG_PTHREAD ####");
-		pthread_yield();
-# else
-printf("##### MWMR NON CONFIG_PTHREAD ####");
-		cpu_interrupt_disable();
-		sched_context_switch();
-		cpu_interrupt_enable();
-# endif
-	}
-#else
-# if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD)
-printf("##### MWMR CONFIG_SRL ####");
-	while (cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0)) {
-/* 		cpu_interrupt_disable(); */
-/* 		sched_context_switch(); */
-/* 		cpu_interrupt_enable(); */
-		srl_sched_wait_eq_le(&fifo->status->lock, 0);
-	}
-# elif defined(CONFIG_PTHREAD)
-printf("##### MWMR CONFIG_PTHREAD2 ####");
-
-while (cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0)) {
-		pthread_yield();printf("##### MWMR pthread_yield ####");
-	}
-# else
-printf("##### MWMR ELSE ####");
-	cpu_atomic_bit_waitset((atomic_int_t*)&fifo->status->lock, 0);
-# endif
-#endif
-}
-
-static inline uint32_t mwmr_try_lock( struct mwmr_s *fifo )
-{
-#ifdef CONFIG_MWMR_USE_RAMLOCKS
-	return !!cpu_mem_read_32((uintptr_t)fifo->lock);
-#else
-	return cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0);
-#endif
-}
-
-static inline void mwmr_unlock( struct mwmr_s *fifo )
-{
-#ifdef CONFIG_MWMR_USE_RAMLOCKS
-	cpu_mem_write_32((uintptr_t)fifo->lock, 0);
-#else
-    cpu_mem_write_32((uintptr_t)&fifo->status->lock, 0);
-#endif
-}
-
-typedef struct {
-	uint32_t usage, wptr, rptr, modified;
-} local_mwmr_status_t;
-
-static inline void rehash_status( struct mwmr_s *fifo, local_mwmr_status_t *status )
-{
-	struct mwmr_status_s *fstatus = fifo->status;
-	cpu_dcache_invld_buf((void*)fstatus, sizeof(*fstatus));
-	status->usage = endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->usage ));
-    status->wptr =  endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->wptr ));
-    status->rptr =  endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->rptr ));
-	status->modified = 0;
-        //printf("###### MWMR SOCLIB WRITE100 #############\n");
-	//printf("rehash_status : %s rptr %d wptr %d usage %d/depth %d\n", fifo->name, status->rptr, status->wptr, status->usage, fifo->gdepth);
-}
-
-static inline void writeback_status( struct mwmr_s *fifo, local_mwmr_status_t *status )
-{
-printf("###### MWMR SOCLIB 101 #############\n");
-    struct mwmr_status_s *fstatus = fifo->status;
-    	if ( !status->modified )
-    		return;
-printf("###### MWMR SOCLIB 101b #############\n");
-	cpu_mem_write_32( (uintptr_t)&fstatus->usage, endian_le32(status->usage) );
-    cpu_mem_write_32( (uintptr_t)&fstatus->wptr, endian_le32(status->wptr) );
-	cpu_mem_write_32( (uintptr_t)&fstatus->rptr, endian_le32(status->rptr) );
-printf("###### MWMR SOCLIB 101c #############\n");
-}
-
-void mwmr_read( struct mwmr_s *fifo, void *_ptr, size_t lensw )
-{
-	uint8_t *ptr = _ptr;
-	local_mwmr_status_t status;
-
-        printf("###### MWMR SOCLIB READ 0 #############\n");
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	size_t tot = lensw/fifo->width;
-	uint32_t access_begin = cpu_cycle_count();
-#endif
-
-	mwmr_lock( fifo ); printf("###### MWMR SOCLIB READ 1 #############\n");
-	rehash_status( fifo, &status );
-    while ( lensw ) {printf("lensw %x \n",lensw);
-        size_t len;
-		while ( status.usage < fifo->width ) { //DG 15.12.
-                  printf("status address %x\n", &status);
-                  printf("status.usage %x\n",  status.usage);
-                  printf("fifo->width %x\n", fifo->width);
-
-                  writeback_status( fifo, &status );
-                  mwmr_unlock( fifo ); 
-                  printf("###### MWMR SOCLIB READ 2 #############\n");
-#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD)
-			srl_sched_wait_ge_le(&fifo->status->usage, fifo->width);
-#elif defined(CONFIG_PTHREAD)
-			pthread_yield();
-                        printf("###### MWMR SOCLIB READ 2bis #############\n");
-#else
-			cpu_interrupt_disable();
-			sched_context_switch();
-			cpu_interrupt_enable();
-#endif
-printf("###### MWMR SOCLIB READ 3 #############\n");
-            mwmr_lock( fifo );
-printf("###### MWMR SOCLIB READ 4 #############\n");
-
-	rehash_status( fifo, &status );
-printf("###### MWMR SOCLIB READ 4a #############\n");
-        } //DG 15.12.
-printf("###### MWMR SOCLIB READ 4b #############\n");
-        while ( lensw && status.usage >= fifo->width ) {
-			void *sptr;
-
-            if ( status.rptr < status.wptr )
-                len = status.usage;
-            else
-                len = (fifo->gdepth - status.rptr);
-            len = min(len, lensw);
-			sptr = &((uint8_t*)fifo->buffer)[status.rptr];
-			cpu_dcache_invld_buf(sptr, len);
-            memcpy( ptr, sptr, len );
-printf("###### MWMR SOCLIB READ 5 #############\n");
-            status.rptr += len;
-            if ( status.rptr == fifo->gdepth )
-                status.rptr = 0;
-            ptr += len;
-            status.usage -= len;
-            lensw -= len;
-			status.modified = 1;
-        }
-    }
-printf("###### MWMR SOCLIB READ 6 #############\n");
-	writeback_status( fifo, &status );
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	cpu_dcache_invld_buf(fifo, sizeof(*fifo));
-	fifo->n_read += tot;
-	fifo->time_read += cpu_cycle_count()-access_begin;
-#endif
- printf("###### MWMR SOCLIB READ 7 #############\n");
-	mwmr_unlock( fifo );
-}
-
-void mwmr_write( struct mwmr_s *fifo, const void *_ptr, size_t lensw )
-{
-	const uint8_t *ptr = _ptr;
-    local_mwmr_status_t status;
-
-printf("###### MWMR SOCLIB WRITE #############\n");
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	size_t tot = lensw/fifo->width;
-	uint32_t access_begin = cpu_cycle_count();
-#endif
-        //printf("###### MWMR SOCLIB WRITE2 #############\n");
-printf(" %x \n",fifo); 
-//printf(" %x \n",fifo->depth);  DG 08.12. c'est ici que ca plante, fifo non initialise??
-printf("###### MWMR SOCLIB WRITE2 #############\n");
-//printf(" %x \n",fifo->lock); DG 08.12. c'est ici que ca plante, on n'a pas d elock!
-        mwmr_lock( fifo );
-       
-printf("###### MWMR SOCLIB WRITE3 #############\n");
-printf("###### MWMR SOCLIB WRITE3b #############\n");
-	rehash_status( fifo, &status );
-printf("###### MWMR SOCLIB WRITE3c #############\n");
-    while ( lensw ) {
-        size_t len;
-        while (status.usage >= fifo->gdepth) {
-			writeback_status( fifo, &status );
-            mwmr_unlock( fifo );
-#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD)
-			srl_sched_wait_le_le(&fifo->status->usage, fifo->gdepth-fifo->width);
-#elif defined(CONFIG_PTHREAD)
-			pthread_yield();
-#else
-			cpu_interrupt_disable();
-			sched_context_switch();
-			cpu_interrupt_enable();
-#endif
-            mwmr_lock( fifo );
-			rehash_status( fifo, &status );
-        }
-printf("###### MWMR SOCLIB WRITE4 #############\n");
-        while ( lensw && status.usage < fifo->gdepth ) {
-			void *dptr;
-                        printf("###### MWMR SOCLIB WRITE4 #######lensw %x \n",lensw);
-printf("###### MWMR SOCLIB WRITE4 #######fifo->gdepth %x \n",fifo->gdepth);
-
- if ( status.rptr <= status.wptr ){
-printf("###### MWMR SOCLIB WRITE4a #######fifo->gdepth %x \n",fifo->gdepth);
- len = (fifo->gdepth - status.wptr);
-printf("###### MWMR SOCLIB WRITE4a #######fifo->len %x \n",len);
-}
- else{
-printf("###### MWMR SOCLIB WRITE4b #######fifo->gdepth %x \n",fifo->gdepth);
-                len = fifo->gdepth - status.usage;
- }
-            len = min(len, lensw);
-			dptr = &((uint8_t*)fifo->buffer)[status.wptr];
-            memcpy( dptr, ptr, len );
-            status.wptr += len;
-            if ( status.wptr == fifo->gdepth )
-                status.wptr = 0;
-            ptr += len;
-            status.usage += len;
-            lensw -= len;
-            printf("######lensw %x", lensw);
-printf("######len %x", len);
-			status.modified = 1;
-        }
-    }
-	writeback_status( fifo, &status );
-printf("###### MWMR SOCLIB WRITE5 #############\n");
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	cpu_dcache_invld_buf(fifo, sizeof(*fifo));
-	fifo->n_write += tot;
-	fifo->time_write += cpu_cycle_count()-access_begin;
-#endif
-printf("###### MWMR SOCLIB WRITE6 #############\n");
-	mwmr_unlock( fifo );
-printf("###### MWMR SOCLIB WRITE7 #############\n");
-}
-
-size_t mwmr_try_read( struct mwmr_s *fifo, void *_ptr, size_t lensw )
-{
-	uint8_t *ptr = _ptr;
-	size_t done = 0;
-    local_mwmr_status_t status;
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	uint32_t access_begin = cpu_cycle_count();
-#endif
-
-	if ( mwmr_try_lock( fifo ) )
-		return done;
-	rehash_status( fifo, &status );
-	while ( lensw && status.usage >= fifo->width ) {
-        size_t len;
-		void *sptr;
-
-		if ( status.rptr < status.wptr )
-			len = status.usage;
-		else
-			len = (fifo->gdepth - status.rptr);
-		len = min(len, lensw);
-		sptr = &((uint8_t*)fifo->buffer)[status.rptr];
-		cpu_dcache_invld_buf(sptr, len);
-		memcpy( ptr, sptr, len );
-		status.rptr += len;
-		if ( status.rptr == fifo->gdepth )
-			status.rptr = 0;
-		ptr += len;
-		status.usage -= len;
-		lensw -= len;
-		done += len;
-		status.modified = 1;
-	}
-	writeback_status( fifo, &status );
-	mwmr_unlock( fifo );
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	cpu_dcache_invld_buf(fifo, sizeof(*fifo));
-	fifo->n_read += done/fifo->width;
-	fifo->time_read += cpu_cycle_count()-access_begin;
-#endif
-	return done;
-}
-
-size_t mwmr_try_write( struct mwmr_s *fifo, const void *_ptr, size_t lensw )
-{
-	const uint8_t *ptr = _ptr;
-	size_t done = 0;
-    local_mwmr_status_t status;
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	uint32_t access_begin = cpu_cycle_count();
-#endif
-
-	if ( mwmr_try_lock( fifo ) )
-		return done;
-	rehash_status( fifo, &status );
-	while ( lensw && status.usage < fifo->gdepth ) {
-        size_t len;
-		void *dptr;
-
-		if ( status.rptr <= status.wptr )
-			len = (fifo->gdepth - status.wptr);
-		else
-			len = fifo->gdepth - status.usage;
-		len = min(len, lensw);
-		dptr = &((uint8_t*)fifo->buffer)[status.wptr];
-		memcpy( dptr, ptr, len );
-		status.wptr += len;
-		if ( status.wptr == fifo->gdepth )
-			status.wptr = 0;
-		ptr += len;
-		status.usage += len;
-		lensw -= len;
-		done += len;
-		status.modified = 1;
-    }
-	writeback_status( fifo, &status );
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	cpu_dcache_invld_buf(fifo, sizeof(*fifo));
-	fifo->n_write += done/fifo->width;
-	fifo->time_write += cpu_cycle_count()-access_begin;
-#endif
-	mwmr_unlock( fifo );
-	return done;
-}
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-void mwmr_dump_stats( const struct mwmr_s *mwmr )
-{
-	cpu_dcache_invld_buf(mwmr, sizeof(*mwmr));
-	if ( mwmr->n_read )
-		srl_log_printf(NONE, "read,%s,%d,%d,%d\n",
-					   mwmr->name, cpu_cycle_count(),
-					   mwmr->time_read, mwmr->n_read );
-	if ( mwmr->n_write )
-		srl_log_printf(NONE, "write,%s,%d,%d,%d\n",
-					   mwmr->name, cpu_cycle_count(),
-					   mwmr->time_write, mwmr->n_write );
-}
-
-void mwmr_clear_stats( struct mwmr_s *mwmr )
-{
-	cpu_dcache_invld_buf(mwmr, sizeof(*mwmr));
-	mwmr->time_read =
-		mwmr->n_read =
-		mwmr->time_write =
-		mwmr->n_write = 0;
-}
-#endif
diff --git a/MPSoC/mutekh/libmwmr/mwmr_soclib.c-orig b/MPSoC/mutekh/libmwmr/mwmr_soclib.c-orig
deleted file mode 100644
index 43a31fc540..0000000000
--- a/MPSoC/mutekh/libmwmr/mwmr_soclib.c-orig
+++ /dev/null
@@ -1,377 +0,0 @@
-/*
- * This file is part of MutekH.
- * 
- * MutekH is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation; version 2.1 of the License.
- * 
- * MutekH is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with MutekH; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301 USA
- *
- * Copyright (c) UPMC, Lip6, SoC
- *         Nicolas Pouillon <nipo@ssji.net>, 2008
- */
-
-#include <mutek/scheduler.h>
-#include <hexo/types.h>
-#include <hexo/atomic.h>
-#include <hexo/iospace.h>
-#include <hexo/endian.h>
-#include <hexo/interrupt.h>
-#include <string.h>
-#include <mwmr/mwmr.h>
-
-#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD)
-# include <srl/srl_sched_wait.h>
-# include <srl/srl_log.h>
-# ifndef SRL_VERBOSITY
-#  define SRL_VERBOSITY VERB_DEBUG
-# endif
-#elif defined(CONFIG_PTHREAD)
-# include <pthread.h>
-#endif
-
-static inline size_t min(size_t a, size_t b)
-{
-	if ( a < b )
-		return a;
-	else
-		return b;
-}
-
-void
-mwmr_hw_init( void *coproc, enum SoclibMwmrWay way,
-			  size_t no, const struct mwmr_s* mwmr )
-{
-	uintptr_t c = (uintptr_t)coproc;
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_FIFO_WAY, endian_le32(way));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_FIFO_NO, endian_le32(no));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_STATUS_ADDR, endian_le32((uintptr_t)mwmr->status));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_DEPTH, endian_le32(mwmr->gdepth));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_BUFFER_ADDR, endian_le32((uintptr_t)mwmr->buffer));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_WIDTH, endian_le32((uintptr_t)mwmr->width));
-#ifdef CONFIG_MWMR_USE_RAMLOCKS
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_LOCK_ADDR, endian_le32((uintptr_t)mwmr->lock));
-#endif
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_RUNNING, endian_le32(1));
-}
-
-void mwmr_config( void *coproc, size_t no, const uint32_t val )
-{
-	uintptr_t c = (uintptr_t)coproc;
-	cpu_mem_write_32( c + sizeof(uint32_t) * no, val);
-}
-
-uint32_t mwmr_status( void *coproc, size_t no )
-{
-	uintptr_t c = (uintptr_t)coproc;
-	return cpu_mem_read_32( c + sizeof(uint32_t) * no );
-}
-
-static inline void mwmr_lock( struct mwmr_s *fifo )
-{
-#ifdef CONFIG_MWMR_USE_RAMLOCKS
-	while (*((uint32_t *)fifo->lock) != 0) {
-# if defined(CONFIG_PTHREAD)
-		pthread_yield();
-# else
-		cpu_interrupt_disable();
-		sched_context_switch();
-		cpu_interrupt_enable();
-# endif
-	}
-#else
-# if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD)
-	while (cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0)) {
-/* 		cpu_interrupt_disable(); */
-/* 		sched_context_switch(); */
-/* 		cpu_interrupt_enable(); */
-		srl_sched_wait_eq_le(&fifo->status->lock, 0);
-	}
-# elif defined(CONFIG_PTHREAD)
-	while (cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0)) {
-		pthread_yield();
-	}
-# else
-	cpu_atomic_bit_waitset((atomic_int_t*)&fifo->status->lock, 0);
-# endif
-#endif
-}
-
-static inline uint32_t mwmr_try_lock( struct mwmr_s *fifo )
-{
-#ifdef CONFIG_MWMR_USE_RAMLOCKS
-	return !!cpu_mem_read_32((uintptr_t)fifo->lock);
-#else
-	return cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0);
-#endif
-}
-
-static inline void mwmr_unlock( struct mwmr_s *fifo )
-{
-#ifdef CONFIG_MWMR_USE_RAMLOCKS
-	cpu_mem_write_32((uintptr_t)fifo->lock, 0);
-#else
-    cpu_mem_write_32((uintptr_t)&fifo->status->lock, 0);
-#endif
-}
-
-typedef struct {
-	uint32_t usage, wptr, rptr, modified;
-} local_mwmr_status_t;
-
-static inline void rehash_status( struct mwmr_s *fifo, local_mwmr_status_t *status )
-{
-	struct mwmr_status_s *fstatus = fifo->status;
-	cpu_dcache_invld_buf((void*)fstatus, sizeof(*fstatus));
-	status->usage = endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->usage ));
-    status->wptr =  endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->wptr ));
-    status->rptr =  endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->rptr ));
-	status->modified = 0;
-//	srl_log_printf(NONE,"%s %d %d %d/%d\n", fifo->name, status->rptr, status->wptr, status->usage, fifo->gdepth);
-}
-
-static inline void writeback_status( struct mwmr_s *fifo, local_mwmr_status_t *status )
-{
-    struct mwmr_status_s *fstatus = fifo->status;
-	if ( !status->modified )
-		return;
-	cpu_mem_write_32( (uintptr_t)&fstatus->usage, endian_le32(status->usage) );
-    cpu_mem_write_32( (uintptr_t)&fstatus->wptr, endian_le32(status->wptr) );
-	cpu_mem_write_32( (uintptr_t)&fstatus->rptr, endian_le32(status->rptr) );
-}
-
-void mwmr_read( struct mwmr_s *fifo, void *_ptr, size_t lensw )
-{
-	uint8_t *ptr = _ptr;
-	local_mwmr_status_t status;
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	size_t tot = lensw/fifo->width;
-	uint32_t access_begin = cpu_cycle_count();
-#endif
-
-	mwmr_lock( fifo );
-	rehash_status( fifo, &status );
-    while ( lensw ) {
-        size_t len;
-		while ( status.usage < fifo->width ) {
-			writeback_status( fifo, &status );
-            mwmr_unlock( fifo );
-#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD)
-			srl_sched_wait_ge_le(&fifo->status->usage, fifo->width);
-#elif defined(CONFIG_PTHREAD)
-			pthread_yield();
-#else
-			cpu_interrupt_disable();
-			sched_context_switch();
-			cpu_interrupt_enable();
-#endif
-            mwmr_lock( fifo );
-			rehash_status( fifo, &status );
-        }
-        while ( lensw && status.usage >= fifo->width ) {
-			void *sptr;
-
-            if ( status.rptr < status.wptr )
-                len = status.usage;
-            else
-                len = (fifo->gdepth - status.rptr);
-            len = min(len, lensw);
-			sptr = &((uint8_t*)fifo->buffer)[status.rptr];
-			cpu_dcache_invld_buf(sptr, len);
-            memcpy( ptr, sptr, len );
-            status.rptr += len;
-            if ( status.rptr == fifo->gdepth )
-                status.rptr = 0;
-            ptr += len;
-            status.usage -= len;
-            lensw -= len;
-			status.modified = 1;
-        }
-    }
-	writeback_status( fifo, &status );
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	cpu_dcache_invld_buf(fifo, sizeof(*fifo));
-	fifo->n_read += tot;
-	fifo->time_read += cpu_cycle_count()-access_begin;
-#endif
-
-	mwmr_unlock( fifo );
-}
-
-void mwmr_write( struct mwmr_s *fifo, const void *_ptr, size_t lensw )
-{
-	const uint8_t *ptr = _ptr;
-    local_mwmr_status_t status;
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	size_t tot = lensw/fifo->width;
-	uint32_t access_begin = cpu_cycle_count();
-#endif
-
-	mwmr_lock( fifo );
-	rehash_status( fifo, &status );
-    while ( lensw ) {
-        size_t len;
-        while (status.usage >= fifo->gdepth) {
-			writeback_status( fifo, &status );
-            mwmr_unlock( fifo );
-#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD)
-			srl_sched_wait_le_le(&fifo->status->usage, fifo->gdepth-fifo->width);
-#elif defined(CONFIG_PTHREAD)
-			pthread_yield();
-#else
-			cpu_interrupt_disable();
-			sched_context_switch();
-			cpu_interrupt_enable();
-#endif
-            mwmr_lock( fifo );
-			rehash_status( fifo, &status );
-        }
-        while ( lensw && status.usage < fifo->gdepth ) {
-			void *dptr;
-
-            if ( status.rptr <= status.wptr )
-                len = (fifo->gdepth - status.wptr);
-            else
-                len = fifo->gdepth - status.usage;
-            len = min(len, lensw);
-			dptr = &((uint8_t*)fifo->buffer)[status.wptr];
-            memcpy( dptr, ptr, len );
-            status.wptr += len;
-            if ( status.wptr == fifo->gdepth )
-                status.wptr = 0;
-            ptr += len;
-            status.usage += len;
-            lensw -= len;
-			status.modified = 1;
-        }
-    }
-	writeback_status( fifo, &status );
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	cpu_dcache_invld_buf(fifo, sizeof(*fifo));
-	fifo->n_write += tot;
-	fifo->time_write += cpu_cycle_count()-access_begin;
-#endif
-
-	mwmr_unlock( fifo );
-}
-
-size_t mwmr_try_read( struct mwmr_s *fifo, void *_ptr, size_t lensw )
-{
-	uint8_t *ptr = _ptr;
-	size_t done = 0;
-    local_mwmr_status_t status;
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	uint32_t access_begin = cpu_cycle_count();
-#endif
-
-	if ( mwmr_try_lock( fifo ) )
-		return done;
-	rehash_status( fifo, &status );
-	while ( lensw && status.usage >= fifo->width ) {
-        size_t len;
-		void *sptr;
-
-		if ( status.rptr < status.wptr )
-			len = status.usage;
-		else
-			len = (fifo->gdepth - status.rptr);
-		len = min(len, lensw);
-		sptr = &((uint8_t*)fifo->buffer)[status.rptr];
-		cpu_dcache_invld_buf(sptr, len);
-		memcpy( ptr, sptr, len );
-		status.rptr += len;
-		if ( status.rptr == fifo->gdepth )
-			status.rptr = 0;
-		ptr += len;
-		status.usage -= len;
-		lensw -= len;
-		done += len;
-		status.modified = 1;
-	}
-	writeback_status( fifo, &status );
-	mwmr_unlock( fifo );
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	cpu_dcache_invld_buf(fifo, sizeof(*fifo));
-	fifo->n_read += done/fifo->width;
-	fifo->time_read += cpu_cycle_count()-access_begin;
-#endif
-	return done;
-}
-
-size_t mwmr_try_write( struct mwmr_s *fifo, const void *_ptr, size_t lensw )
-{
-	const uint8_t *ptr = _ptr;
-	size_t done = 0;
-    local_mwmr_status_t status;
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	uint32_t access_begin = cpu_cycle_count();
-#endif
-
-	if ( mwmr_try_lock( fifo ) )
-		return done;
-	rehash_status( fifo, &status );
-	while ( lensw && status.usage < fifo->gdepth ) {
-        size_t len;
-		void *dptr;
-
-		if ( status.rptr <= status.wptr )
-			len = (fifo->gdepth - status.wptr);
-		else
-			len = fifo->gdepth - status.usage;
-		len = min(len, lensw);
-		dptr = &((uint8_t*)fifo->buffer)[status.wptr];
-		memcpy( dptr, ptr, len );
-		status.wptr += len;
-		if ( status.wptr == fifo->gdepth )
-			status.wptr = 0;
-		ptr += len;
-		status.usage += len;
-		lensw -= len;
-		done += len;
-		status.modified = 1;
-    }
-	writeback_status( fifo, &status );
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	cpu_dcache_invld_buf(fifo, sizeof(*fifo));
-	fifo->n_write += done/fifo->width;
-	fifo->time_write += cpu_cycle_count()-access_begin;
-#endif
-	mwmr_unlock( fifo );
-	return done;
-}
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-void mwmr_dump_stats( const struct mwmr_s *mwmr )
-{
-	cpu_dcache_invld_buf(mwmr, sizeof(*mwmr));
-	if ( mwmr->n_read )
-		srl_log_printf(NONE, "read,%s,%d,%d,%d\n",
-					   mwmr->name, cpu_cycle_count(),
-					   mwmr->time_read, mwmr->n_read );
-	if ( mwmr->n_write )
-		srl_log_printf(NONE, "write,%s,%d,%d,%d\n",
-					   mwmr->name, cpu_cycle_count(),
-					   mwmr->time_write, mwmr->n_write );
-}
-
-void mwmr_clear_stats( struct mwmr_s *mwmr )
-{
-	cpu_dcache_invld_buf(mwmr, sizeof(*mwmr));
-	mwmr->time_read =
-		mwmr->n_read =
-		mwmr->time_write =
-		mwmr->n_write = 0;
-}
-#endif
diff --git a/MPSoC/mutekh/libmwmr/mwmr_soclib_debug_15_12.c b/MPSoC/mutekh/libmwmr/mwmr_soclib_debug_15_12.c
deleted file mode 100644
index 1531c4b40a..0000000000
--- a/MPSoC/mutekh/libmwmr/mwmr_soclib_debug_15_12.c
+++ /dev/null
@@ -1,409 +0,0 @@
-/*
- * This file is part of MutekH.
- * 
- * MutekH is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation; version 2.1 of the License.
- * 
- * MutekH is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with MutekH; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301 USA
- *
- * Copyright (c) UPMC, Lip6, SoC
- *         Nicolas Pouillon <nipo@ssji.net>, 2008
- */
-
-#include <mutek/scheduler.h>
-#include <hexo/types.h>
-#include <hexo/atomic.h>
-#include <hexo/iospace.h>
-#include <hexo/endian.h>
-#include <hexo/interrupt.h>
-#include <string.h>
-#include <mwmr/mwmr.h>
-#include <stdio.h> //DG 08.12.
-#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD)
-# include <srl/srl_sched_wait.h>
-# include <srl/srl_log.h>
-# ifndef SRL_VERBOSITY
-#  define SRL_VERBOSITY VERB_DEBUG
-# endif
-#elif defined(CONFIG_PTHREAD)
-# include <pthread.h>
-#endif
-
-static inline size_t min(size_t a, size_t b)
-{
-	if ( a < b )
-		return a;
-	else
-		return b;
-}
-
-void
-mwmr_hw_init( void *coproc, enum SoclibMwmrWay way,
-			  size_t no, const struct mwmr_s* mwmr )
-{
-	uintptr_t c = (uintptr_t)coproc;
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_FIFO_WAY, endian_le32(way));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_FIFO_NO, endian_le32(no));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_STATUS_ADDR, endian_le32((uintptr_t)mwmr->status));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_DEPTH, endian_le32(mwmr->gdepth));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_BUFFER_ADDR, endian_le32((uintptr_t)mwmr->buffer));
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_WIDTH, endian_le32((uintptr_t)mwmr->width));
-#ifdef CONFIG_MWMR_USE_RAMLOCKS
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_LOCK_ADDR, endian_le32((uintptr_t)mwmr->lock));
-#endif
-	cpu_mem_write_32( c + sizeof(uint32_t) * MWMR_CONFIG_RUNNING, endian_le32(1));
-}
-
-void mwmr_config( void *coproc, size_t no, const uint32_t val )
-{
-	uintptr_t c = (uintptr_t)coproc;
-	cpu_mem_write_32( c + sizeof(uint32_t) * no, val);
-}
-
-uint32_t mwmr_status( void *coproc, size_t no )
-{
-	uintptr_t c = (uintptr_t)coproc;
-	return cpu_mem_read_32( c + sizeof(uint32_t) * no );
-}
-
-static inline void mwmr_lock( struct mwmr_s *fifo )
-{
- printf("##### MWMR LOCK ####");
-#ifdef CONFIG_MWMR_USE_RAMLOCKS
-  printf("##### MWMR USE RAMLOCKS ####");
-	while (*((uint32_t *)fifo->lock) != 0) {
-# if defined(CONFIG_PTHREAD)
-printf("##### MWMR CONFIG_PTHREAD ####");
-		pthread_yield();
-# else
-printf("##### MWMR NON CONFIG_PTHREAD ####");
-		cpu_interrupt_disable();
-		sched_context_switch();
-		cpu_interrupt_enable();
-# endif
-	}
-#else
-# if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD)
-printf("##### MWMR CONFIG_SRL ####");
-	while (cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0)) {
-/* 		cpu_interrupt_disable(); */
-/* 		sched_context_switch(); */
-/* 		cpu_interrupt_enable(); */
-		srl_sched_wait_eq_le(&fifo->status->lock, 0);
-	}
-# elif defined(CONFIG_PTHREAD)
-printf("##### MWMR CONFIG_PTHREAD2 ####");
-
-while (cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0)) {
-		pthread_yield();printf("##### MWMR pthread_yield ####");
-	}
-# else
-printf("##### MWMR ELSE ####");
-	cpu_atomic_bit_waitset((atomic_int_t*)&fifo->status->lock, 0);
-# endif
-#endif
-}
-
-static inline uint32_t mwmr_try_lock( struct mwmr_s *fifo )
-{
-#ifdef CONFIG_MWMR_USE_RAMLOCKS
-	return !!cpu_mem_read_32((uintptr_t)fifo->lock);
-#else
-	return cpu_atomic_bit_testset((atomic_int_t*)&fifo->status->lock, 0);
-#endif
-}
-
-static inline void mwmr_unlock( struct mwmr_s *fifo )
-{
-#ifdef CONFIG_MWMR_USE_RAMLOCKS
-	cpu_mem_write_32((uintptr_t)fifo->lock, 0);
-#else
-    cpu_mem_write_32((uintptr_t)&fifo->status->lock, 0);
-#endif
-}
-
-typedef struct {
-	uint32_t usage, wptr, rptr, modified;
-} local_mwmr_status_t;
-
-static inline void rehash_status( struct mwmr_s *fifo, local_mwmr_status_t *status )
-{
-	struct mwmr_status_s *fstatus = fifo->status;
-	cpu_dcache_invld_buf((void*)fstatus, sizeof(*fstatus));
-	status->usage = endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->usage ));
-    status->wptr =  endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->wptr ));
-    status->rptr =  endian_le32(cpu_mem_read_32( (uintptr_t)&fstatus->rptr ));
-	status->modified = 0;
-	printf("rehash_status : %s rptr %d wptr %d usage %d/depth %d\n", fifo->name, status->rptr, status->wptr, status->usage, fifo->gdepth);
-}
-
-static inline void writeback_status( struct mwmr_s *fifo, local_mwmr_status_t *status )
-{
-    struct mwmr_status_s *fstatus = fifo->status;
-	if ( !status->modified )
-		return;
-	cpu_mem_write_32( (uintptr_t)&fstatus->usage, endian_le32(status->usage) );
-    cpu_mem_write_32( (uintptr_t)&fstatus->wptr, endian_le32(status->wptr) );
-	cpu_mem_write_32( (uintptr_t)&fstatus->rptr, endian_le32(status->rptr) );
-}
-
-void mwmr_read( struct mwmr_s *fifo, void *_ptr, size_t lensw )
-{
-	uint8_t *ptr = _ptr;
-	local_mwmr_status_t status;
-
-        printf("###### MWMR SOCLIB READ 0 #############\n");
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	size_t tot = lensw/fifo->width;
-	uint32_t access_begin = cpu_cycle_count();
-#endif
-
-	mwmr_lock( fifo ); printf("###### MWMR SOCLIB READ 1 #############\n");
-	rehash_status( fifo, &status );
-    while ( lensw ) {printf("lensw %x \n",lensw);
-        size_t len;
-		while ( status.usage < fifo->width ) { //DG 15.12.
-                  printf("status address %x\n", &status);
-                  printf("status.usage %x\n",  status.usage);
-                  printf("fifo->width %x\n", fifo->width);
-
-                  writeback_status( fifo, &status );
-                  mwmr_unlock( fifo ); 
-                  printf("###### MWMR SOCLIB READ 2 #############\n");
-#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD)
-			srl_sched_wait_ge_le(&fifo->status->usage, fifo->width);
-#elif defined(CONFIG_PTHREAD)
-			pthread_yield();
-                        printf("###### MWMR SOCLIB READ 2bis #############\n");
-#else
-			cpu_interrupt_disable();
-			sched_context_switch();
-			cpu_interrupt_enable();
-#endif
-printf("###### MWMR SOCLIB READ 3 #############\n");
-            mwmr_lock( fifo );
-printf("###### MWMR SOCLIB READ 4 #############\n");
-	rehash_status( fifo, &status );
-        } //DG 15.12.
-printf("###### MWMR SOCLIB READ 4a #############\n");
-        while ( lensw && status.usage >= fifo->width ) {
-			void *sptr;
-
-            if ( status.rptr < status.wptr )
-                len = status.usage;
-            else
-                len = (fifo->gdepth - status.rptr);
-            len = min(len, lensw);
-			sptr = &((uint8_t*)fifo->buffer)[status.rptr];
-			cpu_dcache_invld_buf(sptr, len);
-            memcpy( ptr, sptr, len );
-printf("###### MWMR SOCLIB READ 5 #############\n");
-            status.rptr += len;
-            if ( status.rptr == fifo->gdepth )
-                status.rptr = 0;
-            ptr += len;
-            status.usage -= len;
-            lensw -= len;
-			status.modified = 1;
-        }
-    }
-printf("###### MWMR SOCLIB READ 6 #############\n");
-	writeback_status( fifo, &status );
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	cpu_dcache_invld_buf(fifo, sizeof(*fifo));
-	fifo->n_read += tot;
-	fifo->time_read += cpu_cycle_count()-access_begin;
-#endif
- printf("###### MWMR SOCLIB READ 7 #############\n");
-	mwmr_unlock( fifo );
-}
-
-void mwmr_write( struct mwmr_s *fifo, const void *_ptr, size_t lensw )
-{
-	const uint8_t *ptr = _ptr;
-    local_mwmr_status_t status;
-
-printf("###### MWMR SOCLIB WRITE #############\n");
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	size_t tot = lensw/fifo->width;
-	uint32_t access_begin = cpu_cycle_count();
-#endif
-        //printf("###### MWMR SOCLIB WRITE2 #############\n");
-printf(" %x \n",fifo); 
-//printf(" %x \n",fifo->depth);  DG 08.12. c'est ici que ca plante, fifo non initialise??
-printf("###### MWMR SOCLIB WRITE2 #############\n");
-//printf(" %x \n",fifo->lock); DG 08.12. c'est ici que ca plante, on n'a pas d elock!
-        mwmr_lock( fifo );
-       
-printf("###### MWMR SOCLIB WRITE3 #############\n");
-printf("###### MWMR SOCLIB WRITE3b #############\n");
-	rehash_status( fifo, &status );
-    while ( lensw ) {
-        size_t len;
-        while (status.usage >= fifo->gdepth) {
-			writeback_status( fifo, &status );
-            mwmr_unlock( fifo );
-#if defined(CONFIG_SRL) && !defined(CONFIG_PTHREAD)
-			srl_sched_wait_le_le(&fifo->status->usage, fifo->gdepth-fifo->width);
-#elif defined(CONFIG_PTHREAD)
-			pthread_yield();
-#else
-			cpu_interrupt_disable();
-			sched_context_switch();
-			cpu_interrupt_enable();
-#endif
-            mwmr_lock( fifo );
-			rehash_status( fifo, &status );
-        }
-printf("###### MWMR SOCLIB WRITE4 #############\n");
-        while ( lensw && status.usage < fifo->gdepth ) {
-			void *dptr;
-
-            if ( status.rptr <= status.wptr )
-                len = (fifo->gdepth - status.wptr);
-            else
-                len = fifo->gdepth - status.usage;
-            len = min(len, lensw);
-			dptr = &((uint8_t*)fifo->buffer)[status.wptr];
-            memcpy( dptr, ptr, len );
-            status.wptr += len;
-            if ( status.wptr == fifo->gdepth )
-                status.wptr = 0;
-            ptr += len;
-            status.usage += len;
-            lensw -= len;
-			status.modified = 1;
-        }
-    }
-	writeback_status( fifo, &status );
-printf("###### MWMR SOCLIB WRITE5 #############\n");
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	cpu_dcache_invld_buf(fifo, sizeof(*fifo));
-	fifo->n_write += tot;
-	fifo->time_write += cpu_cycle_count()-access_begin;
-#endif
-printf("###### MWMR SOCLIB WRITE6 #############\n");
-	mwmr_unlock( fifo );
-printf("###### MWMR SOCLIB WRITE7 #############\n");
-}
-
-size_t mwmr_try_read( struct mwmr_s *fifo, void *_ptr, size_t lensw )
-{
-	uint8_t *ptr = _ptr;
-	size_t done = 0;
-    local_mwmr_status_t status;
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	uint32_t access_begin = cpu_cycle_count();
-#endif
-
-	if ( mwmr_try_lock( fifo ) )
-		return done;
-	rehash_status( fifo, &status );
-	while ( lensw && status.usage >= fifo->width ) {
-        size_t len;
-		void *sptr;
-
-		if ( status.rptr < status.wptr )
-			len = status.usage;
-		else
-			len = (fifo->gdepth - status.rptr);
-		len = min(len, lensw);
-		sptr = &((uint8_t*)fifo->buffer)[status.rptr];
-		cpu_dcache_invld_buf(sptr, len);
-		memcpy( ptr, sptr, len );
-		status.rptr += len;
-		if ( status.rptr == fifo->gdepth )
-			status.rptr = 0;
-		ptr += len;
-		status.usage -= len;
-		lensw -= len;
-		done += len;
-		status.modified = 1;
-	}
-	writeback_status( fifo, &status );
-	mwmr_unlock( fifo );
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	cpu_dcache_invld_buf(fifo, sizeof(*fifo));
-	fifo->n_read += done/fifo->width;
-	fifo->time_read += cpu_cycle_count()-access_begin;
-#endif
-	return done;
-}
-
-size_t mwmr_try_write( struct mwmr_s *fifo, const void *_ptr, size_t lensw )
-{
-	const uint8_t *ptr = _ptr;
-	size_t done = 0;
-    local_mwmr_status_t status;
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	uint32_t access_begin = cpu_cycle_count();
-#endif
-
-	if ( mwmr_try_lock( fifo ) )
-		return done;
-	rehash_status( fifo, &status );
-	while ( lensw && status.usage < fifo->gdepth ) {
-        size_t len;
-		void *dptr;
-
-		if ( status.rptr <= status.wptr )
-			len = (fifo->gdepth - status.wptr);
-		else
-			len = fifo->gdepth - status.usage;
-		len = min(len, lensw);
-		dptr = &((uint8_t*)fifo->buffer)[status.wptr];
-		memcpy( dptr, ptr, len );
-		status.wptr += len;
-		if ( status.wptr == fifo->gdepth )
-			status.wptr = 0;
-		ptr += len;
-		status.usage += len;
-		lensw -= len;
-		done += len;
-		status.modified = 1;
-    }
-	writeback_status( fifo, &status );
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-	cpu_dcache_invld_buf(fifo, sizeof(*fifo));
-	fifo->n_write += done/fifo->width;
-	fifo->time_write += cpu_cycle_count()-access_begin;
-#endif
-	mwmr_unlock( fifo );
-	return done;
-}
-
-#ifdef CONFIG_MWMR_INSTRUMENTATION
-void mwmr_dump_stats( const struct mwmr_s *mwmr )
-{
-	cpu_dcache_invld_buf(mwmr, sizeof(*mwmr));
-	if ( mwmr->n_read )
-		srl_log_printf(NONE, "read,%s,%d,%d,%d\n",
-					   mwmr->name, cpu_cycle_count(),
-					   mwmr->time_read, mwmr->n_read );
-	if ( mwmr->n_write )
-		srl_log_printf(NONE, "write,%s,%d,%d,%d\n",
-					   mwmr->name, cpu_cycle_count(),
-					   mwmr->time_write, mwmr->n_write );
-}
-
-void mwmr_clear_stats( struct mwmr_s *mwmr )
-{
-	cpu_dcache_invld_buf(mwmr, sizeof(*mwmr));
-	mwmr->time_read =
-		mwmr->n_read =
-		mwmr->time_write =
-		mwmr->n_write = 0;
-}
-#endif
diff --git a/MPSoC/soclib/soclib/platform/topcells/caba-vgmn-mutekh_kernel_tutorial/platform_desc b/MPSoC/soclib/soclib/platform/topcells/caba-vgmn-mutekh_kernel_tutorial/platform_desc
deleted file mode 100644
index 7bb2879a15..0000000000
--- a/MPSoC/soclib/soclib/platform/topcells/caba-vgmn-mutekh_kernel_tutorial/platform_desc
+++ /dev/null
@@ -1,44 +0,0 @@
-
-use =  [
-Uses('caba:vci_locks'),
-Uses('caba:vci_ram'),
-Uses('caba:vci_fdt_rom'),
-Uses('caba:vci_heterogeneous_rom'),
-Uses('caba:vci_multi_tty'),
-Uses('caba:vci_xicu'),
-Uses('caba:vci_block_device'),
-Uses('caba:vci_ethernet'),
-Uses('caba:vci_rttimer'),
-Uses('caba:vci_fd_access'),
-Uses('caba:vci_simhelper'),
-Uses('caba:vci_vgsb'),
-Uses('caba:vci_mwmr_stats'),
-Uses('caba:vci_logger'),
-Uses('caba:vci_local_crossbar'),
-Uses('caba:fifo_virtual_copro_wrapper'),
-Uses('common:elf_file_loader'),
-Uses('common:plain_file_loader'),
-Uses('caba:vci_xcache_wrapper', iss_t = 'common:gdb_iss', gdb_iss_t = 'common:iss_memchecker', iss_memchecker_t = 'common:ppc405'),
-Uses('caba:vci_xcache_wrapper', iss_t = 'common:gdb_iss', gdb_iss_t = 'common:iss_memchecker', iss_memchecker_t = 'common:arm'),
-Uses('caba:vci_xcache_wrapper', iss_t = 'common:gdb_iss', gdb_iss_t = 'common:iss_memchecker', iss_memchecker_t = 'common:mips32eb'),
-Uses('caba:vci_xcache_wrapper', iss_t = 'common:gdb_iss', gdb_iss_t = 'common:iss_memchecker', iss_memchecker_t = 'common:mips32el'),
-Uses('caba:vci_xcache_wrapper', iss_t = 'common:gdb_iss', gdb_iss_t = 'common:iss_memchecker', iss_memchecker_t = 'common:niosII'),
-Uses('caba:vci_xcache_wrapper', iss_t = 'common:gdb_iss', gdb_iss_t = 'common:iss_memchecker', iss_memchecker_t = 'common:lm32'),
-Uses('caba:vci_xcache_wrapper', iss_t = 'common:gdb_iss', gdb_iss_t = 'common:iss_memchecker', iss_memchecker_t = 'common:sparcv8', NWIN=8),
-Uses('caba:vci_xcache_wrapper', iss_t = 'common:gdb_iss', gdb_iss_t = 'common:iss_memchecker', iss_memchecker_t = 'common:sparcv8', NWIN=2),
-  ]
-
-todo = Platform('caba', 'top.cc',
-        uses=use,
-	cell_size = 4,
-	plen_size = 9,
-	addr_size = 32,
-	rerror_size = 1,
-	clen_size = 1,
-	rflag_size = 1,
-	srcid_size = 8,
-	pktid_size = 1,
-	trdid_size = 1,
-	wrplen_size = 1
-)
-
diff --git a/MPSoC/soclib/soclib/platform/topcells/caba-vgmn-mutekh_kernel_tutorial/systemc_64_caba:platform_desc_c24f_236058371c7066fb__top.o b/MPSoC/soclib/soclib/platform/topcells/caba-vgmn-mutekh_kernel_tutorial/systemc_64_caba:platform_desc_c24f_236058371c7066fb__top.o
deleted file mode 100644
index 8475297f6da19e95e8915865a38a78584730e03d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 750808
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%0A{!+2m?%
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%0DL9j
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
R=aeMlk@w&$;xoAD{||+iVzdAN

diff --git a/MPSoC/soclib/soclib/platform/topcells/caba-vgmn-mutekh_kernel_tutorial/top.cc b/MPSoC/soclib/soclib/platform/topcells/caba-vgmn-mutekh_kernel_tutorial/top.cc
deleted file mode 100644
index af437a6aa4..0000000000
--- a/MPSoC/soclib/soclib/platform/topcells/caba-vgmn-mutekh_kernel_tutorial/top.cc
+++ /dev/null
@@ -1,537 +0,0 @@
-//-------------------------------Header------------------------------------
-
-#include <iostream>
-#include <cstdlib>
-#include <vector>
-#include <string>
-#include <stdexcept>
-#include <cstdarg>
-
-#define CONFIG_GDB_SERVER
-#define CONFIG_SOCLIB_MEMCHECK
-
-#include "iss_memchecker.h"
-#include "gdbserver.h"
-
-#include "ppc405.h"
-#include "niosII.h"
-#include "mips32.h"
-#include "arm.h"
-#include "sparcv8.h"
-#include "lm32.h"
-
-#include "mapping_table.h"
-#include "vci_fdt_rom.h"
-#include "vci_xcache_wrapper.h"
-#include "vci_ram.h"
-#include "vci_heterogeneous_rom.h"
-#include "vci_multi_tty.h"
-#include "vci_locks.h"
-#include "vci_xicu.h"
-#include "vci_mwmr_stats.h"
-#include "vci_vgsb.h"
-#include "mwmr_controller.h"
-#include "vci_mwmr_controller.h"
-#include "fifo_virtual_copro_wrapper.h"
-#include "vci_block_device.h"
-#include "vci_simhelper.h"
-#include "vci_fd_access.h"
-#include "vci_ethernet.h"
-#include "vci_rttimer.h"
-#include "vci_logger.h"
-#include "vci_local_crossbar.h"
-
-namespace {
-std::vector<std::string> stringArray(
-	const char *first, ... )
-{
-	std::vector<std::string> ret;
-	va_list arg;
-	va_start(arg, first);
-	const char *s = first;
-	while(s) {
-		ret.push_back(std::string(s));
-		s = va_arg(arg, const char *);
-	};
-	va_end(arg);
-	return ret;
-}
-
-std::vector<int> intArray(
-	const int length, ... )
-{
-	int i;
-	std::vector<int> ret;
-	va_list arg;
-	va_start(arg, length);
-
-	for (i=0; i<length; ++i) {
-		ret.push_back(va_arg(arg, int));
-	};
-	va_end(arg);
-	return ret;
-}
-}
-
-using namespace soclib;
-using common::IntTab;
-using common::Segment;
-
-static common::MappingTable maptab(32, IntTab(8), IntTab(8), 0xfff00000);
-
-typedef caba::VciParams<4,9,32,1,1,1,8,1,1,1> vci_param;// Define our VCI parameters
-
-struct CpuEntry;
-
-
-
-#if defined(CONFIG_GDB_SERVER)
-#  if defined(CONFIG_SOCLIB_MEMCHECK)
-#    warning Using GDB and memchecker
-#    define ISS_NEST(T) common::GdbServer<common::IssMemchecker<T> >
-#  else
-#    warning Using GDB
-#    define ISS_NEST(T) common::GdbServer<T>
-#  endif
-#elif defined(CONFIG_SOCLIB_MEMCHECK)
-#  warning Using Memchecker
-#  define ISS_NEST(T) common::GdbServer<common::IssMemchecker<T> 
-#else
-#  warning Using raw processor
-#  define ISS_NEST(T) T
-#endif
-
-//**********************************************************************
-//               Processor entry and connection code
-//**********************************************************************
-
-#define CPU_CONNECT(n) void (n)(CpuEntry *e, sc_core::sc_clock &clk, \
-sc_core::sc_signal<bool> &rstn, caba::VciSignals<vci_param> &m)
-
-#define INIT_TOOLS(n) void (n)(const common::Loader &ldr)
-
-#define NEW_CPU(n) caba::BaseModule * (n)(CpuEntry *e)
-
-struct CpuEntry { 
-  caba::BaseModule *cpu; 
-  common::Loader *text_ldr;
-  sc_core::sc_signal<bool> *irq_sig;
-  size_t irq_sig_count;
-  std::string type;
-  std::string name;
-  int id;
-  CPU_CONNECT(*connect);
-  INIT_TOOLS(*init_tools);
-  NEW_CPU(*new_cpu);
-};
-
- template <class Iss_>
- CPU_CONNECT(cpu_connect){
-   typedef ISS_NEST(Iss_) Iss;
-   caba::VciXcacheWrapper<vci_param, Iss> *cpu = static_cast<caba::VciXcacheWrapper<vci_param, Iss> *>(e->cpu);
-   cpu->p_clk(clk);
-   cpu->p_resetn(rstn);
-   e->irq_sig_count = Iss::n_irq; 
-   e->irq_sig = new sc_core::sc_signal<bool>[Iss::n_irq];
-  for ( size_t irq = 0; irq < (size_t)Iss::n_irq; ++irq )
-     cpu->p_irq[irq](e->irq_sig[irq]); 
-     cpu->p_vci(m);
-  }
-
-template <class Iss>
-INIT_TOOLS(initialize_tools){
-#if defined(CONFIG_GDB_SERVER)
-ISS_NEST(Iss)::set_loader(ldr);
-#endif
-#if defined(CONFIG_SOCLIB_MEMCHECK)
- common::IssMemchecker<Iss>::init(maptab, ldr, "vci_multi_tty0,vci_xicu,vci_block_device,vci_fd_acccess,vci_ethernet,vci_fdt_rom,vci_rttimer");
-#endif
-}
-
-template <class Iss>
-NEW_CPU(new_cpu){
-return new caba::VciXcacheWrapper<vci_param, ISS_NEST(Iss)>(e->name.c_str(), e->id, maptab, IntTab(e->id),4,4,4,4,4,4);
-}
-
-/***************************************************************************
---------------------Processor creation code-------------------------
-***************************************************************************/
-
-template <class Iss> 
-  CpuEntry * newCpuEntry_(CpuEntry *e){
-  e->new_cpu = new_cpu<Iss>;
-  e->connect = cpu_connect<Iss>;
-  e->init_tools = initialize_tools<Iss>;
-  return e;
-}
-
- struct CpuEntry * newCpuEntry(const std::string &type, int id, common::Loader *ldr) {
-  CpuEntry *e = new CpuEntry;
-  std::ostringstream o;
-  o << type << "_" << id; 
-
-  e->cpu = 0;
-  e->text_ldr = ldr;
-  e->type = type;
-  e->name = o.str();
-  e->id = id; 
-
-  switch (type[0]) {
-    case 'm':
-      if (type == "mips32el")
-      return newCpuEntry_<common::Mips32ElIss>(e);
-      else if (type == "mips32eb")
-      return newCpuEntry_<common::Mips32EbIss>(e);
-
-    case 'a':
-      if (type == "arm")
-	     return newCpuEntry_<common::ArmIss>(e);
-   case 'n':
-     if (type == "nios2")
-	    return newCpuEntry_<common::Nios2fIss>(e);
-
-   case 'p':
-     if (type == "ppc")return newCpuEntry_<common::Ppc405Iss>(e);
-
-    case 's':
-      if (type == "sparc")
-	     return newCpuEntry_<common::Sparcv8Iss<8> >(e);
-      else if (type == "sparc_2wins")
-	     return newCpuEntry_<common::Sparcv8Iss<2> >(e);
-
-    case 'l':
-      if (type == "lm32")
-	     return newCpuEntry_<common::LM32Iss<true> >(e);
- } 
-
- throw std::runtime_error(type + ": wrong processor type"); 
-}
-
-//**********************************************************************
-//                     Args parsing and netlist
-
-//**********************************************************************
-
-int _main(int argc, char **argv)
-{
-
- // Avoid repeating these everywhere
-  std::vector<CpuEntry*> cpus;
-  common::Loader data_ldr;
-  data_ldr.memory_default(0x5a);
-
-
-//-----------------------mapping table------------------------
-
-// ppc segments
-
-maptab.add(Segment("resetppc",  0xffffff80, 0x0080, IntTab(1), true));
-maptab.add(Segment("resetnios", 0x00802000, 0x1000, IntTab(1), true));
-maptab.add(Segment("resetzero", 0x00000000, 0x1000, IntTab(1), true));
-maptab.add(Segment("resetmips", 0xbfc00000, 0x1000, IntTab(1), true));
-
-
-// RAM segments
-
-maptab.add(Segment("text", 0x60000000, 0x00100000, IntTab(0), true));
-maptab.add(Segment("rodata", 0x80000000, 0x01000000, IntTab(1), true));
-maptab.add(Segment("data", 0x7f000000, 0x01000000, IntTab(2), false)); 
-
-maptab.add(Segment("simhelper", 0xd3200000, 0x00000100, IntTab(3), false));
- maptab.add(Segment("vci_xicu", 0xd2200000, 0x00001000, IntTab(4), false));
-maptab.add(Segment("vci_rttimer", 0xd6000000, 0x00000100, IntTab(5), false));
-
-maptab.add(Segment("vci_fdt_rom", 0xe0000000, 0x00001000, IntTab(6), false));
-
-maptab.add(Segment("cram0", 0x10000000, 0x80000, IntTab(2), true));
-maptab.add(Segment("uram0", 0x10280000, 0x80000, IntTab(2), false));
-maptab.add(Segment("vci_multi_tty0" , 0xd0200000, 0x00000010, IntTab(7), false));
-maptab.add(Segment("vci_fd_access", 0xd4200000, 0x00000100, IntTab(8), false));
-maptab.add(Segment("vci_ethernet",  0xd5000000, 0x00000020, IntTab(9), false));
-maptab.add(Segment("vci_block_device", 0xd1200000, 0x00000020, IntTab(10), false));
-
-maptab.add(Segment("vci_locks", 0xC0200000, 0x00000100, IntTab(11), false));
-
-
-
-//-------------------------Call Loader---------------------------------
-
-std::cerr << "caba-vgmn-mutekh_kernel_tutorial SoCLib simulator for MutekH" << std::endl;
-
-if ( (argc < 2) || ((argc % 2) == 0) ) {
-exit(0);   }
-  argc--;
-  argv++;
-
-bool heterogeneous = (argc > 2);
-
-  for (int i = 0; i < (argc - 1); i += 2){
-    char *cpu_p = argv[i];
-    const char *kernel_p = argv[i+1];
-    const char *arch_str = strsep(&cpu_p, ":");
-    int count = cpu_p ? atoi(cpu_p) : 1;
-    common::Loader *text_ldr; 
-    if (heterogeneous) {
-	 text_ldr = new common::Loader(std::string(kernel_p) + ";.text");
-	 text_ldr->memory_default(0x5a);;
-	 data_ldr.load_file(std::string(kernel_p) + ";.rodata;.boot;.excep");
-	 if (i == 0)
-	    data_ldr.load_file(std::string(kernel_p) + ";.data;.channel0;.channel1;.channel2;.channel3;.channel4;.channel5;.channel6;.channel7;.channel8;.channel9;.channel10;.channel11;.channel12;.channel13;.channel14;.channel15;.channel16;.channel17;.channel18;.channel19;.channel20;.channel21;.channel22;.channel23;.channel24;.channel25;.channel26;.channel27;.channel28;.cpudata;.contextdata");
-      } else {
-	  text_ldr = new common::Loader(std::string(kernel_p));
-	  text_ldr->memory_default(0x5a);
-	  data_ldr.load_file(std::string(kernel_p));
-      }
-
-      common::Loader tools_ldr(kernel_p);
-     tools_ldr.memory_default(0x5a);
-
-      for (int j = 0; j < count; j++) {
-	int id = cpus.size();
-	std::cerr << "***" << cpus.size() << std::endl;
-	CpuEntry *e = newCpuEntry(arch_str, id, text_ldr);
-	if (j == 0)
-	  e->init_tools(tools_ldr);
-	e->cpu = e->new_cpu(e);
-	cpus.push_back(e);
-      }
-    }
-
-  const size_t xicu_n_irq = 5;
-
-//----------------------------Instantiation-------------------------------
-
-
-caba::VciHeterogeneousRom<vci_param> vcihetrom("vcihetrom",  IntTab(0), maptab);
-caba::VciRam<vci_param> vcirom("vcirom", IntTab(1), maptab, data_ldr);
- caba::VciSimhelper<vci_param> vcisimhelper    ("vcisimhelper", IntTab(3), maptab);
-caba::VciXicu<vci_param> vcixicu("vci_xicu", maptab, IntTab(4), 1, xicu_n_irq, cpus.size(), cpus.size());
-caba::VciRtTimer<vci_param> vcirttimer    ("vcirttimer", IntTab(5), maptab, 1, true);
-
-caba::VciFdtRom<vci_param> vcifdtrom("vci_fdt_rom", IntTab(6), maptab);
-caba::VciMultiTty<vci_param> TTY0("TTY0", IntTab(7), maptab, "vci_multi_tty0", NULL);
-caba::VciLocks<vci_param> vcilocks("vcilocks", IntTab(11), maptab);
-soclib::caba::VciRam<vci_param>Memory0("Memory0", IntTab(2), maptab);
-caba::VciFdAccess<vci_param> vcifd("vcifd", maptab, IntTab(cpus.size()+1), IntTab(8));
-caba::VciEthernet<vci_param> vcieth("vcieth", maptab, IntTab(cpus.size()+2), IntTab(9), "soclib0");
-caba::VciBlockDevice<vci_param> vcibd("vcibd", maptab, IntTab(cpus.size()), IntTab(10),"block0.iso", 2048);
-soclib::caba::VciVgsb<vci_param> vgsb("Bus0" , maptab,5,12);
-
-soclib::caba::VciMwmrStats<vci_param> mwmr_stats0("mwmr_stats0",maptab, data_ldr, "mwmr0.log",stringArray("TCPIP_receiveTCP__Application_receiveTCP","TCPPacketManager_storePacket__TCPPacketManager_retrieve","TCPIP_timeoutPacket__TCPPacketManager_timeoutPacket","TCPIP_emptyListOfPackets__TCPPacketManager_empty","TCPIP_addPacket__TCPPacketManager_addPacket","TCPIP_ackPacket__TCPPacketManager_ackPacket","Application_open__TCPIP_open","Application_close__TCPIP_close","Application_abort__TCPIP_abort","Application_sendTCP__TCPIP_send_TCP","SmartCardController_fromTtoP__TCPIP_fromTtoP","SmartCardController_fromPtoT__TCPIP_fromPtoT","SmartCardController_start_TCPIP__TCPIP_start","SmartCardController_reset__InterfaceDevice_reset","SmartCardController_pTS__InterfaceDevice_pTS","SmartCardController_dataReady__InterfaceDevice_data_Ready","SmartCardController_activation__InterfaceDevice_activation","SmartCardController_fromDtoSC__InterfaceDevice_fromDtoSC","SmartCardController_answerToReset__InterfaceDevice_answerToReset","SmartCardController_pTSCConfirm__InterfaceDevice_pTSConfirm","SmartCardController_fromSCtoD__InterfaceDevice_fromSCtoD","SmartCardController_data_Ready_SC__InterfaceDevice_dataReady","SmartCardController_start_Application__Application_startApplication","TCPIP_set__mainTimer__Timer__mainTimer__TCPIP_set","TCPIP_reset__mainTimer__Timer__mainTimer__TCPIP_reset","TCPIP_expire__mainTimer__Timer__mainTimer__TCPIP_expire","TCPPacketManager_set__timerP__Timer__timerP__TCPPacketManager_set","TCPPacketManager_reset__timerP__Timer__timerP__TCPPacketManager_reset","TCPPacketManager_expire__timerP__Timer__timerP__TCPPacketManager_expire",NULL));
-
-
-
-//-------------------------------signaux------------------------------------
-
-caba::VciSignals<vci_param> signal_vci_m[cpus.size() + 1];
-caba::VciSignals<vci_param> signal_vci_xicu("signal_vci_xicu");
-caba::VciSignals<vci_param> signal_vci_vcifdtrom("signal_vci_vcifdtrom");
- caba::VciSignals<vci_param> signal_vci_vcihetrom("signal_vci_vcihetrom");
- caba::VciSignals<vci_param> signal_vci_vcirom("signal_vci_vcirom");
- caba::VciSignals<vci_param> signal_vci_vcisimhelper("signal_vci_vcisimhelper");
-caba::VciSignals<vci_param> signal_vci_vcirttimer("signal_vci_vcirttimer");
-caba::VciSignals<vci_param> signal_vci_vcilocks("signal_vci_vcilocks");
-caba::VciSignals<vci_param> signal_vci_vcifdaccessi;
-caba::VciSignals<vci_param> signal_vci_vcifdaccesst;
-caba::VciSignals<vci_param> signal_vci_bdi;
-caba::VciSignals<vci_param> signal_vci_bdt;
-caba::VciSignals<vci_param> signal_vci_etherneti;
-caba::VciSignals<vci_param> signal_vci_ethernett;
-
-sc_clock signal_clk("signal_clk");
-sc_signal<bool>  signal_resetn("signal_resetn");
-
- sc_core::sc_signal<bool> signal_xicu_irq[xicu_n_irq];
-
-soclib::caba::VciSignals<vci_param> signal_vci_vciram0("signal_vci_vciram0");
-
-soclib::caba::VciSignals<vci_param> signal_vci_tty0("signal_vci_tty0");
-
-
-
-//------------------------------Netlist---------------------------------
-
-// icu
-
-  vcifdtrom.add_property("interrupt-parent", vcifdtrom.get_device_phandle("vci_xicu"));
-
-  vcixicu.p_clk(signal_clk);
-  vcixicu.p_resetn(signal_resetn);
-
-  vcixicu.p_vci(signal_vci_xicu);
-
-  vcifdtrom.begin_device_node("vci_rttimer", "soclib:vci_rttimer");
-  vcifdtrom.add_property("interrupts", 4);
-  vcifdtrom.add_property("frequency", 1000000);
-  vcifdtrom.end_node();
-
-  vcifdtrom.begin_device_node("vci_xicu", "soclib:vci_xicu");
-
-  int irq_map[cpus.size() * 3];
-  for ( size_t i = 0; i < cpus.size(); ++i )
-    {
-      irq_map[i*3 + 0] = i;
-      irq_map[i*3 + 1] = vcifdtrom.get_cpu_phandle(i);
-      irq_map[i*3 + 2] = 0;
-    }
-
-  vcifdtrom.add_property("interrupt-map", irq_map, cpus.size() * 3);
-  vcifdtrom.add_property("frequency", 1000000);
-
-  vcifdtrom.add_property("param-int-pti-count", 1);
-  vcifdtrom.add_property("param-int-hwi-count", xicu_n_irq);
-  vcifdtrom.add_property("param-int-wti-count", cpus.size());
-  vcifdtrom.add_property("param-int-irq-count", cpus.size());
-  vcifdtrom.end_node();
-
-  for ( size_t i = 0; i < xicu_n_irq; ++i )
-    vcixicu.p_hwi[i](signal_xicu_irq[i]);
-
-///////////////// cpus
-
-vcifdtrom.begin_cpus();
-
-for ( size_t i = 0; i < cpus.size(); ++i ){
-   // configure het_rom
-  vcihetrom.add_srcid(*cpus[i]->text_ldr, IntTab(i));
-  // add cpu node to device tree
-  vcifdtrom.begin_cpu_node(std::string("cpu:") + cpus[i]->type, i);
-  vcifdtrom.add_property("freq", 1000000);
-  vcifdtrom.end_node();
-
-// connect cpu
-  cpus[i]->connect(cpus[i], signal_clk, signal_resetn, signal_vci_m[i]);
-vgsb.p_to_initiator[i](signal_vci_m[i]);
-vcixicu.p_irq[i](cpus[i]->irq_sig[0]);
- }
- vcifdtrom.end_node();
-
-  vcihetrom.p_clk(signal_clk);
-  vcifdtrom.p_clk(signal_clk);
-  vcirom.p_clk(signal_clk);
-  vcisimhelper.p_clk(signal_clk);
-  vcirttimer.p_clk(signal_clk);
-  vcihetrom.p_resetn(signal_resetn);
-  vcifdtrom.p_resetn(signal_resetn);
-  vcirom.p_resetn(signal_resetn);
-  vcisimhelper.p_resetn(signal_resetn);
-  vcirttimer.p_resetn(signal_resetn);
-  vcihetrom.p_vci(signal_vci_vcihetrom);
-  vcifdtrom.p_vci(signal_vci_vcifdtrom);
-  vcirom.p_vci(signal_vci_vcirom);
-  vcisimhelper.p_vci(signal_vci_vcisimhelper);
-  vcirttimer.p_vci(signal_vci_vcirttimer);
-  vcirttimer.p_irq[0](signal_xicu_irq[4]);
-
- vgsb.p_clk(signal_clk);
-  vgsb.p_resetn(signal_resetn);
-  vgsb.p_to_target[0](signal_vci_vcihetrom);
-  vgsb.p_to_target[1](signal_vci_vcirom);
-  vgsb.p_to_target[3](signal_vci_vcisimhelper);
-
-  vgsb.p_to_target[4](signal_vci_xicu);
-  vgsb.p_to_target[5](signal_vci_vcirttimer);
-
-  vgsb.p_to_target[6](signal_vci_vcifdtrom);
-
-  vgsb.p_to_initiator[cpus.size()](signal_vci_bdi);
-  vgsb.p_to_initiator[cpus.size()+1](signal_vci_vcifdaccessi);
-  vgsb.p_to_initiator[cpus.size()+2](signal_vci_etherneti);
-
-// RAM netlist
-
-Memory0.p_clk(signal_clk);
-Memory0.p_resetn(signal_resetn);
-Memory0.p_vci(signal_vci_vciram0);
-
-vgsb.p_to_target[2](signal_vci_vciram0);
-
-vgsb.p_to_target[8](signal_vci_vcifdaccesst);
-vgsb.p_to_target[9](signal_vci_ethernett);
-vgsb.p_to_target[10](signal_vci_bdt);
-vcifdtrom.add_property("interrupts", 0);
-
-vcifdtrom.end_node();;
-
-// TTY netlist
-
-TTY0.p_clk(signal_clk);
-TTY0.p_resetn(signal_resetn);
-TTY0.p_vci(signal_vci_tty0);
-
-vcifdtrom.begin_device_node("vci_multi_tty0","soclib:vci_multi_tty0");
-
-vgsb.p_to_target[7](signal_vci_tty0);
-
-TTY0.p_irq[0](signal_xicu_irq[0]);
-
-{
-
-  vcifdtrom.begin_node("aliases");
-  vcifdtrom.add_property("timer", vcifdtrom.get_device_name("vci_rttimer") + "[0]");
-  vcifdtrom.add_property("console", vcifdtrom.get_device_name("vci_multi_tty0") + "[0]");
-  vcifdtrom.end_node();
-}
-
-vcieth.p_clk(signal_clk);
-vcieth.p_resetn(signal_resetn);
-vcieth.p_irq(signal_xicu_irq[3]);
-vcieth.p_vci_target(signal_vci_ethernett);
-vcieth.p_vci_initiator(signal_vci_etherneti);
-vcifdtrom.begin_device_node("vci_ethernet", "soclib:vci_ethernet");
-vcifdtrom.add_property("interrupts", 3);
-vcifdtrom.end_node();
-vcibd.p_clk(signal_clk);
-vcibd.p_resetn(signal_resetn);
-vcibd.p_irq(signal_xicu_irq[1]);
-vcibd.p_vci_target(signal_vci_bdt);
-vcibd.p_vci_initiator(signal_vci_bdi);
-vcifdtrom.begin_device_node("vci_block_device", "soclib:vci_block_device");
-vcifdtrom.add_property("interrupts", 1);
-vcifdtrom.end_node();
-vcihetrom.add_srcid(*cpus[0]->text_ldr, IntTab(cpus.size()+1));
-vcifd.p_clk(signal_clk);
-vcifd.p_resetn(signal_resetn);
-vcifd.p_irq(signal_xicu_irq[2]);
-vcifd.p_vci_target(signal_vci_vcifdaccesst);
-vcifd.p_vci_initiator(signal_vci_vcifdaccessi);
-vcifdtrom.begin_device_node("vci_fd_access", "soclib:vci_fd_access");
-vcifdtrom.add_property("interrupts", 2);
-vcifdtrom.end_node();
-
-mwmr_stats0.p_clk(signal_clk);
-mwmr_stats0.p_resetn(signal_resetn);
-mwmr_stats0.p_vci(signal_vci_vciram0);
-
-  sc_core::sc_start(sc_core::sc_time(0, sc_core::SC_NS));
-  signal_resetn = false;
-  sc_core::sc_start(sc_core::sc_time(1, sc_core::SC_NS));
-  signal_resetn = true;
-  sc_core::sc_start();
-
-  return EXIT_SUCCESS;
-}
-
-
-
-
-/***************************************************************************
-----------------------------simulation-------------------------
-***************************************************************************/
-
-int sc_main (int argc, char *argv[])
-{
-       try {
-         return _main(argc, argv);
-    }
-
-       catch (std::exception &e) {
-            std::cout << e.what() << std::endl;
-            throw;
-    } catch (...) {
-std::cout << "Unknown exception occured" << std::endl;
-throw;
-}
-
-       return 1;
-}
\ No newline at end of file
diff --git a/MPSoC/soclib/utils/lib/python/sd_parser/__init__.pyc b/MPSoC/soclib/utils/lib/python/sd_parser/__init__.pyc
deleted file mode 100644
index fd054dafef516aaa766ab13366326f5cbd80c942..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 165
zcmcckiI;1y8f$bi0~9a<X$K%KW&si@3=F{<AQ3+eAi;n}6#D_i^h=9Vi;DGA^NLe5
z)AiF+^D;||^+Q7P^K<ll1A_CN^^5b9b25|kOG`3yiuFOPg36MN{5<{Ql=y<gBA{md
g`1s7c%#!$cJ)jH+&`6uy{FKt1R6CHx#X!se019F#82|tP

diff --git a/MPSoC/soclib/utils/lib/python/sd_parser/component_builder.pyc b/MPSoC/soclib/utils/lib/python/sd_parser/component_builder.pyc
deleted file mode 100644
index 551508ea59049b57675fe1085801960c24366468..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 10052
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

diff --git a/MPSoC/soclib/utils/lib/python/sd_parser/module.pyc b/MPSoC/soclib/utils/lib/python/sd_parser/module.pyc
deleted file mode 100644
index d0d0936d5286aae926e0bb78919ac6f8d426af32..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 13929
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

diff --git a/MPSoC/soclib/utils/lib/python/sd_parser/platform.pyc b/MPSoC/soclib/utils/lib/python/sd_parser/platform.pyc
deleted file mode 100644
index d745bc66d5bd1ad90032da8e63d219ae65bdef1b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 4317
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

diff --git a/MPSoC/soclib/utils/lib/python/sd_parser/sd.pyc b/MPSoC/soclib/utils/lib/python/sd_parser/sd.pyc
deleted file mode 100644
index dc5d01a2409b10d639937535a6c05576576b9c10..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2799
zcmcImUvC>l5T8B&tKFsztw^a5(gIRtq{v1*@lX&nQQ@T}y0j`3Rmb{nW3PO<Gq-D!
zNXb)p<{QCx;H&Tj;5W05ld2L=>B+mdJ3BiwH-CQPzyH}7{Q0o+b55(LjrTVg{wquc
zev0NqrJ`4gRFP28qoPH>6P*+N^a}enSw#nmiq4waqM}Rt!yAy`{>3v?ScO}dp4wmv
z6U-A=S|RK-)`Ys*YwF{ZwGGVv7{hB!mRL0`VP%SSyn_5h7HvxRhb`uOjXML4=UcsC
zSvoI`_xfn&@|iwzWvQn&=rFT7H)ZK{sP)sjSeABM@6}D%wRyQM_eY}<ZrMsNOygZO
z)kcqep$}m2NI#!BzmhL9t2(%Y6Ba9XS@gu@bJ0^kq-jiWb){!!v9OgbMg!p!F_3gv
z`%s=h19)q&*3GtdLFe_dEcC?UXO>U^D+@MwW~!o$nu<F2p@Df`<FibOJ56JANZZzv
zB`BT+`I$(9l`PFwegPI+hz+g^wlR5dzgfN%_{-kpH<fnYFYPFP8@riDg0aIc-@<gN
z=#(hKB9R3Gr4V`M@xNe_s~ncKYs7D`MqKCcVfBH|GCs~SzrBjiifMhDL(05x!W?mp
z7O~i8qAJ{ns_beiMTs1XaPRFimLX{q+Bo#KJP4et7d8r2ctE5fPyTyM<E6KaAKS`X
zHyuxH<(7W@{CQoM<EMN3_0HJWdFdu&#H{pVUM)_-tggns$T*v9gVhK$R+eS1av{rZ
zvvf9tI(?OM=JSRf{R4*o6caq`qN@}7gXpX!6nMTx=O{|N_NBsvdF`{^TGDW4nnEAd
z&HU17;<J=hq#URrD@=Kk4>!%!hc0&WBU!RZjX2?*c_K#teJJv*nA&&Mh8lLTTDht+
zhc?T?0F*2{l)A;XCtH+4mZiK-Z(_Q%^!m+BFTx{ccKcn`?}@AS3kI|t>g8d!#~2cj
zHGWNjq5lVA91uWF&M~=x(Z|@q@PA=KSpoAR5}zeNV(eQqPpE8hLZ}(?qD{w#T!^ks
zyRRp7)}hdm!tBs_LT6n%*&>*GiXWJILhRAYYJ-$g@bp=aDn&n@_Nd+>75ZG=ZovHU
zIt~?IZqsRp9{u_`y<|BznSd_v2zkgW9C5<ll1&$zHqw*B<3YXz1gTaFAO<8)%X(q}
z%7p_S)s<;Z^g-Qddu;RJXKM_O@Vn0MoI3{u069cRWpnF2-@O6^&RzkFE4_%*Eap+{
zP3&uwDAEk5C}r@%Tc5rMa>{*cxPb{C!B<?=a=OVRPPth2Sz&!HH&%%$kS1%i9uq<%
z`OA<xk>(_s6Ppm?MDzqMu##eOA}ymx@3Iyy&V>mxX{oVPS@Eh8O6P-E6SXt*w49WI
z)36d*N3MVkBIc+ui_03hUR+~$p+4t(0(RfUsD2Eh{{$0tHr1x;CIjlKJF2C&Fb1lJ
z_idE>0OJk#lLGnz*QQ8qX)_T70eL6@&i5Ao^Wa=d7zeonwde(MHlpFPi0~gkLKf@u
zEz`sy+}YC)!F2@(IbEZ3efkmB!dL>`-<9V$nuyQ}+x(Z<dPX}^?5nQ27vWHHF_m28
zQ+piHj8HK?We2AZF<n|Ht7{E#dIt*F9})kOe$v1HEGm@t@qmw{2TC!FP)+i0FB2c*
bkR-iD%)7Kxy2hgzz^@rjrNM3{_a6KQAqbp%

diff --git a/MPSoC/soclib/utils/lib/python/sd_parser/specialization.pyc b/MPSoC/soclib/utils/lib/python/sd_parser/specialization.pyc
deleted file mode 100644
index 7dfff1a2469e0b3db16675b73ab9be8086dd6d08..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 13924
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

diff --git a/MPSoC/soclib/utils/lib/python/soclib_builder/__init__.pyc b/MPSoC/soclib/utils/lib/python/soclib_builder/__init__.pyc
deleted file mode 100644
index 3c5bd76e437c198c1bceb37d61777cb0a420cc69..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 170
zcmcckiI;1y8f$bi0~9a<X$K%KW&si@3=F{<AQ3+eAi;n}6bA#v^h=9Vi;DGA^NLe5
z)AiF+^D;||^+Q7P^K<ll1A_CN^^5b9b25|kOG`3yiuFOPg36MN{5+_5d{Sv<PD*N#
hetdjpUS>&rydF@R18A;IZhlH>PO2Tq_F^Dr008v0Djfg-

diff --git a/MPSoC/soclib/utils/lib/python/soclib_builder/action.py b/MPSoC/soclib/utils/lib/python/soclib_builder/action.py
deleted file mode 100644
index e669eaf915..0000000000
--- a/MPSoC/soclib/utils/lib/python/soclib_builder/action.py
+++ /dev/null
@@ -1,291 +0,0 @@
-
-# SOCLIB_GPL_HEADER_BEGIN
-# 
-# This file is part of SoCLib, GNU GPLv2.
-# 
-# SoCLib is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; version 2 of the License.
-# 
-# SoCLib is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with SoCLib; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA.
-# 
-# SOCLIB_GPL_HEADER_END
-
-import os
-import os.path
-import time
-import sys
-import select
-import tempfile
-import operator
-try:
-    from functools import reduce
-except:
-    pass
-
-from soclib_cc.config import config
-import command
-
-__author__ = 'Nicolas Pouillon, <nipo@ssji.net>'
-__copyright__ = 'UPMC, Lip6, SoC, 2007-2010'
-__license__ = 'GPL-v2'
-__id__ = "$Id: action.py 1750 2010-05-26 09:49:35Z nipo $"
-__version__ = "$Revision: 1750 $"
-
-__all__ = ['Action', 'ActionFailed', 'NotFound', 'Noop']
-
-class NotFound(Exception):
-    pass
-
-class ActionFailed(Exception):
-    def __init__(self, rval, action):
-        Exception.__init__(self, "%s failed: %s"%(action, rval))
-        self.rval = rval
-        self.action = action
-
-def get_times(files, default, cmp_func, ignore_absent):
-    most_time = default
-    for f in files:
-        if f.exists():
-            most_time = cmp_func((f.last_mod, most_time))
-        else:
-            if ignore_absent:
-                continue
-            else:
-                raise NotFound, f
-    return most_time
-
-def merge_hash(objs):
-    return hash(reduce(
-        lambda x,y:(x + (y<<1)),
-        map(hash, objs),
-        0))
-
-get_newest = lambda files, ignore_absent: get_times(files, 0, max, ignore_absent)
-get_oldest = lambda files, ignore_absent: get_times(files, time.time(), min, ignore_absent)
-
-def check_exist(files):
-    return reduce(operator.and_, map(lambda x:x.exists(), files), True)
-
-class Action:
-    priority = 0
-    info_code = ' '
-    
-    WORKING = 'Work'
-    TODO = 'Todo'
-    DONE = 'Done'
-    FAILED = 'Failed'
-    BLOCKED = 'Blocked'
-
-    def __init__(self, dests, sources, **options):
-        from bblock import bblockize, BBlock, AnonymousBBlock
-        if not dests:
-            self.dests = [AnonymousBBlock(self)]
-        else:
-            self.dests = bblockize(dests, self)
-        self.sources = bblockize(sources)
-        self.options = options
-        
-        self.__hash = merge_hash(self.dests+self.sources)
-
-        self.__state = self.TODO
-        self.__depends = []
-        self.__commands = []
-        
-        map(lambda x:x.addUser(self), self.sources)
-
-    def prepare(self):
-        import fileops
-        for outdir in self.dests:
-            d = os.path.dirname(str(self.dests[0]))
-            if d:
-                self.add_depends(*fileops.CreateDir(d).dests)
-
-        self.__state = [self.TODO, self.DONE][self.is_valid()]
-
-        self.prepare = lambda :None
-
-    def is_valid(self):
-        try:
-            newest_dep = 0
-            oldest_dest = time.time()
-            for d in self.__depends + self.sources:
-                if d.is_dir():
-                    continue
-                if not d.exists():
-                    return False
-                newest_dep = max((newest_dep, d.mtime()))
-            for d in self.dests:
-                if not d.exists():
-                    return False
-                oldest_dest = min((oldest_dest, d.mtime()))
-            
-            return oldest_dest >= newest_dep
-        except NotFound:
-            return False
-
-    # Called by children to add things
-
-    def add_depends(self, *deps):
-        map(lambda x:x.addUser(self), deps)
-
-        self.__depends += list(deps)
-
-    def run_command(self, cmd, cwd = None):
-        if isinstance(cmd, (str, unicode)):
-            raise ValueError("cmd must be a list of string")
-
-        cmd = command.Command(cmd,
-                              cwd = cwd,
-                              on_done = self.__set_done)
-        self.__commands.append(cmd)
-
-    def create_file(self, f_bblock, contents):
-        cmd = command.CreateFile(str(f_bblock), contents,
-                                 on_done = self.__set_done)
-        self.__commands.append(cmd)
-
-    # Called by children to process synchronously
-
-    def process(self):
-        self.prepare()
-
-        if config.debug:
-            print 'Synchronously processing', self,
-        if self.__state == self.DONE:
-            if config.debug:
-                print 'already done'
-            return
-
-        for d in list(self.__depends) + list(self.sources):
-            if d.generator.__state != self.DONE:
-                d.generator.process()
-
-        if config.debug:
-            print 'launching...', self.__commands
-        self.todo_launch(True)
-
-    # Private subprocess handling
-
-    def stdout_reformat(self, msg):
-        '''
-        Reformat stdout, to make error messages of specific tools
-        compatible with what is parsed by usual compilation tools.
-        '''
-        return msg
-
-    def stderr_reformat(self, msg):
-        '''
-        Reformat stderr, to make error messages of specific tools
-        compatible with what is parsed by usual compilation tools.
-        '''
-        return msg
-
-    def __set_done(self, cmd, returncode, out, err):
-
-        if out:
-            out = self.stdout_reformat(out)
-            sys.stdout.write('\n')
-            sys.stdout.write(out)
-
-        if err:
-            err = self.stderr_reformat(err)
-            sys.stderr.write('\n')
-            sys.stderr.write(err)
-
-        if returncode:
-            self.__state = self.FAILED
-            if returncode == -2: # sigint
-                raise KeyboardInterrupt()
-            raise ActionFailed(returncode, cmd.command)
-
-        for d in self.dests:
-            d.touch()
-
-        self.__next()
-
-    def __next(self):
-        if len(self.__commands) == self.__cpt:
-            self.__state = self.DONE
-            return
-        cmd = self.__commands[self.__cpt]
-        self.__cpt += 1
-
-        cmd.run(self.__sync)
-
-    # Todo API
-
-    def todo_launch(self, synchronous = False):
-        self.__cpt = 0
-        self.__state = self.WORKING
-        self.__sync = synchronous
-        self.__next()
-
-    def todo_state(self):
-        return self.__state
-
-    def todo_can_be_processed(self):
-        if not check_exist(self.sources):
-            self.__state = self.BLOCKED
-            return False
-        for d in list(self.__depends) + list(self.sources):
-            if d.generator.__state != self.DONE:
-                self.__state = self.BLOCKED
-                return False
-        self.__state = self.TODO
-        return True
-
-    def why_blocked(self):
-        print self, 'blocked because'
-        if not check_exist(self.sources):
-            print "not all sources"
-        for d in list(self.__depends) + list(self.sources):
-            if d.generator.__state != self.DONE:
-                print d.generator, "not ready:", d.generator.__state
-
-    def todo_get_depends(self):
-        return list(self.__depends) + list(self.sources)
-
-    def todo_clean(self):
-        for i in self.dests:
-            i.delete()
-
-    def source_changed(self):
-        self.todo_can_be_processed()
-
-    # Helpers
-
-    def __hash__(self):
-        return self.__hash
-
-    def __eq__(self, other):
-        return self.__class__ is other.__class__ and \
-               set(self.sources) == set(other.sources) and \
-               set(self.dests) == set(other.dests)
-
-    def __str__(self):
-        import bblock
-        l = lambda x:map(repr, x)
-        return "<%s: %s -> %s + %s>"%(
-            self.__class__.__name__,
-            l(self.sources),
-            l(self.dests),
-            l(self.__depends),
-            )
-            
-
-class Noop(Action):
-
-    def __init__(self):
-        Action.__init__(self, [], [])
-
-    def is_valid(self):
-        return True
diff --git a/MPSoC/soclib/utils/lib/python/soclib_builder/action.pyc b/MPSoC/soclib/utils/lib/python/soclib_builder/action.pyc
deleted file mode 100644
index 4a159ace62be47d4143464a23fbab9a8b39dca98..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 12558
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
F^gqQ#e4hXS

diff --git a/MPSoC/soclib/utils/lib/python/soclib_builder/bblock.py b/MPSoC/soclib/utils/lib/python/soclib_builder/bblock.py
deleted file mode 100644
index 51053207ce..0000000000
--- a/MPSoC/soclib/utils/lib/python/soclib_builder/bblock.py
+++ /dev/null
@@ -1,208 +0,0 @@
-
-# SOCLIB_GPL_HEADER_BEGIN
-# 
-# This file is part of SoCLib, GNU GPLv2.
-# 
-# SoCLib is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; version 2 of the License.
-# 
-# SoCLib is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with SoCLib; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA.
-# 
-# SOCLIB_GPL_HEADER_END
-# 
-# Copyright (c) UPMC, Lip6, SoC
-#         Nicolas Pouillon <nipo@ssji.net>, 2007
-# 
-# Maintainers: group:toolmakers
-
-import os, os.path
-import time
-
-from soclib_cc.config import config
-
-__id__ = "$Id: bblock.py 1750 2010-05-26 09:49:35Z nipo $"
-__version__ = "$Revision: 1750 $"
-
-_global_bblock_registry = {}
-
-class BBlock:
-    def __init__(self, filename, generator = None):
-        self.is_blob = False
-        assert filename
-        if generator is None:
-            from action import Noop
-            generator = Noop()
-        self.__filename = filename
-        assert filename not in _global_bblock_registry
-        _global_bblock_registry[filename] = self
-        
-        self.generator = generator
-        self.__i_need = None
-        self.__needed_by = None
-        self.__prepared = False
-        self.__users = set()
-
-        self.__rehash()
-
-    @property
-    def users(self):
-        return self.__users
-
-    def addUser(self, gen):
-#        print 'addUser', repr(self), str(gen)[:40] + '...'
-        self.__users.add(gen)
-
-    def touch(self):
-        mt = self.__mtime
-        e = self.__exists
-        self.__rehash()
-        if mt != self.__mtime or e != self.__exists:
-            for u in self.__users:
-                u.source_changed()
-
-    def is_dir(self):
-        return os.path.isdir(self.__filename)
-
-    def setIsBlob(self, val = True):
-        self.is_blob = val
-
-    def __rehash(self):
-        if os.path.exists(self.__filename):
-            self.__exists = True
-            self.__mtime = os.stat(self.__filename).st_mtime
-        else:
-            self.__exists = False
-            self.__mtime = time.time() + 4096
-
-    def mtime(self):
-        return self.__mtime
-
-    def delete(self):
-        if os.path.isfile(self.__filename):
-            try:
-                os.unlink(self.__filename)
-            except OSError:
-                pass
-        self.__rehash()
-
-    def generate(self):
-        self.generator.process()
-
-    def exists(self):
-        return self.__exists
-
-    def __str__(self):
-        return self.__filename
-
-    def __repr__(self):
-        return '{%s}' % os.path.basename(self.__filename)
-
-    def __hash__(self):
-        return hash(self.__filename)
-
-    def __eq__(self, other):
-        return self.__filename == other.__filename
-
-    def __walk_i_need(self):
-        if self.__i_need is not None:
-            return self.__i_need
-
-        self.__i_need = set()
-        for d in self.generator.todo_get_depends():
-            if d in self.__i_need:
-                continue
-            self.__i_need.add(d)
-            self.__i_need |= d.__walk_i_need()
-        return self.__i_need
-
-    def __walk_needed_by(self):
-        if self.__needed_by is not None:
-            return self.__needed_by
-
-        self.__needed_by = set()
-        for u in self.__users:
-            for d in u.dests:
-                if d is self.__needed_by:
-                    continue
-                self.__needed_by.add(d)
-                self.__needed_by |= d.__walk_needed_by()
-        return self.__needed_by
-
-    def prepare(self):
-        if self.__prepared:
-            return
-
-        self.__walk_needed_by()
-        self.__walk_i_need()
-
-        self.__prepared = True
-
-    def needs(self, other):
-        return (
-            (other in self.__i_need or self in other.__needed_by) and not
-            (self in other.__i_need or other in self.__needed_by)
-            )
-
-class AnonymousBBlock(BBlock):
-    def __init__(self, builder):
-        self.__done = False
-        BBlock.__init__(self, '__anon_'+hex(id(builder)), builder)
-
-    def touch(self):
-        self.__done = True
-        
-    def exists(self):
-        return self.__done
-
-    def delete(self):
-        self.__done = False
-
-    def prepare(self):
-        BBlock.prepare(self)
-        self.__done = False
-
-    def __repr__(self):
-        return '{anon %03d}' % (hash(str(self)) % 1000)
-
-def bblockize1(f, gen = None):
-    if config.debug:
-        print 'BBlockizing', f,
-    if isinstance(f, BBlock):
-        if config.debug:
-            print 'already is'
-        return f
-    if f in _global_bblock_registry:
-        r = _global_bblock_registry[f]
-        if config.debug:
-            print 'in global reg', r
-        from action import Noop
-        if gen is not None:
-            if isinstance(r.generator, Noop):
-                r.generator = gen
-            elif r.generator.__class__ is not gen.__class__:
-                raise ValueError('Generator in reg: %s, passed: %s'%(r.generator.__class__, gen.__class__))
-        return r
-    if config.debug:
-        print 'needs BBlock'
-    return BBlock(f, gen)
-
-def bblockize(files, gen = None):
-    return map(lambda x:bblockize1(x, gen), files)
-
-def filenames(bblocks):
-    ret = []
-    for b in bblocks:
-        assert isinstance(b, BBlock)
-        if isinstance(b, AnonymousBBlock):
-            continue
-        ret.append(str(b))
-    return ret
diff --git a/MPSoC/soclib/utils/lib/python/soclib_builder/bblock.pyc b/MPSoC/soclib/utils/lib/python/soclib_builder/bblock.pyc
deleted file mode 100644
index 38b42daff97fbe17f14c38157623dc33b3e8f7c0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 9020
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
WTvpH7MXP8R?Ng8D&(!8?xqk!L-EYVM

diff --git a/MPSoC/soclib/utils/lib/python/soclib_builder/command.py b/MPSoC/soclib/utils/lib/python/soclib_builder/command.py
deleted file mode 100644
index db631161c8..0000000000
--- a/MPSoC/soclib/utils/lib/python/soclib_builder/command.py
+++ /dev/null
@@ -1,190 +0,0 @@
-
-# SOCLIB_GPL_HEADER_BEGIN
-# 
-# This file is part of SoCLib, GNU GPLv2.
-# 
-# SoCLib is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; version 2 of the License.
-# 
-# SoCLib is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with SoCLib; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA.
-# 
-# SOCLIB_GPL_HEADER_END
-
-import os
-import tempfile
-
-from soclib_cc.config import config
-
-__author__ = 'Nicolas Pouillon, <nipo@ssji.net>'
-__copyright__ = 'UPMC, Lip6, SoC, 2007-2010'
-__license__ = 'GPL-v2'
-__id__ = "$Id: command.py 1787 2010-06-07 21:50:25Z nipo $"
-__version__ = "$Revision: 1787 $"
-
-__all__ = ['Command']
-
-class Command:
-
-    __jobs = {}
-
-    def __init__(self, cmd, cwd = None, on_done = None):
-        self.__cmd = cmd
-        self.__cwd = cwd
-        self.__on_done = on_done
-        self.__done = False
-        self.__stdout = ''
-        self.__stderr = ''
-
-    @property
-    def stdout(self):
-        return self.__stdout
-
-    @property
-    def stderr(self):
-        return self.__stderr
-
-    @property
-    def command(self):
-        return ' '.join(map('"%s"'.__mod__, self.__cmd))
-
-    def run(self, synchronous = False):
-        import subprocess
-        #print "---- run", cmd
-
-        if config.verbose:
-            print 'Running', ["async", "sync"][synchronous], self.command
-
-        self.__out = tempfile.TemporaryFile("w+b", bufsize=128)
-        self.__err = tempfile.TemporaryFile("w+b", bufsize=128)
-
-        try:
-            self.__handle = subprocess.Popen(
-                self.__cmd,
-                shell = False,
-                cwd = self.__cwd,
-                bufsize = 128*1024,
-                close_fds = True,
-                stdin = None,
-                stdout = self.__out,
-                stderr = self.__err,
-                )
-        except OSError, e:
-            from action import ActionFailed
-            raise ActionFailed(-1, self.command)
-
-        if synchronous:
-            self.__handle.wait()
-            self.__out.seek(0)
-            self.__err.seek(0)
-            self.__stdout = self.__out.read()
-            self.__stderr = self.__err.read()
-            ret = self.__handle.returncode
-            del self.__handle
-            del self.__out
-            del self.__err
-            return ret
-        
-        self.__class__.__jobs[self.__handle.pid] = self
-
-    @classmethod
-    def pending_action_count(cls):
-        return len(cls.__jobs)
-
-    @classmethod
-    def wait(cls):
-        try:
-            (pid, st) = os.wait()
-            killed = st & 0x80
-            sig = st & 0x7f
-            ret = st >> 8
-            cls.__jobs[pid].__handle.returncode = killed and -sig or ret
-        except Exception, e:
-            pass
-        for job in cls.__jobs.values()[:]:
-            p = job.__handle.poll()
-#            print "---- poll", job, p
-            if job.__handle.returncode is not None:
-                job.__set_done()
-
-    def __set_done(self):
-        try:
-            self.__handle.communicate()
-        except:
-            pass
-        self.__out.seek(0)
-        self.__err.seek(0)
-        self.__stdout = self.__out.read()
-        self.__stderr = self.__err.read()
-        del self.__out
-        del self.__err
-
-        #print '--'
-        del self.__class__.__jobs[self.__handle.pid]
-
-        rc = self.__handle.returncode
-        del self.__handle
-
-        if rc == 0:
-            self.__done = True
-
-        if self.__on_done:
-            self.__on_done(self, rc, self.__stdout, self.__stderr)
-
-    def is_background(self):
-        try:
-            return self.__handle.poll() is None
-        except:
-            return False
-
-class CreateFile:
-    def __init__(self, filename, contents, on_done = None):
-        self.__filename = filename
-        self.__contents = contents
-        self.__on_done = on_done
-
-    def run(self, synchronous = False):
-        if config.verbose:
-            print 'Creating file', self.__filename
-        if os.path.exists(self.__filename):
-            fd = open(self.__filename, 'r+')
-            old = fd.read()
-            fd.seek(0)
-            if old != self.__contents:
-                fd.truncate()
-                fd.write(self.__contents)
-        else:
-            fd = open(self.__filename, 'w')
-            fd.write(self.__contents)
-        fd.close()
-
-        if self.__on_done:
-            self.__on_done(self, 0, '', '')
-
-    def is_background(self):
-        return False
-
-class CreateDir:
-    def __init__(self, filename, on_done = None):
-        self.__filename = filename
-        self.__on_done = on_done
-
-    def run(self, synchronous = False):
-        if config.verbose:
-            print 'Creating directory', self.__filename
-        if not os.path.exists(self.__filename):
-            os.makedirs(self.__filename)
-
-        if self.__on_done:
-            self.__on_done(self, 0, '', '')
-
-    def is_background(self):
-        return False
diff --git a/MPSoC/soclib/utils/lib/python/soclib_builder/command.pyc b/MPSoC/soclib/utils/lib/python/soclib_builder/command.pyc
deleted file mode 100644
index 5068798f11f625bb85e5966f28c3de4185dd5d55..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 6918
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

diff --git a/MPSoC/soclib/utils/lib/python/soclib_builder/depends.py b/MPSoC/soclib/utils/lib/python/soclib_builder/depends.py
deleted file mode 100644
index 44f5d51e5a..0000000000
--- a/MPSoC/soclib/utils/lib/python/soclib_builder/depends.py
+++ /dev/null
@@ -1,77 +0,0 @@
-
-# SOCLIB_GPL_HEADER_BEGIN
-# 
-# This file is part of SoCLib, GNU GPLv2.
-# 
-# SoCLib is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; version 2 of the License.
-# 
-# SoCLib is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with SoCLib; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA.
-# 
-# SOCLIB_GPL_HEADER_END
-# 
-# Copyright (c) UPMC, Lip6, SoC
-#         Nicolas Pouillon <nipo@ssji.net>, 2007
-# 
-# Maintainers: group:toolmakers
-
-import os, os.path, time
-import pickle
-
-from soclib_cc.config import config
-
-import bblock
-
-__id__ = "$Id: depends.py 2016 2011-01-21 10:45:27Z nipo $"
-__version__ = "$Revision: 2016 $"
-
-__all__ = ['load', 'dump']
-
-class MustRehash(Exception):
-    pass
-
-class DepPickler(pickle.Pickler):
-    def __init__(self, filename):
-        fd = open(filename, 'w')
-        pickle.Pickler.__init__(self, fd, pickle.HIGHEST_PROTOCOL)
-    def persistent_id(self, obj):
-        if isinstance(obj, bblock.BBlock):
-            return 'BBlock:'+str(obj)
-
-def dump(name, deps):
-    p = DepPickler(config.reposFile(name))
-    p.dump(deps)
-
-class DepUnpickler(pickle.Unpickler):
-    def __init__(self, filename):
-        try:
-            fd = open(filename, 'r')
-#           print 'loading back depends %s'%filename
-        except IOError:
-#           print '%s not loadable'%filename
-            raise MustRehash()
-        pickle.Unpickler.__init__(self, fd)
-        self.last_mod = os.stat(filename).st_mtime
-    def persistent_load(self, ident):
-        mode,ide = ident.split(':',1)
-        if mode == 'BBlock':
-            r = bblock.bblockize1(ide)
-            if r.exists() and r.mtime() > self.last_mod:
-                raise MustRehash()
-            return r
-
-def load(name):
-    p = DepUnpickler(config.reposFile(name))
-    try:
-        return p.load()
-    except:
-        raise MustRehash
diff --git a/MPSoC/soclib/utils/lib/python/soclib_builder/depends.pyc b/MPSoC/soclib/utils/lib/python/soclib_builder/depends.pyc
deleted file mode 100644
index 2d50868fbd6bebb77f661351c3576ee237cfd3ff..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3102
zcmcIm?M@p<6uq-+8ym18K_sPLq6$i_w!s*+iDXq(1feBT187Z^)UCQQ-USAh-IZsY
zhKl?teXaiK8}wEB0`0kXHa2SeFS5m4?tJX*opbIzvw!|opZ)!Q`G)}&zZ(8OMl*lF
zMEFy5PShLw>W1%8&wI1Rr=BmqN9QF<%G4{9DxR-UuR;-4%urOKUX`LUMHM>1^EHZQ
zD4wNbMNyT0Bf2K~zBflvjbfklyiClFC+ZZ<ai`ayXkJz<$cp-S#Ue!wS#gU)?=}~3
z4E;BLdrbw`R$vBMdaO^(2Hdr$QD-%Z^Ei#ndVaaOxzT>eru|@}{a~}b+TQ4V{zYf=
zQExTXdA7P{Zt+7w{8Ag8r5(3^&6Y5lWc^5-XmpX=S&Tdz85_i>eRDd7mt)vMGgX)v
z2T>GsoA9aW!B`#+!?b@9hoS5dh8I~hO3-zyWGNdHz_dmt9-3C1npmH-PU2LLOzZG4
z%aYc!gKoCnGT9)}N3D_7iD|KyU)s|wEyly6kxrs`*qR^^_}KPi-k;;CC<)?8oFC}H
zc@hu*dysdr%pC-5Gc`yFC63QW<6Q=9cwdHT8_j$MV~MW7x}s~3UVCH}X^*r|R~UEQ
z5?%X}L~ffsEFt>2S>}g%s|>UWp}7QSXE0X8Spcb1Z2{yWCU&2Gv%Awh3=e|+!~O03
zZ<`#DY-8f&Sk@owBxdL>$9o)20G}4tb9m3EXogQiYC#E7Z_pB??qk9s<p2U$*#baO
zWC0bxQ*^h>g;ro>7=*2@BpaM}n!K$Lh-^)b?WcoS@H#r;d2!uR?1d=oQ0NNk{1}g9
zM`u$9!SdU3WU)3DbcQ-w=U5yfOG?fVa4%rq1BNVEhM5E=-n1xUz4!!80;;H*KTc)_
z=q5#uA7n2m!5>l@Y0UX7T}Kfo@SZyoZ_Fi3mL+!>=b8B$`4=$zliZYa<kO=<jpTnm
zIry~B%pq)|6(lSxJC7bj;JegS+FQy1A6=093C`uxzm?#5`aYF#*0Wj47D?fUg1jdB
zRZ;4ZdV$o`CDP?WDNqp#sjO!Tq;-`iLfkClq7dMQP1fX~3L{GKbbn_!%!VR(0dpWk
zjE^XpCQ6VQClj`BMJ9|5FRX@4@K#BmyICZZN#z6$ehuF{(`SmS;Sri)f=Kyl$!mBG
zwd90^3uc_97w8}rwOr{D0QKlc5#HBGQE0YLXONaBz*2<x%9kWA(G{SE4>7n$iaStc
z?1WpjOlKv^>VkejkCG*Y9&y?_&F*MU{NOfBll94RWF}9v4fsA4iE^5xe~H_oOYtk{
zfsus*cJL7v3Rj~4PNR4m9YHmOAg~aNY+)#P4^vae-!jWLw2MCh9%HDW;~iCprr(48
zUln6nnS?0bv?`h}>4zK`a{?8s4VVzFa~{}6Gn_`aXbSenDyHbNA$cP?(0!hQZxm!n
zs!`DkDKaN(qR;#$k+t9sd&0X9&)qC{d2EHdXwFRQ$o%GAG{aR-Y8l1RKx=Xm1|PzR
z2xR!`>)TVwAFgR91pK|=zMR6rVBLK#x<g62vVMiQsPJXM1sH}e`TELI^f|l3u%9IG
zSyOgi4dUEl&dH1@kSIT6AAG<@5aVbkm`pPlM76$jAC+Hml^7;!P0f3Y-n>^)71%re
KO0`y6x&05i-H&Ym

diff --git a/MPSoC/soclib/utils/lib/python/soclib_builder/fileops.py b/MPSoC/soclib/utils/lib/python/soclib_builder/fileops.py
deleted file mode 100644
index d959738c29..0000000000
--- a/MPSoC/soclib/utils/lib/python/soclib_builder/fileops.py
+++ /dev/null
@@ -1,46 +0,0 @@
-
-# SOCLIB_GPL_HEADER_BEGIN
-# 
-# This file is part of SoCLib, GNU GPLv2.
-# 
-# SoCLib is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; version 2 of the License.
-# 
-# SoCLib is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with SoCLib; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA.
-# 
-# SOCLIB_GPL_HEADER_END
-# 
-# Copyright (c) UPMC, Lip6, SoC
-#         Nicolas Pouillon <nipo@ssji.net>, 2007
-# 
-# Maintainers: group:toolmakers
-
-import os
-import os.path
-import action
-
-__id__ = "$Id: fileops.py 1750 2010-05-26 09:49:35Z nipo $"
-__version__ = "$Revision: 1750 $"
-
-class CreateDir(action.Action):
-    info_code = 'D'
-
-    def __init__(self, directory):
-        action.Action.__init__(self, [directory], [])
-
-    def is_valid(self):
-        return os.path.isdir(str(self.dests[0]))
-
-    def prepare(self):
-        for b in self.dests:
-            self.run_command(['mkdir', '-p', str(b)])
-        action.Action.prepare(self)
diff --git a/MPSoC/soclib/utils/lib/python/soclib_builder/fileops.pyc b/MPSoC/soclib/utils/lib/python/soclib_builder/fileops.pyc
deleted file mode 100644
index d8a5e81ea64d4638291e891ad38aaee359626da1..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1446
zcmcIkQEL-H5T3njqK%69C?bSX<wWA8)hZ1lYWw0tgIo$?M3(e+lP<m7owu7}p+42W
z<&W^M_y_cxX=(f5Yc4yJxykPA_kBB?-+%6Oem!n|$?4*0<NGbl@4*=iMMp&A%UE5D
zBN|6!;A1i|jaSI5kd4T-XsXDx=qJ$`(dTiStBevZ?f&8!`aZ(-4`$Gvy24hqe^#G#
zH(qV^yPN%uey_jP+kDyWZx3E<51wz0yQQnE?z+Fni!yucysOH=`TX^;itJ8fC&BKz
z=8}d&_C3r$fwLe0K=6R87#1UrBmn4Gf)-_?WCgPWuiecfcs5S$!2CnF00xR&M5jcj
zie?z#7?VQrQNjy{NzC(@>m&~VD&f2H@FucayV3=%6D}UOy0^ttXc*VnJXFm|f-H&i
z8KQLIZR1m0dh2HC%$9E9)BXLbD$>1=qiQGhRbIG*bP-(PQ;zDBa9EWWd3~^Og|SU~
zC3eR9K7x5hK`LkHZ2xB)VkYdMm7@D+iZDikf9QC5(t-<Isq(_8o`l1|N$0@{tFcjN
zBx9@(UX;ps!qS-r*4%l0JSm*v-L5lc$b3?AzPkv%_k<|U|LYq4Q1XJ#!HAe3jvUly
zF?;o`L!Uqms-WQ^59bWG0n;4{+4&LZ%Z9yL+CRI6-vYa4QR=*!&nKnHI(W|*OD4T@
z15w@BdeT@CS%i|VJXpG1*<Eb@6y{ksQXOimt`h8`q}JtRZnX}KS?hUa76rfZEp+9y
z0w-goyRzFzNx3V~5-qExu^p|!1bJJvqt$pdPFT#0U0_$?p9Z}tV#~$EZ8U(-C!+N+
kZW(T@)^ZMf^RD&hGO>%aug}GN^8nj=miM;8Ct@c50O<2Q!~g&Q

diff --git a/MPSoC/soclib/utils/lib/python/soclib_builder/mfparser.py b/MPSoC/soclib/utils/lib/python/soclib_builder/mfparser.py
deleted file mode 100644
index 3b5def51dd..0000000000
--- a/MPSoC/soclib/utils/lib/python/soclib_builder/mfparser.py
+++ /dev/null
@@ -1,60 +0,0 @@
-
-# SOCLIB_GPL_HEADER_BEGIN
-# 
-# This file is part of SoCLib, GNU GPLv2.
-# 
-# SoCLib is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; version 2 of the License.
-# 
-# SoCLib is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with SoCLib; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA.
-# 
-# SOCLIB_GPL_HEADER_END
-# 
-# Copyright (c) UPMC, Lip6, SoC
-#         Nicolas Pouillon <nipo@ssji.net>, 2007
-# 
-# Maintainers: group:toolmakers
-
-__all__ = ["MfRule"]
-
-__id__ = "$Id: mfparser.py 1750 2010-05-26 09:49:35Z nipo $"
-__version__ = "$Revision: 1750 $"
-
-def bsfilter(spacer, l):
-	r = []
-	next_follows = False
-	for i in l:
-		nf = next_follows
-		if i.endswith('\\'):
-			next_follows = True
-			i = i[:-1]+spacer
-		else:
-			next_follows = False
-		if nf:
-			r[-1] += i
-		else:
-			r.append(i)
-	return r
-
-class MfRule:
-	def __init__(self, text):
-		lines = filter(lambda x:not x.startswith('#'),
-			bsfilter("", text.split('\n')))
-		try:
-			dest, prereq = lines[0].split(":",1)
-		except ValueError:
-			print lines[0]
-			raise
-		self.rules = lines[1:]
-		self.dest = bsfilter(" ", dest.strip().split())
-		self.prerequisites = bsfilter(" ", filter(None, map(
-			lambda x:x.strip(), prereq.split())))
diff --git a/MPSoC/soclib/utils/lib/python/soclib_builder/mfparser.pyc b/MPSoC/soclib/utils/lib/python/soclib_builder/mfparser.pyc
deleted file mode 100644
index bfc32ac928158a271f59a44ecb5303bee4cbe896..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1908
zcmcgt?{3>h4Cl$RW2a63ti{$pz$#$Dpf8=AY*|qwD28=yw+{^lIaoKZ!$G#r=@qi1
z>dtKfIA4~%*1q%&_9}aU^+(Fx_5!JF(iF+#k^J$_fBn6+`RC`|UuU#_I{5tt<o3XF
zq9a8U2;hqHfF=Ru9r}Z4(qU`fqder-GooK6A>~~f#~WDbdtguJ>9R0x2jcb*`6yb<
z>#T96`Jz6FcJA#Bqut@o@a}N$?(Wyo@c!tl`=c-SCQ)hYD%y5ec~xp&TW70s)cSAF
z0%$oj(?gIu1v?@-4akFc==deA6n*#Glukohb?CH9tB@>`S9GSRx<SeZ><BIDiB?3P
zz_Z+dUIMJTR9z>vLZJa+zngHp*V%t{O>|ZkB9MaO8Jxy3ckI9^@aOg)JaGuocflTK
zg)_bn$&|T!WBm)yw!>y=q(50*!w_>V^6u(vW*X0-3gL~v2)Q)JUeBwdsNOhHTT}q`
zJO(FWZVV||qPH$Fr8D*@IWnbPy5#V%s*2?4kK^iL;;LC;r^(XW!X+%#C;mlMuJwAl
zv_)>3<bN<p@>4grg*Q!vJ=`rYQayY&i1`)JM*-f{_28<Sv6UaL;aiZvXfQ4SfMjk0
zO2;vq1xs$z1(0C*76L#3QkW=I3IKqmm61cs&jS7e>63^Uo{(;`t;<sg!*hWZSUxN7
zQ0P1Ka+4~chG*^l<on;zwt&>ntmx4lfUiT@X@h6Qc6p8w6C45A+FM&WE#%avywAz;
zNWFJ!(_-fV`;6lO$~c&DiA)R?qvI}t!OKb{lyk9dgCP2ubi{A6pU)aE!_w+F#_<P2
zdcVjP(>!~y%Xxqp4M?2ACh`_gh(<U~Yccw_Ojb#mTtizXx;SnV7k`G@`Nq~#SIX@;
z|FY7{*k+%122sq($x&-3I_1%mqw4Cydg=d9S+O*anx<;R(C`hGUSq!yEH}=Ja8Q*7
zGe)$?YQKfwx-pG;wZwJhjf=Th@pGn_i{NpJC1PPqM7+TceDd3M=idoA%39mfdae0N
zb{~V08mQZ<qat+)QeSPUPt|25ciMVEnJtXg(i*K7RgQjWokm#tU(O<(*Bz8{nnRG|
zqtsIe?Y`1s{;SbCD+*-D%|v}UM21!C*SHPw-+^rTUBY~zl%;k1ZL=QS#^$aMHo!I6
I3kFx-0T&scW&i*H

diff --git a/MPSoC/soclib/utils/lib/python/soclib_builder/textfile.py b/MPSoC/soclib/utils/lib/python/soclib_builder/textfile.py
deleted file mode 100644
index a2ad7d3431..0000000000
--- a/MPSoC/soclib/utils/lib/python/soclib_builder/textfile.py
+++ /dev/null
@@ -1,55 +0,0 @@
-
-# SOCLIB_GPL_HEADER_BEGIN
-# 
-# This file is part of SoCLib, GNU GPLv2.
-# 
-# SoCLib is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; version 2 of the License.
-# 
-# SoCLib is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with SoCLib; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA.
-# 
-# SOCLIB_GPL_HEADER_END
-# 
-# Copyright (c) UPMC, Lip6, SoC
-#         Nicolas Pouillon <nipo@ssji.net>, 2007
-# 
-# Maintainers: group:toolmakers
-
-import os, os.path
-
-from soclib_cc.config import config
-
-from fileops import CreateDir
-from action import Action
-
-__id__ = "$Id: textfile.py 1750 2010-05-26 09:49:35Z nipo $"
-__version__ = "$Revision: 1750 $"
-
-class Textfile(Action):
-    info_code = 'S'
-    priority = 50
-
-    def __init__(self, output, contents):
-        Action.__init__(self, [output], [], contents = contents)
-
-    def is_valid(self):
-        f = str(self.dests[0])
-        if os.path.exists(f):
-            return open(f, 'r').read() == self.options['contents']
-        return False
-
-    def prepare(self):
-        self.create_file(self.dests[0], self.options['contents'])
-        Action.prepare(self)
-
-class CxxSource(Textfile):
-    pass
diff --git a/MPSoC/soclib/utils/lib/python/soclib_builder/textfile.pyc b/MPSoC/soclib/utils/lib/python/soclib_builder/textfile.pyc
deleted file mode 100644
index d7eb13b550a5f431c8082a4b7b30401c9419e752..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1892
zcmcgsZEGAi5FYKl`7Uj7NXQF?Z~?b$A@QD_I3XsKHZFxyYRay^^!h<uc6E;8&1zZc
zj1A5w=Wq2#^snR(w9ky(Oa6endzzaWX{DJ*&&=N+znuK_?cmRnuAUA2|A65?KveiC
zIw6{`b@iW~&`CmdkLEp6ysk$leX0jEA4I!PCqt@7G#|l+dxNSW&Bs)Y$c$*IsM;W$
zaY^*Yd_vWj%tXACwf6=eUZgh=i2Vo8VXB~pAw=n#r9F=J81_MD7Qy^vyH87gEQ588
z-@)wGFV+4un6t37wb^dZr#sL0X4Bo-&g}7Q@A2-l>FmY+(--?s_U6;Zwr;xRZ}L~U
zIkg^p?8o(6fw4Kd+GY(H$Mg!rXAlNZAv4H?g9kQM!uibm3=k^=s`{b~DKF9iz6rcT
zVRs?R9t020@c_e5Ap-JObU}2X=omk_l#7Hedy0`S(gceRB|6{|OcT7ga`uZ`YunhM
zb;^5(K7=>*Qjm13(5^zxfutBw_yStC@}~2dX}qz=*|BNt%4bJM&ehp(zZdQx^RBGz
z>ueQl?K9Te^YF$sSAP9^W$Vgx*=NA#oY!|4o<k#5a_X#dT$1mvP>?T@Man?%{-vV#
zib6uRN4C!pz~dg03IjF(?<MAj%p?A2#5mu7n^2*Ud69CihZZ8j+{HwhGJ((Zp~F4^
z)cD|W2$A!GPrC?j1Rrx|d5ZUOEuduuWUInRJi;;A;^#%}O~jq2<W`s052@U*_4;&C
z+v*Vx_RLaJx9~oU05ixOwgAj5WuQLCm~HSi0on<GjX<L`l~i&etcf5-_=L4wmZg-P
z=CaD!&be+P?HGf$Gwq@?Qj<A5t{;y44vyhc@|-cL2P&1@U{JJf7VnJKVIsymSFLI`
znGLpCI$gTT2%c?cU1!6&@HM}UdD-_<_@Z4~l`u2E!SEdDP~lC+z41^2Jvcin+^Q>0
zi8*=J4Ty6z(tyxecq+2-F0}j}o8nuGYYYEt9Ptc8ihQWjFQDfvV$Jw%DXvXkAss}Q
z<#uf7Iec*yQ_8hI=j5ag7t+onx44U-rB%2)W}VijXjEv_TIUR1&H?;S$qHRwMk;;J
U=lZW8?j@VarrJ#S=I-457t6PrVE_OC

diff --git a/MPSoC/soclib/utils/lib/python/soclib_builder/todo.py b/MPSoC/soclib/utils/lib/python/soclib_builder/todo.py
deleted file mode 100644
index 9989230b69..0000000000
--- a/MPSoC/soclib/utils/lib/python/soclib_builder/todo.py
+++ /dev/null
@@ -1,319 +0,0 @@
-
-# SOCLIB_GPL_HEADER_BEGIN
-# 
-# This file is part of SoCLib, GNU GPLv2.
-# 
-# SoCLib is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; version 2 of the License.
-# 
-# SoCLib is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with SoCLib; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA.
-# 
-# SOCLIB_GPL_HEADER_END
-
-__author__ = 'Nicolas Pouillon, <nipo@ssji.net>'
-__copyright__ = 'UPMC, Lip6, SoC, 2007-2010'
-__license__ = 'GPL-v2'
-__id__ = "$Id: todo.py 1864 2010-08-31 14:45:01Z nipo $"
-__version__ = "$Revision: 1864 $"
-
-import sys
-import os, os.path
-
-from soclib_cc.config import config
-from bblock import bblockize, BBlock, filenames
-from action import Noop, ActionFailed, Action
-import command
-from soclib_utils.terminal import terminal_width
-
-__all__ = ['Todo']
-
-class ToDo:
-    def __init__(self, *dests):
-        self.has_blob = False
-        self.dests = []
-        self.add(*dests)
-        self.prepared = False
-        d = config.reposFile('')
-        if not os.path.isdir(d):
-            os.makedirs(d)
-        self.max_actions = config.toolchain.max_processes
-        self.__term_width = terminal_width()
-        self.__todo = []
-
-    def add(self, *dests):
-        self.dests += bblockize(dests)
-        for d in self.dests:
-            self.has_blob |= d.is_blob
-
-    def _getall_bbs(self, dests):
-        dest_bb_list = set(dests)
-        viewed_bb_list = set()
-        todo_generator_list = set()
-
-        while dest_bb_list:
-            bb = dest_bb_list.pop()
-            viewed_bb_list.add(bb)
-
-            gen = bb.generator
-            gen.prepare()
-            dest_bb_list |= set(gen.todo_get_depends())
-            todo_generator_list.add(gen)
-#            print gen
-            
-            dest_bb_list -= viewed_bb_list
-
-
-        def cr(x):
-            return not isinstance(x, Noop)
-        todo_generator_list = filter(cr, todo_generator_list)
-        return todo_generator_list, viewed_bb_list
-    
-    def prepare(self):
-        if self.prepared:
-            return
-        
-        try:
-            todo, bblocks = self._getall_bbs(self.dests)
-        except ActionFailed, e:
-            return self.handle_failed_action(e)
-
-        for b in bblocks:
-            b.generator.prepare()
-
-        for b in bblocks:
-            b.prepare()
-
-        sorted_bblocks = []
-        for b in bblocks:
-            done = False
-            for i, bb in reversed(list(enumerate(sorted_bblocks))):
-                if b.needs(bb):
-                    sorted_bblocks.insert(i+1, b)
-                    done = True
-                    break
-            if not done:
-                sorted_bblocks.insert(0, b)
-        bblocks = sorted_bblocks
-
-        self.__todo = []
-        viewed = set()
-        for b in bblocks:
-            g = b.generator
-            if isinstance(g, Noop) or g in viewed:
-                continue
-            self.__todo.append(g)
-            viewed.add(g)
-
-        if set(self.__todo) < set(todo):
-            print 'Lost generators in battle:'
-            for i in set(todo) - set(self.__todo):
-                for d in i.dests:
-                    print d in self.dests, d.generator.__class__, d
-            raise RuntimeError()
-
-#        self.__todo.reverse()
-        self.prepared = True
-
-#        for i, g in enumerate(self.todo):
-#            print i, filenames(g.dests), filenames(g.sources)
-        
-    def clean(self):
-        self.prepare()
-        for i in self.__todo:
-            i.todo_clean()
-
-    def handle_failed_action(self, e):
-        print "soclib-cc: *** Action failed with return value `%s'. Stop."%e.rval
-        if self.has_blob:
-            print '***********************************************'
-            print '***********************************************'
-            print '**** WARNING, YOU USED BINARY-ONLY MODULES ****'
-            print '***********************************************'
-            print '***********************************************'
-            print 'If you compilation failed because of linkage, this is most'
-            print 'likely a mismatch between expected libraries from a binary'
-            print 'only module and your system libraries (libstdc++, SystemC, ...)'
-            print
-            print "\x1b[91mPlease don't report any error about binary modules"
-            print "to SoCLib-CC maintainers, they'll ignore your requests.\x1b[m"
-            print 
-        if config.verbose:
-            print "soclib-cc: Failed action: `%s'"%e.action
-        else:
-            import shlex
-            act = []
-            was = None
-            cmdlist = e.action
-            if not isinstance(cmdlist, (list, tuple)):
-                cmdlist = shlex.split(cmdlist)
-            for a in cmdlist:
-                s = None
-                if a.startswith('-I'):
-                    s = '-I'
-                if was != s and s:
-                    act.append(s+'...')
-                elif not s:
-                    act.append(a)
-                was = s
-            print "soclib-cc: Failed action: `%s'" % ' '.join(act)
-            print "soclib-cc: Command line shortened, rerun with -v for complete command line"
-        if command.Command.pending_action_count():
-            print "soclib-cc: Waiting for unfinished jobs"
-            self.__wait_done()
-            raise
-
-    def wait(self):
-        command.Command.wait()
-
-    def __wait_done(self):
-        while command.Command.pending_action_count():
-            self.progressBar()
-            command.Command.wait()
-
-    def process(self):
-        import sys
-        self.prepare()
-        
-        if config.debug:
-            print 'Would do:'
-            print "="*80
-            print "="*80
-            for i, g in enumerate(self.__todo):
-                print i, g.is_valid(), str(g)
-            print "="*80
-            print "="*80
-
-#        self.infoBar()
-        self.progressBar()
-
-        while self.__build_as_much_as_possible() == False:
-            self.progressBar()
-        self.progressBar()
-        if config.progress_bar:
-            print
-
-    def __build_as_much_as_possible(self):
-        wont = filter(lambda x:x.todo_state() in [Action.FAILED, Action.WORKING],
-                      self.__todo)
-        left = filter(lambda x:x.todo_state() in [Action.TODO, Action.BLOCKED],
-                      self.__todo)
-        if not left:
-            return True
-        possible = filter(lambda x:x.todo_can_be_processed(),
-                          left)
-        if left and not possible and not wont:
-            print 'Left:'
-            for i in left:
-                i.why_blocked()
-            raise RuntimeError()
-
-        try:
-            self.__run(possible)
-        except ActionFailed, e:
-            return self.handle_failed_action(e)
-        except OSError, e:
-            if hasattr(e, 'child_traceback'):
-                print e.child_traceback
-            raise
-        return False
-
-    def __run(self, left):
-        # pop() takes from the end...
-        left.reverse()
-
-#        print 'run'
-        
-        while left:
-            todo = left.pop()
-            if todo.todo_state() != Action.TODO:
-                continue
-
-            while command.Command.pending_action_count() >= self.max_actions:
-                self.wait()
-
-            if not todo.todo_can_be_processed():
-                continue
-
-            todo.todo_launch()
-            self.progressBar()
-        self.__wait_done()
-
-    @staticmethod
-    def __progress_bar_code(state):
-        return {
-            Action.TODO: ' ',
-            Action.BLOCKED: '.',
-            Action.DONE: '=',
-            Action.WORKING: 'W',
-            Action.FAILED: '!',
-            }[state]
-
-    def progressBar(self):
-        if not config.progress_bar or not self.prepared:
-            return
-        if self.__term_width < len(self.__todo) + 12:
-            self.__short_progress()
-        else:
-            self.__long_progress()
-
-    def __long_progress(self):
-        pb = ""
-        left = 0
-        for pi in self.__todo:
-            s = pi.todo_state()
-            if s == Action.TODO:
-                left += 1
-            pb += self.__progress_bar_code(s)
-        sys.stdout.write('\r['+pb+']')
-        sys.stdout.write(' %d left ' % left)
-        sys.stdout.flush()
-
-    def __short_progress(self):
-        states = {
-            Action.TODO : 'Todo',
-            Action.BLOCKED : 'Blocked',
-            Action.DONE : 'Done',
-            Action.WORKING : 'Working',
-            Action.FAILED : 'Failed',
-            }
-        counts = dict([(k, 0) for k in states.keys()])
-        for i in self.__todo:
-            counts[i.todo_state()] += 1
-        pc = 100. * counts[Action.DONE] / len(self.__todo)
-        sys.stdout.write('\r % 3d%% done' % int(pc))
-        for k in sorted(states.keys()):
-            sys.stdout.write(', %3d %s' % (counts[k], states[k]))
-        sys.stdout.write('      \r')
-        sys.stdout.flush()
-
-    def infoBar(self):
-        if not config.progress_bar:
-            return
-        pb = ""
-        for pi in self.__todo:
-            pb += pi.info_code
-        sys.stdout.write('['+pb+']\n')
-        sys.stdout.flush()
-    
-    def format(self, formatter_class_name, output):
-        self.prepare()
-        
-        nodes = formatter_class_name.split('.')
-        module = '.'.join(nodes[:-1])
-        tmp = __import__(module, globals(), locals(), [nodes[-1]])
-        formatter = getattr(tmp, nodes[-1])
-
-        f = formatter(output)
-        for a in self.__todo:
-            f.format_action(a)
-
-            
diff --git a/MPSoC/soclib/utils/lib/python/soclib_builder/todo.pyc b/MPSoC/soclib/utils/lib/python/soclib_builder/todo.pyc
deleted file mode 100644
index 0862f3a8de8fcd190294a75e6fb2ebc1a1a6ae64..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 11211
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
WHv#eoUOZhG$2IslnmdJZ;eP>STP-mF

diff --git a/MPSoC/soclib/utils/lib/python/soclib_cc/__init__.pyc b/MPSoC/soclib/utils/lib/python/soclib_cc/__init__.pyc
deleted file mode 100644
index c42b25cac1e32bfeb1a1eabbb1c053f654bd21c7..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 280
zcmcckiI;1y8f$bi0~9a<X$K%K761|{3=B~~l93^bks*bNAy|VMBx3+1R6J9x6yoDE
z^D;}~<Mj$E6)a866pRcEEOiZxbq$Rb49%^KOsz~TqZINo3-T3Iz{aTrrIuwDXXfWw
zft9QHX)pneDq#Z>K%-LP<4d@~%(B!XkgE824Iq~RK@|G|x%#EWKxzHdyyDc%bp7<y
zyv)*K{g9CS{2YDXfZ%**{o?%OoXjNs(vr-aVto*+pt2+*KMyJ%pPa0Z<n9s<ppiDY
S`6;D2sdmypb}`6FY>WW+mqX0}

diff --git a/MPSoC/soclib/utils/lib/python/soclib_cc/actions/__init__.pyc b/MPSoC/soclib/utils/lib/python/soclib_cc/actions/__init__.pyc
deleted file mode 100644
index 5efa732f2bd7af57a94de04d8d5e72ae68df104e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 288
zcmYk0&q@O^5QnoBi&O;fUUFDuFLkzmRCW<5c=BKoTRg0XL6cAi)?{(Ag+81Q;j8!r
z&MpNF<jZd|!^eF8oQ%HC4_}PhpG4k;Ts{?8r7B^fszlj=T4e`aCl{pmw$zB^DI#7p
zJ6+7L^fb?laXuSQW_og6PA|)OQE5+2&}pwrpWK$1f-n2=beRoA6^8;*S;TnU$F2M9
zrVukJ)gSm-N@!Wy;5<9pz{YuM8P@9%YIt~Dg*)J2YI=h<Qq9n%W*6Us-~XdA@M@yy
Y8UF1bk3@a*5o}w#+cU}Btu{=40aEEk^#A|>

diff --git a/MPSoC/soclib/utils/lib/python/soclib_cc/actions/cxx.pyc b/MPSoC/soclib/utils/lib/python/soclib_cc/actions/cxx.pyc
deleted file mode 100644
index ab33216b6d0180fb7c369f0ff2adc69ce36bb32b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 8808
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
Q!8mLdR_o;8+l$VB054c5FaQ7m

diff --git a/MPSoC/soclib/utils/lib/python/soclib_cc/actions/hdl.pyc b/MPSoC/soclib/utils/lib/python/soclib_cc/actions/hdl.pyc
deleted file mode 100644
index 77c23824b81076e6f30beb9f45be6e45d53ba381..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 4079
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
Uh(B)`P42Qs9ksmG+t(}q0qiKEDF6Tf

diff --git a/MPSoC/soclib/utils/lib/python/soclib_cc/bugreport.pyc b/MPSoC/soclib/utils/lib/python/soclib_cc/bugreport.pyc
deleted file mode 100644
index 458e8a66ee7e9af159691b1175e313f9f839dacd..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 5577
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

diff --git a/MPSoC/soclib/utils/lib/python/soclib_cc/config/__init__.pyc b/MPSoC/soclib/utils/lib/python/soclib_cc/config/__init__.pyc
deleted file mode 100644
index 6386727b8b85bf56a87e0c6bb5aad11bb9903327..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 975
zcmY*X-A>yu6g~;`F9ins)3l4pLul$nn>3vUs6vPdO%oEJio#8HVTHuBhG0jrQ`B9K
z2ig<tA@(YJf$i8S6U52M=kuL^`}dz!@7IUgw*(eX6aNSJsh=oPfC!}nkprm<kqhY(
zL`#q^L$nNO4Wb&Pbx0d<Q-=sag&U7>6QU-hO_*SimNjU>jR#p9qBc0J4txdpDlEX-
z19%2(9quu!2luW4(FU*$$Q$73=kUWp*EaAMMrX*EriO8+Z3=&n;*=*cixnBkl4qF|
zU9u;5E)SHt=DuKhU%f@Ei_ytpmmKqayGzCr;h^8&=?(f}U)7QRIy&yn1}a3jb(9VX
zrCe}Lsh`hDxbtxv&BK1L|EU-5k}w<&c8B3^L`)vCr8bP$8Jls%r5INBTk1P%y|GL(
ze%VVBl1OpICuI?9G$Kq)xL`gx5=2kAB3C?PU2?~W6xp041&cL9hIvojR4!#kVv!QX
zwBbo1r6!w|)h3z61&=Q?=6n1vKBwCBR*@YCp{}8@LDU)|-wz(Woma-fLqTa=>ZvR!
z)vI=!$b4S#$rLA|&EP4`c*2BYxHl<qT<L#m#tJhC+&3(h$^@~CSSqWM%Fkmx)#m=)
z#f9KvQW2Op%g}Zm31ufolf<v;KeP2OBV&C{==f4uY?RlM3mZJ;g@|vN4Nj?<>qB8l
zS<ot~HqC!liWTNCz7&NlY+Hx+jK*fjXJ`SPr$SxeJ}A*m1*UmE2_{VNQU&Md=n|Za
z@MZ;7ilEdyQvn`+kk4_JVxh-|f~uk5(H*nZ?%m3?%-H^G%%a|*s5^^QtGg=>F1O{b
LyDjGp;x+dll<@Lt

diff --git a/MPSoC/soclib/utils/lib/python/soclib_cc/config/objects.pyc b/MPSoC/soclib/utils/lib/python/soclib_cc/config/objects.pyc
deleted file mode 100644
index 9a3d803c473d2e79fca565e88d7c21c12975bca2..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 11379
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

diff --git a/MPSoC/soclib/utils/lib/python/soclib_cc/config/spool.pyc b/MPSoC/soclib/utils/lib/python/soclib_cc/config/spool.pyc
deleted file mode 100644
index a926fe7fc93a017ca4701175478411ba581b400b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 7958
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
A!2kdN

diff --git a/MPSoC/soclib/utils/lib/python/soclib_cc/exceptions.pyc b/MPSoC/soclib/utils/lib/python/soclib_cc/exceptions.pyc
deleted file mode 100644
index 53781f3db768be6b526ffc41341bb2147bf40005..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 414
zcmcgoK~4iP4D_}F(MlY+@&L3a`~g&<Ry~5MZZE(gf~;vHZIczwO6?iG#UuC%FJO{w
z`vf9+GGjZ|I6uFa<L{fZ7fXjT#C?y@Yd}pTMDGRF1$_~H5<NXb45%toU%Ud$cdghc
z^?YZgjV}1pr~=g~LN5TAgQv@?1gCNUh$(H1f8B~Pah%0A)LjGFcOgZY=>m*9l@Dd{
zDsIhd@vc)|twLz{VNrz{Yp{)b<1V^JIk9#hH^CqB##)x6N4;(L%QQY2(FEtkWAADN
VaoQ#K{D+zR8F&5qlWYn$=nrJRW2*oF

diff --git a/MPSoC/soclib/utils/lib/python/soclib_desc/__init__.pyc b/MPSoC/soclib/utils/lib/python/soclib_desc/__init__.pyc
deleted file mode 100644
index c83e72c7d689b557730561b038fd4815cabc528e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 324
zcmYjN!Ait15KX&UL=nWR9&#ws%bHqOu|-7i<Uv{7J=H^4n^*_CN$I33`*D7Rzv2(*
zq%7z_Uf!E|Gcfb@y}$c;vi)4KO@#E{(!*l{#aKxgurgpOWNO6TLskxCmTY-fN)X?x
zf=dYooRp{Sn&(#&o~3C%PS3~Lgr8j&7kQCoB{$Go9^-*;deSREu%;O7G5k<GCL=1j
zh=ArPDc#;cSGx07(uZDuEII?Gman#3E}YX{LRt0)I3+21q%NTiYN$o64fH7Hb88#%
wFrC>ufwpSkMf46D6rQzf_h!u|FO|kh{M*Xy(9r9pRehsxj)<c_KomsbFB-{G&Hw-a

diff --git a/MPSoC/soclib/utils/lib/python/soclib_desc/_warning_formatter.pyc b/MPSoC/soclib/utils/lib/python/soclib_desc/_warning_formatter.pyc
deleted file mode 100644
index bfee456b4ef0cfa57d7e6afee90e7dc6b92ecbb6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 910
zcmcgq&5qMB5FRIO`m?RX0U@N7P!R1ZmnGY-3fc%EP{o16R;b-m_F$FTEf$GgW!$1l
zJs>Tw#Y6Baya0^dE?hX1WG0`--)GH_fBfvWzn|4_7jS&)^nXK!U&#sj7<>lE|6m3=
zyN?Hu2O!9YAVSD%AZn1;LDV6SKtzx?oLn^E8>w0#8K^d>6SxB~Pk_k)R0l*8?ih4T
zmjc8A;4RP$7%68-i;_^k=$T+fu=ieMG5<2Jw9+fSG*vmbR#wl~yZCA}jE5H&SLYX(
z=YtpV;AJ)%WurkJYqd6U4<9)BRBjb2qcczMp)2<E_HtO>qd|$GkCh9z=gg%rCc|gs
zD5*VF0bmIPU<25PU_;nbB!FcT9?g<~coTd~zK`+T#(i{e)~D1Du$|Os(>BR*uIHuX
z+(vG(s-)Dm;h=W471j}XB}L*g@jInNoUf!;FXmRROttfir7EO5%pX-KEw%A-2NP0*
zcSw_jbc3?ORBDuJm9C^#8%%F*j49IV4>L1P(JTt}G2K{IVCv9%XFnNzjB_Dzk^XZG
zwoAt!=5n0U83oXl3M^z1>oDs|d3XJGJWCwe=YHfOb&}XSq+Ze$!9!QL64am*ig3QA
zylH-%PZ_PJjy`o<U+KhXId$XmI<!Jom4^!Hn(REJ&Pl!f+mHX!6j%PM(uhqVU!M}j
ThvYici%t-+$Qk)g^pyPu?v&9n

diff --git a/MPSoC/soclib/utils/lib/python/soclib_desc/abstraction_levels.pyc b/MPSoC/soclib/utils/lib/python/soclib_desc/abstraction_levels.pyc
deleted file mode 100644
index a76d3c102ce50e55062ec248c7cd5a25de265620..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3252
zcmd5;?`|7K5T8BA=Qy?7lt8MM4>f843zRx(iz=)rDs_c~C=psmLKv#m<!+lCIp4Y7
zb)ZuEDLe!(!$a^YJORI%bL<e2kFkg|<GJzP?#%q=&;IpybLG!Zsz1dv{cGa;8OZ$s
zmJl5(8bAP7lms*gD5+5L9wkfkJJA`@j{`hc$yVq!R)jO{5+${B?ea`prKC>D8YL?;
zRY*3Z<OW&1(GcDgepC1@;j3h;I4m60D7j7j_WLl-*TCW<8z0-T>qFl7Ch4}K1Lwz4
z?9(DQnLV+YdpLUA+TPmwvh@gTbL+|G_Eu|qyZgnH?&GI}R+Oc=JxOgkj)peNif2cK
zA4X~RFfN9z4R@RO)mY%LVYl38!{34StNB4M`J7&9$t;ixYo3GL129VxKVqjjgh~Vi
zE)ZdfbiZA}x;Owkryjq}c$_LaB{G6Xzs(!(3HSFQnkx)3rTcB(%`bsDo4xi`2ojby
z1QO<eFLfpkQS8{<+4Qh;X!CU9I{W)Yk#)ZNzF+h@u86brpfmAl<~l5m-uj~=pXyCw
zUEKN4*!yK{Z%mq}-k6UdJGO|_%vJVBTxBCY0o@B8vb|qNnX}@D<`{`HInY|13pa7>
z2{I+=Ws!4xIC}${b4S=*CiY7lxd8zX1GAK9y)UNkId*U7W49~rX<l4P?9<|0;i54H
zHDb)C5T`!0InGn0IJCz26<Ihel1YX~%?mU`sq0{KdqukD6w(~s7RZHQp{iHv6|t{3
z8eLg-T)Fn&Wrrf;oh0)(>P!OIQwYCpah<(*)uwj=odyiu8PTXo3J*Z@myn7YsW&ys
z6)CT%|AP;ZtPJFy<M5d7&TdP}SXxu+qAZ^bHQOvXyFZ>-`B~CfGZNSa_ROPs-GO8P
zKL@!67^xb9c~8|;Rh4!z=9;rtke-{h5RloV&p?urp%Q?#zq+q37GQ?il;~>i$pWk9
z#&8KzeT#LVg>+W|>M;)cKO(vcyB@J^96TV(8GmKH-ouZV>UB0IQMkNC%+<nel<8ZL
zdkJ=g0SRnS!JAycsp7hQ@#;SP9B?VWtI#R_13EkJ$dGs5tP__nPAJs|vzSMZRI?a5
z$&d5m*SyVVdCoO6HQkt_C{Hq*c<zL$w`0)INt3#?@Zuij?Bax(zCOL4XgPpcjN!7l
z#Nm#$19DvSr0S|k4RvQemN^pA93Ma^Zy;!i+yxtGi89)tz1tTV-Eca!`8B=9>;o`~
zXX!a(cf2t7Ja;i;4y|W!jCqbnnI5E8RYM7?dfx6h82T>Q+(418yB~92b=fq=KMd+2
zauQFm=b?cc=&;CTbi~m?B!bU|UM_JE67MTmHul-x1+$l-k_0v;$}$Xc-U|1x1Y#MK
z6WsLpdTb<RHTPZ3rK;H)4O(y%<leDU-ZXYU#PN=MK|Kgn7_6<VFRw4JH6hPF{{V}r
B+dBXN

diff --git a/MPSoC/soclib/utils/lib/python/soclib_desc/cache.pyc b/MPSoC/soclib/utils/lib/python/soclib_desc/cache.pyc
deleted file mode 100644
index 7651c3d55ca0e6746ecd3b0bfde6bc909de977af..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 4854
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
DMH?Ya

diff --git a/MPSoC/soclib/utils/lib/python/soclib_desc/component_builder.pyc b/MPSoC/soclib/utils/lib/python/soclib_desc/component_builder.pyc
deleted file mode 100644
index 6b429194f2e62079ddcfb2c616fed232bbe95b5e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1079
zcmcgq%We}f6m_0$1C?Nd1Pf%O3T2UGCMhj2s;Vkoph|5OC1ufJ;ZDYG>f+d=v8Phj
zu;r8Z2!4ex;CLp44O^JVXY6xt?mhQ-e*E0+e1F~gl#=z+!21Nt9s@WbF|bDB8sT*k
z*9mWsxIuW6#7)9mWPwnN@HXK)gm00rgnS|7I>vdM%(@+4=M~^mrbZ=}PD~+{GP*~P
zw9L$jwfAzMg*&z{ko9qLaoVHjGCS<inZb4xhHv|$a5%JWgg;Eq`wt@<V7qt5Bf2!a
zP-2j+=<r>5faGD=4-fm{dpdj*?e9ki!<hOmbk9EZ|Cx#hX{FIomA~hnfIT(K%xIzA
z7|OWF-SfYYXWEJUHc7?Cr5duvSY>4am*5Za<HMrqtn0(6hu`be=QaTg0$)69zX3XQ
z{Y-@`a&2ism9&nUTN-7nD1~P>y0Ioza?a+J!ohs5O!|2+9{bnLri7W_i_}?~nmiX4
zLvg7W)ES!PFv>?zwek!(%S@`o!HvPDKo^2Ysm*z%R;b&G^1QtU1cep34TQErE`o*7
zvarF`l`$%~nBc~ON@-9yscZnvLAG*tMz49sg-rwByL5ar5R$e~9jXfjnZ8>cKw8}f
z&}{=4)5%gW=KLqcSTzP?Q=jlhWV!pdN~iwrUSgFJ+x5$;yVt+gmJ}E{htyqgjHM=9
z<#KW7z&t7$B~$Mp&i<=rO!7_W0ruifaP|cmOO(QpzU6-%vb6lDGWqx!y4%Nqc5VHu
H@6>+*)UOpY

diff --git a/MPSoC/soclib/utils/lib/python/soclib_desc/description_files.pyc b/MPSoC/soclib/utils/lib/python/soclib_desc/description_files.pyc
deleted file mode 100644
index 44d4912288ae02aa09384f217c70d96fe94bfba3..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 10204
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
KyEWHr<M)3Xz!H=I

diff --git a/MPSoC/soclib/utils/lib/python/soclib_desc/error.pyc b/MPSoC/soclib/utils/lib/python/soclib_desc/error.pyc
deleted file mode 100644
index 86d7d05b968c4549404e7b85302b87537fb48f42..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 6818
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
KzwT;#wf%oh%N%q7

diff --git a/MPSoC/soclib/utils/lib/python/soclib_desc/metadata_file.pyc b/MPSoC/soclib/utils/lib/python/soclib_desc/metadata_file.pyc
deleted file mode 100644
index d688b00381112979ff5bceb56a4184068fbdfcab..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 6478
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
Q3VqJNMPkfF55JZF0VeYtUH||9

diff --git a/MPSoC/soclib/utils/lib/python/soclib_desc/module.pyc b/MPSoC/soclib/utils/lib/python/soclib_desc/module.pyc
deleted file mode 100644
index cd5bb387974d4a4c874ccbd7570ba6f4d90e7c0a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 6525
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

diff --git a/MPSoC/soclib/utils/lib/python/soclib_desc/parameter.pyc b/MPSoC/soclib/utils/lib/python/soclib_desc/parameter.pyc
deleted file mode 100644
index bb33dc0245581f135ce6c3270a7a1b017c4e5b57..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 25313
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

diff --git a/MPSoC/soclib/utils/lib/python/soclib_desc/specialization.pyc b/MPSoC/soclib/utils/lib/python/soclib_desc/specialization.pyc
deleted file mode 100644
index ad537c2cd91b56621b6915f41a47ac2bd880997d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 7763
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
XDarMP>b>4-FSJ`X4{mPU{M`QmA!DW5

diff --git a/MPSoC/soclib/utils/lib/python/soclib_utils/__init__.pyc b/MPSoC/soclib/utils/lib/python/soclib_utils/__init__.pyc
deleted file mode 100644
index 8d84a3f5ff0d2ec4cdbb87cc3b97aa40d594269c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 283
zcmcckiI;1y8f$bi0~9a<X$K%K761|{3=B~~l93^bks*bNAy|VMBx3+1R6J9x6yoDE
z^D;}~<Mj$E6)a7S6pRcEEOiZxbq&oF49%@fO|47~qZINo3-T3Iz{aTrrIuwDXXfWw
zft9QHX)pneDq#Z>K%-LP<4d@~%(B!XkgE824Iq~RK@<l9x%#EWKxzHdyyDc%bp7<y
zyv)*K{g9CS{2YDXfZ%**{o?%OoXjNs(vr-aVto*+pt2+*KMyJ%4-rRldI<;6RGZxV
Rl+v73J82-h800E8MgZIdMKk~a

diff --git a/MPSoC/soclib/utils/lib/python/soclib_utils/terminal.pyc b/MPSoC/soclib/utils/lib/python/soclib_utils/terminal.pyc
deleted file mode 100644
index f91268807a4cc26093ce0ab8f4ee1359cdd6bfb0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 875
zcmcgqT~5M45T0%M6GUFs1DHP93m9X<gYqC^OM<}%qTK=;YuB*bC<#2_wLFAZ@dEnI
z0!9y@lg{kd+3C!DGkyPP*58iGw+U^;$9V=d$1oC)pa-JiHx@J$Bt3eC(<A9S;B#0U
zl<<lAgmhgxeyu{=P!q!-2pN%X`HclF1zC@jPpU*KTzRw*q{_4aK)MRa3axxv`edu5
zY9vdv@M(qGWjcrhF3@#FtpMZ*BFm*OAc}pKU0VrufRG6$ojodTY#Df*<TkU+-OP=x
z@M)zktb=2frMY%-N+*b`<G$ayYM&1}-FUbOpB2eEyvU#Kk_R`8h%-jqjODUpIohP<
zwq61la>iT(g@s9HCQNgas!2FWb5)qI-`6?|FMF|Whejuvx(^GhG7~a-n%k+)H~!Ju
z?^xw`*)c9#$U53OM$byxDU&taKZ#wj>$SwbNcfF~`)otaA<Vo%mUtoYAg_@Sf;W7F
z^~HgQ>#pj-2FxScV+8$S{)iA)`pu^ak8%4IzGy(#b7zJTb9K!{Jc$44kXt!<)UwFZ
OQ=XIIe~Bl(Q~LtCS;8a$

diff --git a/modeling/LIP6/monoprocessor.xml b/modeling/LIP6/monoprocessor.xml
index f9d7a3a941..cc9cca4dee 100644
--- a/modeling/LIP6/monoprocessor.xml
+++ b/modeling/LIP6/monoprocessor.xml
@@ -7,7 +7,7 @@
 <MainCode value="void __user_init() {"/>
 <MainCode value="}"/>
 <Optimized value="true" />
-<Validated value="Block0;" />
+<Validated value="" />
 <Ignored value="" />
 
 <COMPONENT type="5000" id="25" >
@@ -63,6 +63,7 @@
 <cdparam x="458" y="139" />
 <sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
+<enabled value="true" />
 <cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
 <infoparam name="List of all parameters of an Avatar SMD transition" value="" />
 <TGConnectingPoint num="0" id="26" />
@@ -70,12 +71,12 @@
 <TGConnectingPoint num="2" id="28" />
 <TGConnectingPoint num="3" id="29" />
 <extraparam>
-<guard value="[ ]" />
-<afterMin value="" />
-<afterMax value="" />
-<computeMin value="" />
-<computeMax value="" />
-<probability value="" />
+<guard value="[ ]" enabled="true"/>
+<afterMin value="" enabled="true"/>
+<afterMax value="" enabled="true"/>
+<computeMin value="" enabled="true"/>
+<computeMax value="" enabled="true"/>
+<probability value="" enabled="true"/>
 </extraparam>
 </SUBCOMPONENT>
 
@@ -92,6 +93,7 @@
 <cdparam x="407" y="110" />
 <sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
+<enabled value="true" />
 <cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
 <infoparam name="List of all parameters of an Avatar SMD transition" value="" />
 <TGConnectingPoint num="0" id="33" />
@@ -99,12 +101,12 @@
 <TGConnectingPoint num="2" id="35" />
 <TGConnectingPoint num="3" id="36" />
 <extraparam>
-<guard value="[ ]" />
-<afterMin value="" />
-<afterMax value="" />
-<computeMin value="" />
-<computeMax value="" />
-<probability value="" />
+<guard value="[ ]" enabled="true"/>
+<afterMin value="" enabled="true"/>
+<afterMax value="" enabled="true"/>
+<computeMin value="" enabled="true"/>
+<computeMax value="" enabled="true"/>
+<probability value="" enabled="true"/>
 </extraparam>
 </SUBCOMPONENT>
 
@@ -121,6 +123,7 @@
 <cdparam x="410" y="65" />
 <sizeparam width="100" height="50" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
+<enabled value="true" />
 <cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
 <infoparam name="state0" value="state0" />
 <TGConnectingPoint num="0" id="42" />
@@ -554,7 +557,7 @@
 <Attribute period="6.0" time="ns" processCode="void processing() {
 	in.read();
 }
-                  " listStruct="" nameTemplate="" typeTemplate="int" listTypedef="" />
+                    " listStruct="" nameTemplate="" typeTemplate="int" listTypedef="" />
 </extraparam>
 </SUBCOMPONENT>
 <SUBCOMPONENT type="1604" id="264" >
@@ -599,7 +602,7 @@
 	out_de.write( (int) x);
 	tdf_out.write(x);
 }
-                     " listStruct="" nameTemplate="" typeTemplate="int" listTypedef="" />
+                       " listStruct="" nameTemplate="" typeTemplate="int" listTypedef="" />
 </extraparam>
 </SUBCOMPONENT>
 <SUBCOMPONENT type="1606" id="283" >
diff --git a/modeling/testforkandjoin.xml b/modeling/testforkandjoin.xml
index f79ec47ac5..f205175918 100644
--- a/modeling/testforkandjoin.xml
+++ b/modeling/testforkandjoin.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
+<?xml version="1.0" encoding="UTF-8"?>
 
 <TURTLEGMODELING version="1.0beta">
 
@@ -9,7 +9,7 @@
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <infoparam name="connector" value="Connector between ports" />
 <P1  x="418" y="288" id="5" />
-<P2  x="521" y="399" id="20" />
+<P2  x="508" y="412" id="20" />
 <AutomaticDrawing  data="true" />
 </CONNECTOR>
 <CONNECTOR type="126" id="2" >
@@ -17,14 +17,14 @@
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <infoparam name="connector" value="Connector between ports" />
 <P1  x="412" y="279" id="7" />
-<P2  x="525" y="159" id="31" />
+<P2  x="512" y="172" id="31" />
 <AutomaticDrawing  data="true" />
 </CONNECTOR>
 <CONNECTOR type="126" id="3" >
 <cdparam x="292" y="261" />
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <infoparam name="connector" value="Connector between ports" />
-<P1  x="279" y="248" id="42" />
+<P1  x="292" y="261" id="42" />
 <P2  x="396" y="288" id="4" />
 <AutomaticDrawing  data="true" />
 </CONNECTOR>
@@ -176,12 +176,13 @@
 <cdparam x="377" y="113" />
 <sizeparam width="74" height="20" minWidth="30" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
+<enabled value="true" />
 <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
 <infoparam name="read channel" value="chfork2(5) " />
 <TGConnectingPoint num="0" id="55" />
 <TGConnectingPoint num="1" id="56" />
 <extraparam>
-<Data channelName="chfork2" nbOfSamples="5" secPattern="" isAttacker="No" />
+<Data channelName="chfork2" nbOfSamples="5" secPattern="" isAttacker="No" isEncForm="No" />
 </extraparam>
 </COMPONENT>
 
@@ -198,7 +199,7 @@
 <cdparam x="407" y="70" />
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <infoparam name="connector" value="null" />
-<P1  x="407" y="70" id="58" />
+<P1  x="407" y="65" id="58" />
 <P2  x="414" y="108" id="55" />
 <AutomaticDrawing  data="true" />
 </CONNECTOR>
@@ -227,12 +228,13 @@
 <cdparam x="382" y="110" />
 <sizeparam width="74" height="20" minWidth="30" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
+<enabled value="true" />
 <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
 <infoparam name="read channel" value="chfork1(5) " />
 <TGConnectingPoint num="0" id="64" />
 <TGConnectingPoint num="1" id="65" />
 <extraparam>
-<Data channelName="chfork1" nbOfSamples="5" secPattern="" isAttacker="No" />
+<Data channelName="chfork1" nbOfSamples="5" secPattern="" isAttacker="No" isEncForm="No" />
 </extraparam>
 </COMPONENT>
 
@@ -249,7 +251,7 @@
 <cdparam x="407" y="70" />
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <infoparam name="connector" value="null" />
-<P1  x="407" y="70" id="67" />
+<P1  x="407" y="65" id="67" />
 <P2  x="419" y="105" id="64" />
 <AutomaticDrawing  data="true" />
 </CONNECTOR>
@@ -278,12 +280,13 @@
 <cdparam x="382" y="112" />
 <sizeparam width="62" height="20" minWidth="30" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
+<enabled value="true" />
 <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
 <infoparam name="write channel" value="chfork(5)" />
 <TGConnectingPoint num="0" id="73" />
 <TGConnectingPoint num="1" id="74" />
 <extraparam>
-<Data channelName="chfork" nbOfSamples="5" secPattern="" isAttacker="No" />
+<Data channelName="chfork" nbOfSamples="5" secPattern="" isAttacker="No" isEncForm="No" />
 </extraparam>
 </COMPONENT>
 
@@ -300,7 +303,7 @@
 <cdparam x="407" y="70" />
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <infoparam name="connector" value="null" />
-<P1  x="407" y="70" id="76" />
+<P1  x="407" y="65" id="76" />
 <P2  x="413" y="107" id="73" />
 <AutomaticDrawing  data="true" />
 </CONNECTOR>
@@ -504,9 +507,9 @@
 <SUBCOMPONENT type="1101" id="188" >
 <father id="213" num="0" />
 <cdparam x="105" y="292" />
-<sizeparam width="100" height="40" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<sizeparam width="102" height="40" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
-<cdrectangleparam minX="0" maxX="104" minY="0" maxY="60" />
+<cdrectangleparam minX="0" maxX="102" minY="0" maxY="60" />
 <infoparam name="TGComponent" value="FVFork::src" />
 <TGConnectingPoint num="0" id="180" />
 <TGConnectingPoint num="1" id="181" />
@@ -559,9 +562,9 @@
 <SUBCOMPONENT type="1101" id="222" >
 <father id="247" num="0" />
 <cdparam x="1349" y="701" />
-<sizeparam width="116" height="40" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<sizeparam width="119" height="40" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
-<cdrectangleparam minX="0" maxX="134" minY="0" maxY="160" />
+<cdrectangleparam minX="0" maxX="131" minY="0" maxY="160" />
 <infoparam name="TGComponent" value="FVFork::Dest2" />
 <TGConnectingPoint num="0" id="214" />
 <TGConnectingPoint num="1" id="215" />
@@ -614,9 +617,9 @@
 <SUBCOMPONENT type="1101" id="256" >
 <father id="281" num="0" />
 <cdparam x="1165" y="190" />
-<sizeparam width="116" height="40" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<sizeparam width="119" height="40" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
-<cdrectangleparam minX="0" maxX="121" minY="0" maxY="66" />
+<cdrectangleparam minX="0" maxX="118" minY="0" maxY="66" />
 <infoparam name="TGComponent" value="FVFork::Dest1" />
 <TGConnectingPoint num="0" id="248" />
 <TGConnectingPoint num="1" id="249" />
@@ -741,9 +744,9 @@
 <SUBCOMPONENT type="1103" id="340" >
 <father id="365" num="0" />
 <cdparam x="854" y="834" />
-<sizeparam width="174" height="40" minWidth="75" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<sizeparam width="178" height="40" minWidth="75" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
-<cdrectangleparam minX="0" maxX="209" minY="0" maxY="162" />
+<cdrectangleparam minX="0" maxX="205" minY="0" maxY="162" />
 <infoparam name="TGComponent" value="FVFork::chfork__chfork2" />
 <TGConnectingPoint num="0" id="332" />
 <TGConnectingPoint num="1" id="333" />
@@ -796,9 +799,9 @@
 <SUBCOMPONENT type="1103" id="374" >
 <father id="399" num="0" />
 <cdparam x="668" y="132" />
-<sizeparam width="174" height="40" minWidth="75" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<sizeparam width="178" height="40" minWidth="75" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
-<cdrectangleparam minX="0" maxX="172" minY="0" maxY="120" />
+<cdrectangleparam minX="0" maxX="168" minY="0" maxY="120" />
 <infoparam name="TGComponent" value="FVFork::chfork__chfork1" />
 <TGConnectingPoint num="0" id="366" />
 <TGConnectingPoint num="1" id="367" />
@@ -1115,12 +1118,13 @@
 <cdparam x="375" y="98" />
 <sizeparam width="73" height="20" minWidth="30" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
+<enabled value="true" />
 <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
 <infoparam name="write channel" value="chjoin1(5)" />
 <TGConnectingPoint num="0" id="464" />
 <TGConnectingPoint num="1" id="465" />
 <extraparam>
-<Data channelName="chjoin1" nbOfSamples="5" secPattern="" isAttacker="No" />
+<Data channelName="chjoin1" nbOfSamples="5" secPattern="" isAttacker="No" isEncForm="No" />
 </extraparam>
 </COMPONENT>
 
@@ -1137,7 +1141,7 @@
 <cdparam x="407" y="70" />
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <infoparam name="connector" value="null" />
-<P1  x="407" y="70" id="467" />
+<P1  x="407" y="65" id="467" />
 <P2  x="411" y="93" id="464" />
 <AutomaticDrawing  data="true" />
 </CONNECTOR>
@@ -1166,12 +1170,13 @@
 <cdparam x="385" y="106" />
 <sizeparam width="77" height="20" minWidth="30" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
+<enabled value="true" />
 <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
 <infoparam name="read channel" value="chjoin(10) " />
 <TGConnectingPoint num="0" id="473" />
 <TGConnectingPoint num="1" id="474" />
 <extraparam>
-<Data channelName="chjoin" nbOfSamples="10" secPattern="" isAttacker="No" />
+<Data channelName="chjoin" nbOfSamples="10" secPattern="" isAttacker="No" isEncForm="No" />
 </extraparam>
 </COMPONENT>
 
@@ -1188,7 +1193,7 @@
 <cdparam x="407" y="70" />
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <infoparam name="connector" value="null" />
-<P1  x="407" y="70" id="476" />
+<P1  x="407" y="65" id="476" />
 <P2  x="423" y="101" id="473" />
 <AutomaticDrawing  data="true" />
 </CONNECTOR>
@@ -1217,12 +1222,13 @@
 <cdparam x="377" y="108" />
 <sizeparam width="73" height="20" minWidth="30" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
+<enabled value="true" />
 <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
 <infoparam name="write channel" value="chjoin2(5)" />
 <TGConnectingPoint num="0" id="482" />
 <TGConnectingPoint num="1" id="483" />
 <extraparam>
-<Data channelName="chjoin2" nbOfSamples="5" secPattern="" isAttacker="No" />
+<Data channelName="chjoin2" nbOfSamples="5" secPattern="" isAttacker="No" isEncForm="No" />
 </extraparam>
 </COMPONENT>
 
@@ -1239,7 +1245,7 @@
 <cdparam x="407" y="70" />
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <infoparam name="connector" value="null" />
-<P1  x="407" y="70" id="485" />
+<P1  x="407" y="65" id="485" />
 <P2  x="413" y="103" id="482" />
 <AutomaticDrawing  data="true" />
 </CONNECTOR>
@@ -1334,11 +1340,11 @@
 </COMPONENT>
 <SUBCOMPONENT type="1103" id="522" >
 <father id="556" num="0" />
-<cdparam x="146" y="537" />
+<cdparam x="170" y="586" />
 <sizeparam width="166" height="40" minWidth="75" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <cdrectangleparam minX="0" maxX="101" minY="0" maxY="175" />
-<infoparam name="TGComponent" value="FVJoin::chjoin2__chjoin" />
+<infoparam name="TGComponent" value="FVJoin::chjoin1__chjoin" />
 <TGConnectingPoint num="0" id="514" />
 <TGConnectingPoint num="1" id="515" />
 <TGConnectingPoint num="2" id="516" />
@@ -1348,16 +1354,16 @@
 <TGConnectingPoint num="6" id="520" />
 <TGConnectingPoint num="7" id="521" />
 <extraparam>
-<info value="FVJoin::chjoin2__chjoin" communicationName="chjoin2__chjoin" referenceCommunicationName="FVJoin" priority="0" typeName="channel" />
+<info value="FVJoin::chjoin1__chjoin" communicationName="chjoin1__chjoin" referenceCommunicationName="FVJoin" priority="0" typeName="channel" />
 </extraparam>
 </SUBCOMPONENT>
 <SUBCOMPONENT type="1103" id="531" >
 <father id="556" num="1" />
-<cdparam x="170" y="586" />
+<cdparam x="146" y="537" />
 <sizeparam width="166" height="40" minWidth="75" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <cdrectangleparam minX="0" maxX="101" minY="0" maxY="175" />
-<infoparam name="TGComponent" value="FVJoin::chjoin1__chjoin" />
+<infoparam name="TGComponent" value="FVJoin::chjoin2__chjoin" />
 <TGConnectingPoint num="0" id="523" />
 <TGConnectingPoint num="1" id="524" />
 <TGConnectingPoint num="2" id="525" />
@@ -1367,7 +1373,7 @@
 <TGConnectingPoint num="6" id="529" />
 <TGConnectingPoint num="7" id="530" />
 <extraparam>
-<info value="FVJoin::chjoin1__chjoin" communicationName="chjoin1__chjoin" referenceCommunicationName="FVJoin" priority="0" typeName="channel" />
+<info value="FVJoin::chjoin2__chjoin" communicationName="chjoin2__chjoin" referenceCommunicationName="FVJoin" priority="0" typeName="channel" />
 </extraparam>
 </SUBCOMPONENT>
 
@@ -1481,9 +1487,9 @@
 <SUBCOMPONENT type="1101" id="615" >
 <father id="640" num="0" />
 <cdparam x="183" y="295" />
-<sizeparam width="103" height="40" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<sizeparam width="105" height="40" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
-<cdrectangleparam minX="0" maxX="101" minY="0" maxY="60" />
+<cdrectangleparam minX="0" maxX="99" minY="0" maxY="60" />
 <infoparam name="TGComponent" value="FVJoin::dest" />
 <TGConnectingPoint num="0" id="607" />
 <TGConnectingPoint num="1" id="608" />
@@ -1979,12 +1985,13 @@
 <cdparam x="380" y="117" />
 <sizeparam width="69" height="20" minWidth="30" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
+<enabled value="true" />
 <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
 <infoparam name="read channel" value="comm(3) " />
 <TGConnectingPoint num="0" id="844" />
 <TGConnectingPoint num="1" id="845" />
 <extraparam>
-<Data channelName="comm" nbOfSamples="3" secPattern="" isAttacker="No" />
+<Data channelName="comm" nbOfSamples="3" secPattern="" isAttacker="No" isEncForm="No" />
 </extraparam>
 </COMPONENT>
 
@@ -2001,7 +2008,7 @@
 <cdparam x="407" y="70" />
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <infoparam name="connector" value="null" />
-<P1  x="407" y="70" id="847" />
+<P1  x="407" y="65" id="847" />
 <P2  x="414" y="112" id="844" />
 <AutomaticDrawing  data="true" />
 </CONNECTOR>
@@ -2030,12 +2037,13 @@
 <cdparam x="378" y="98" />
 <sizeparam width="65" height="20" minWidth="30" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
+<enabled value="true" />
 <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
 <infoparam name="write channel" value="comm(3)" />
 <TGConnectingPoint num="0" id="853" />
 <TGConnectingPoint num="1" id="854" />
 <extraparam>
-<Data channelName="comm" nbOfSamples="3" secPattern="" isAttacker="No" />
+<Data channelName="comm" nbOfSamples="3" secPattern="" isAttacker="No" isEncForm="No" />
 </extraparam>
 </COMPONENT>
 
@@ -2052,7 +2060,7 @@
 <cdparam x="407" y="70" />
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <infoparam name="connector" value="null" />
-<P1  x="407" y="70" id="856" />
+<P1  x="407" y="65" id="856" />
 <P2  x="410" y="93" id="853" />
 <AutomaticDrawing  data="true" />
 </CONNECTOR>
@@ -2074,176 +2082,157 @@
 
 <Modeling type="TML Architecture" nameTab="Architecture" >
 <TMLArchiDiagramPanel name="DIPLODOCUS architecture and mapping Diagram" minX="10" maxX="2500" minY="10" maxY="1500" attributes="0" masterClockFrequency="200" >
-<COMPONENT type="1105" id="884" >
+<COMPONENT type="1105" id="893" >
 <cdparam x="669" y="81" />
 <sizeparam width="200" height="200" minWidth="100" minHeight="35" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
 <infoparam name="Memory0" value="name" />
-<TGConnectingPoint num="0" id="860" />
-<TGConnectingPoint num="1" id="861" />
-<TGConnectingPoint num="2" id="862" />
-<TGConnectingPoint num="3" id="863" />
-<TGConnectingPoint num="4" id="864" />
-<TGConnectingPoint num="5" id="865" />
-<TGConnectingPoint num="6" id="866" />
-<TGConnectingPoint num="7" id="867" />
-<TGConnectingPoint num="8" id="868" />
-<TGConnectingPoint num="9" id="869" />
-<TGConnectingPoint num="10" id="870" />
-<TGConnectingPoint num="11" id="871" />
-<TGConnectingPoint num="12" id="872" />
-<TGConnectingPoint num="13" id="873" />
-<TGConnectingPoint num="14" id="874" />
-<TGConnectingPoint num="15" id="875" />
-<TGConnectingPoint num="16" id="876" />
-<TGConnectingPoint num="17" id="877" />
-<TGConnectingPoint num="18" id="878" />
-<TGConnectingPoint num="19" id="879" />
-<TGConnectingPoint num="20" id="880" />
-<TGConnectingPoint num="21" id="881" />
-<TGConnectingPoint num="22" id="882" />
-<TGConnectingPoint num="23" id="883" />
+<TGConnectingPoint num="0" id="869" />
+<TGConnectingPoint num="1" id="870" />
+<TGConnectingPoint num="2" id="871" />
+<TGConnectingPoint num="3" id="872" />
+<TGConnectingPoint num="4" id="873" />
+<TGConnectingPoint num="5" id="874" />
+<TGConnectingPoint num="6" id="875" />
+<TGConnectingPoint num="7" id="876" />
+<TGConnectingPoint num="8" id="877" />
+<TGConnectingPoint num="9" id="878" />
+<TGConnectingPoint num="10" id="879" />
+<TGConnectingPoint num="11" id="880" />
+<TGConnectingPoint num="12" id="881" />
+<TGConnectingPoint num="13" id="882" />
+<TGConnectingPoint num="14" id="883" />
+<TGConnectingPoint num="15" id="884" />
+<TGConnectingPoint num="16" id="885" />
+<TGConnectingPoint num="17" id="886" />
+<TGConnectingPoint num="18" id="887" />
+<TGConnectingPoint num="19" id="888" />
+<TGConnectingPoint num="20" id="889" />
+<TGConnectingPoint num="21" id="890" />
+<TGConnectingPoint num="22" id="891" />
+<TGConnectingPoint num="23" id="892" />
 <extraparam>
 <info stereotype="MEMORY" nodeName="Memory0" />
 <attributes byteDataSize="4"  memorySize="1024"  clockRatio="1"  bufferType="0" />
 </extraparam>
 </COMPONENT>
-<SUBCOMPONENT type="1103" id="974" >
-<father id="884" num="0" />
+<SUBCOMPONENT type="1103" id="868" >
+<father id="893" num="0" />
 <cdparam x="672" y="150" />
-<sizeparam width="113" height="40" minWidth="75" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<sizeparam width="111" height="40" minWidth="75" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
-<cdrectangleparam minX="0" maxX="87" minY="0" maxY="160" />
+<cdrectangleparam minX="0" maxX="89" minY="0" maxY="160" />
 <infoparam name="TGComponent" value="Basic::comm" />
-<TGConnectingPoint num="0" id="975" />
-<TGConnectingPoint num="1" id="976" />
-<TGConnectingPoint num="2" id="977" />
-<TGConnectingPoint num="3" id="978" />
-<TGConnectingPoint num="4" id="979" />
-<TGConnectingPoint num="5" id="980" />
-<TGConnectingPoint num="6" id="981" />
-<TGConnectingPoint num="7" id="982" />
+<TGConnectingPoint num="0" id="860" />
+<TGConnectingPoint num="1" id="861" />
+<TGConnectingPoint num="2" id="862" />
+<TGConnectingPoint num="3" id="863" />
+<TGConnectingPoint num="4" id="864" />
+<TGConnectingPoint num="5" id="865" />
+<TGConnectingPoint num="6" id="866" />
+<TGConnectingPoint num="7" id="867" />
 <extraparam>
 <info value="Basic::comm" communicationName="comm" referenceCommunicationName="Basic" priority="0" typeName="channel" />
 </extraparam>
 </SUBCOMPONENT>
 
-<COMPONENT type="1102" id="918" >
+<COMPONENT type="1102" id="927" >
 <cdparam x="418" y="340" />
 <sizeparam width="362" height="126" minWidth="100" minHeight="50" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
 <infoparam name="Bus0" value="name" />
-<TGConnectingPoint num="0" id="894" />
-<TGConnectingPoint num="1" id="895" />
-<TGConnectingPoint num="2" id="896" />
-<TGConnectingPoint num="3" id="897" />
-<TGConnectingPoint num="4" id="898" />
-<TGConnectingPoint num="5" id="899" />
-<TGConnectingPoint num="6" id="900" />
-<TGConnectingPoint num="7" id="901" />
-<TGConnectingPoint num="8" id="902" />
-<TGConnectingPoint num="9" id="903" />
-<TGConnectingPoint num="10" id="904" />
-<TGConnectingPoint num="11" id="905" />
-<TGConnectingPoint num="12" id="906" />
-<TGConnectingPoint num="13" id="907" />
-<TGConnectingPoint num="14" id="908" />
-<TGConnectingPoint num="15" id="909" />
-<TGConnectingPoint num="16" id="910" />
-<TGConnectingPoint num="17" id="911" />
-<TGConnectingPoint num="18" id="912" />
-<TGConnectingPoint num="19" id="913" />
-<TGConnectingPoint num="20" id="914" />
-<TGConnectingPoint num="21" id="915" />
-<TGConnectingPoint num="22" id="916" />
-<TGConnectingPoint num="23" id="917" />
+<TGConnectingPoint num="0" id="903" />
+<TGConnectingPoint num="1" id="904" />
+<TGConnectingPoint num="2" id="905" />
+<TGConnectingPoint num="3" id="906" />
+<TGConnectingPoint num="4" id="907" />
+<TGConnectingPoint num="5" id="908" />
+<TGConnectingPoint num="6" id="909" />
+<TGConnectingPoint num="7" id="910" />
+<TGConnectingPoint num="8" id="911" />
+<TGConnectingPoint num="9" id="912" />
+<TGConnectingPoint num="10" id="913" />
+<TGConnectingPoint num="11" id="914" />
+<TGConnectingPoint num="12" id="915" />
+<TGConnectingPoint num="13" id="916" />
+<TGConnectingPoint num="14" id="917" />
+<TGConnectingPoint num="15" id="918" />
+<TGConnectingPoint num="16" id="919" />
+<TGConnectingPoint num="17" id="920" />
+<TGConnectingPoint num="18" id="921" />
+<TGConnectingPoint num="19" id="922" />
+<TGConnectingPoint num="20" id="923" />
+<TGConnectingPoint num="21" id="924" />
+<TGConnectingPoint num="22" id="925" />
+<TGConnectingPoint num="23" id="926" />
 <extraparam>
 <info stereotype="BUS-RR" nodeName="Bus0" />
 <attributes byteDataSize="4"  arbitrationPolicy="0"  sliceTime="10000"  pipelineSize="1"  clockRatio="1"  privacy="0"  referenceAttack="null" />
 </extraparam>
 </COMPONENT>
-<SUBCOMPONENT type="1103" id="893" >
-<father id="918" num="0" />
+<SUBCOMPONENT type="1103" id="902" >
+<father id="927" num="0" />
 <cdparam x="557" y="388" />
-<sizeparam width="113" height="40" minWidth="75" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<sizeparam width="111" height="40" minWidth="75" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
-<cdrectangleparam minX="0" maxX="249" minY="0" maxY="86" />
+<cdrectangleparam minX="0" maxX="251" minY="0" maxY="86" />
 <infoparam name="TGComponent" value="Basic::comm" />
-<TGConnectingPoint num="0" id="885" />
-<TGConnectingPoint num="1" id="886" />
-<TGConnectingPoint num="2" id="887" />
-<TGConnectingPoint num="3" id="888" />
-<TGConnectingPoint num="4" id="889" />
-<TGConnectingPoint num="5" id="890" />
-<TGConnectingPoint num="6" id="891" />
-<TGConnectingPoint num="7" id="892" />
+<TGConnectingPoint num="0" id="894" />
+<TGConnectingPoint num="1" id="895" />
+<TGConnectingPoint num="2" id="896" />
+<TGConnectingPoint num="3" id="897" />
+<TGConnectingPoint num="4" id="898" />
+<TGConnectingPoint num="5" id="899" />
+<TGConnectingPoint num="6" id="900" />
+<TGConnectingPoint num="7" id="901" />
 <extraparam>
 <info value="Basic::comm" communicationName="comm" referenceCommunicationName="Basic" priority="0" typeName="channel" />
 </extraparam>
 </SUBCOMPONENT>
 
-<COMPONENT type="1100" id="961" >
+<COMPONENT type="1100" id="970" >
 <cdparam x="198" y="79" />
 <sizeparam width="250" height="200" minWidth="150" minHeight="100" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
 <infoparam name="CPU0" value="name" />
-<TGConnectingPoint num="0" id="937" />
-<TGConnectingPoint num="1" id="938" />
-<TGConnectingPoint num="2" id="939" />
-<TGConnectingPoint num="3" id="940" />
-<TGConnectingPoint num="4" id="941" />
-<TGConnectingPoint num="5" id="942" />
-<TGConnectingPoint num="6" id="943" />
-<TGConnectingPoint num="7" id="944" />
-<TGConnectingPoint num="8" id="945" />
-<TGConnectingPoint num="9" id="946" />
-<TGConnectingPoint num="10" id="947" />
-<TGConnectingPoint num="11" id="948" />
-<TGConnectingPoint num="12" id="949" />
-<TGConnectingPoint num="13" id="950" />
-<TGConnectingPoint num="14" id="951" />
-<TGConnectingPoint num="15" id="952" />
-<TGConnectingPoint num="16" id="953" />
-<TGConnectingPoint num="17" id="954" />
-<TGConnectingPoint num="18" id="955" />
-<TGConnectingPoint num="19" id="956" />
-<TGConnectingPoint num="20" id="957" />
-<TGConnectingPoint num="21" id="958" />
-<TGConnectingPoint num="22" id="959" />
-<TGConnectingPoint num="23" id="960" />
+<TGConnectingPoint num="0" id="946" />
+<TGConnectingPoint num="1" id="947" />
+<TGConnectingPoint num="2" id="948" />
+<TGConnectingPoint num="3" id="949" />
+<TGConnectingPoint num="4" id="950" />
+<TGConnectingPoint num="5" id="951" />
+<TGConnectingPoint num="6" id="952" />
+<TGConnectingPoint num="7" id="953" />
+<TGConnectingPoint num="8" id="954" />
+<TGConnectingPoint num="9" id="955" />
+<TGConnectingPoint num="10" id="956" />
+<TGConnectingPoint num="11" id="957" />
+<TGConnectingPoint num="12" id="958" />
+<TGConnectingPoint num="13" id="959" />
+<TGConnectingPoint num="14" id="960" />
+<TGConnectingPoint num="15" id="961" />
+<TGConnectingPoint num="16" id="962" />
+<TGConnectingPoint num="17" id="963" />
+<TGConnectingPoint num="18" id="964" />
+<TGConnectingPoint num="19" id="965" />
+<TGConnectingPoint num="20" id="966" />
+<TGConnectingPoint num="21" id="967" />
+<TGConnectingPoint num="22" id="968" />
+<TGConnectingPoint num="23" id="969" />
 <extraparam>
 <info stereotype="CPURR" nodeName="CPU0" />
 <attributes nbOfCores="1" byteDataSize="4"  schedulingPolicy="0"  sliceTime="10000"  goIdleTime="10"  maxConsecutiveIdleCycles="10"  pipelineSize="5"  taskSwitchingTime="20"  branchingPredictionPenalty="2"  cacheMiss="5" execiTime="1" execcTime="1" clockRatio="1" MECType="0" encryption="0"/>
 </extraparam>
 </COMPONENT>
-<SUBCOMPONENT type="1101" id="927" >
-<father id="961" num="0" />
-<cdparam x="258" y="136" />
-<sizeparam width="113" height="54" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
-<hidden value="false" />
-<cdrectangleparam minX="0" maxX="137" minY="0" maxY="146" />
-<infoparam name="TGComponent" value="Basic::Task1" />
-<TGConnectingPoint num="0" id="919" />
-<TGConnectingPoint num="1" id="920" />
-<TGConnectingPoint num="2" id="921" />
-<TGConnectingPoint num="3" id="922" />
-<TGConnectingPoint num="4" id="923" />
-<TGConnectingPoint num="5" id="924" />
-<TGConnectingPoint num="6" id="925" />
-<TGConnectingPoint num="7" id="926" />
-<extraparam>
-<info value="Basic::Task1" taskName="Task1" referenceTaskName="Basic" priority="0" operation="Dest2" fatherComponentMECType="0" />
-</extraparam>
-</SUBCOMPONENT>
 <SUBCOMPONENT type="1101" id="936" >
-<father id="961" num="1" />
+<father id="970" num="0" />
 <cdparam x="267" y="218" />
-<sizeparam width="113" height="40" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<sizeparam width="110" height="40" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
-<cdrectangleparam minX="0" maxX="137" minY="0" maxY="160" />
+<cdrectangleparam minX="0" maxX="140" minY="0" maxY="160" />
 <infoparam name="TGComponent" value="Basic::Task2" />
 <TGConnectingPoint num="0" id="928" />
 <TGConnectingPoint num="1" id="929" />
@@ -2257,25 +2246,44 @@
 <info value="Basic::Task2" taskName="Task2" referenceTaskName="Basic" priority="0" operation="Dest2" fatherComponentMECType="0" />
 </extraparam>
 </SUBCOMPONENT>
+<SUBCOMPONENT type="1101" id="945" >
+<father id="970" num="1" />
+<cdparam x="258" y="136" />
+<sizeparam width="110" height="54" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="0" maxX="140" minY="0" maxY="146" />
+<infoparam name="TGComponent" value="Basic::Task1" />
+<TGConnectingPoint num="0" id="937" />
+<TGConnectingPoint num="1" id="938" />
+<TGConnectingPoint num="2" id="939" />
+<TGConnectingPoint num="3" id="940" />
+<TGConnectingPoint num="4" id="941" />
+<TGConnectingPoint num="5" id="942" />
+<TGConnectingPoint num="6" id="943" />
+<TGConnectingPoint num="7" id="944" />
+<extraparam>
+<info value="Basic::Task1" taskName="Task1" referenceTaskName="Basic" priority="0" operation="Dest2" fatherComponentMECType="0" />
+</extraparam>
+</SUBCOMPONENT>
 
-<CONNECTOR type="125" id="962" >
+<CONNECTOR type="125" id="971" >
 <cdparam x="719" y="281" />
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <infoparam name="connector" value="{info}" />
-<P1  x="719" y="281" id="874" />
-<P2  x="689" y="340" id="903" />
+<P1  x="719" y="281" id="883" />
+<P2  x="689" y="340" id="912" />
 <AutomaticDrawing  data="true" />
 <extraparam>
 <info priority="0" />
 <spy value="false" />
 </extraparam>
 </CONNECTOR>
-<CONNECTOR type="125" id="963" >
+<CONNECTOR type="125" id="972" >
 <cdparam x="385" y="279" />
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <infoparam name="connector" value="{info}" />
-<P1  x="385" y="279" id="952" />
-<P2  x="418" y="340" id="894" />
+<P1  x="385" y="279" id="961" />
+<P2  x="418" y="340" id="903" />
 <AutomaticDrawing  data="true" />
 <extraparam>
 <info priority="0" />
-- 
GitLab