Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Constants.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Constants.h	(revision 62)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Constants.h	(revision 71)
@@ -11,4 +11,5 @@
 
   //-------------------------------------------------------[ Memory ]-----
+#define OPERATION_MEMORY_LOAD                    0x0      // 000_0000
 #define OPERATION_MEMORY_LOAD_8_Z                0x0      // 000_0000
 #define OPERATION_MEMORY_LOAD_16_Z               0x20     // 010_0000
@@ -55,4 +56,10 @@
 	 (x == OPERATION_MEMORY_STORE_HEAD_KO))
 
+#define is_operation_memory_load_signed(x)      \
+        ((x == OPERATION_MEMORY_LOAD_8_S ) or	\
+	 (x == OPERATION_MEMORY_LOAD_16_S) or	\
+	 (x == OPERATION_MEMORY_LOAD_32_S) or	\
+	 (x == OPERATION_MEMORY_LOAD_64_S) )
+
 #define MEMORY_ACCESS_8                          0x0
 #define MEMORY_ACCESS_16                         0x1
@@ -60,8 +67,24 @@
 #define MEMORY_ACCESS_64                         0x3
 
+#define MEMORY_SIZE_8                            8 
+#define MEMORY_SIZE_16                           16
+#define MEMORY_SIZE_32                           32
+#define MEMORY_SIZE_64                           64
+
 #define MASK_MEMORY_ACCESS_8                     0x0
 #define MASK_MEMORY_ACCESS_16                    0x1
 #define MASK_MEMORY_ACCESS_32                    0x3
 #define MASK_MEMORY_ACCESS_64                    0x7
+
+#define memory_size(x)                                                           \
+	(((x==OPERATION_MEMORY_LOAD_16_Z)or					 \
+	   (x==OPERATION_MEMORY_LOAD_16_S)or					 \
+	   (x==OPERATION_MEMORY_STORE_16 ))?MEMORY_SIZE_16:			 \
+	  (((x==OPERATION_MEMORY_LOAD_32_Z)or					 \
+	    (x==OPERATION_MEMORY_LOAD_32_S)or					 \
+	    (x==OPERATION_MEMORY_STORE_32 ))?MEMORY_SIZE_32:			 \
+	   (((x==OPERATION_MEMORY_LOAD_64_Z)or					 \
+	     (x==OPERATION_MEMORY_LOAD_64_S)or					 \
+	     (x==OPERATION_MEMORY_STORE_64 ))?MEMORY_SIZE_64:MEMORY_SIZE_8)))
 
 #define memory_access(x)                                                         \
@@ -86,5 +109,4 @@
 	     (x==OPERATION_MEMORY_LOAD_64_S)or					 \
 	     (x==OPERATION_MEMORY_STORE_64 ))?MASK_MEMORY_ACCESS_64:MASK_MEMORY_ACCESS_8)))
-
     
   //====================================================[ Exception ]=====
@@ -131,23 +153,23 @@
 #define EXCEPTION_MEMORY_BUS_ERROR               0x4  // Access at a invalid physical address
 #define EXCEPTION_MEMORY_MISS_SPECULATION        0x5  // Load miss speculation
+#define EXCEPTION_MEMORY_LOAD_SPECULATIVE        0x6  // The load is speculative : write in register file, but don't commit
 
   //==================================================[ dcache_type ]=====
-#  define DCACHE_LOAD                    0x0      // 0000
-#  define DCACHE_LOCK                    0x1      // 0001
-#  define DCACHE_INVALIDATE              0x2      // 0010
-#  define DCACHE_PREFETCH                0x3      // 0011
-//#define DCACHE_                        0x4      // 0100
-//#define DCACHE_                        0x5      // 0101
-#  define DCACHE_FLUSH                   0x6      // 0110
-#  define DCACHE_SYNCHRONIZATION         0x7      // 0111
-
-#  define DCACHE_STORE_8                 0x8      // 1000
-#  define DCACHE_STORE_16                0x9      // 1001
-#  define DCACHE_STORE_32                0xa      // 1010
-#  define DCACHE_STORE_64                0xb      // 1011
-//#define DCACHE_                        0xc      // 1100
-//#define DCACHE_                        0xd      // 1101
-//#define DCACHE_                        0xe      // 1110
-//#define DCACHE_                        0xf      // 1111
+#  define DCACHE_LOAD                    0x0 // 0000
+#  define DCACHE_LOCK                    0x1 // 0001
+#  define DCACHE_INVALIDATE              0x2 // 0010
+#  define DCACHE_PREFETCH                0x3 // 0011
+//#define DCACHE_                        0x4 // 0100
+//#define DCACHE_                        0x5 // 0101
+#  define DCACHE_FLUSH                   0x6 // 0110
+#  define DCACHE_SYNCHRONIZATION         0x7 // 0111
+#  define DCACHE_STORE_8                 0x8 // 1000
+#  define DCACHE_STORE_16                0x9 // 1001
+#  define DCACHE_STORE_32                0xa // 1010
+#  define DCACHE_STORE_64                0xb // 1011
+//#define DCACHE_                        0xc // 1100
+//#define DCACHE_                        0xd // 1101
+//#define DCACHE_                        0xe // 1110
+//#define DCACHE_                        0xf // 1111
 
 
