Index: soft/giet_vm/Makefile
===================================================================
--- soft/giet_vm/Makefile	(revision 582)
+++ soft/giet_vm/Makefile	(revision 583)
@@ -95,19 +95,20 @@
                build/boot/boot_entry.o
 
-MATH_OBJ     = build/libs/math/e_pow.o 		\
-               build/libs/math/e_rem_pio2.o	\
-               build/libs/math/k_cos.o		\
-               build/libs/math/k_rem_pio2.o	\
-               build/libs/math/k_sin.o		\
-               build/libs/math/s_copysign.o	\
-               build/libs/math/s_fabs.o		\
-               build/libs/math/s_finite.o	\
-               build/libs/math/s_floor.o	\
-               build/libs/math/s_isnan.o	\
-               build/libs/math/sqrt.o		\
-               build/libs/math/s_rint.o		\
-               build/libs/math/s_scalbn.o	\
-               build/libs/math/s_sin.o
-#               build/libs/math/e_sqrt.o		\
+### Objects to be linked for the math library
+MATH_OBJS     = build/libs/math/e_pow.o        \
+                build/libs/math/e_rem_pio2.o   \
+                build/libs/math/k_cos.o        \
+                build/libs/math/k_rem_pio2.o   \
+                build/libs/math/k_sin.o        \
+                build/libs/math/s_copysign.o   \
+                build/libs/math/s_fabs.o       \
+                build/libs/math/s_finite.o     \
+                build/libs/math/s_floor.o      \
+                build/libs/math/s_isnan.o      \
+                build/libs/math/sqrt.o         \
+                build/libs/math/s_rint.o       \
+                build/libs/math/s_scalbn.o     \
+                build/libs/math/s_sin.o        \
+                build/libs/math/e_sqrt.o       \
 
 ### Objects to be linked for display.elf
@@ -214,4 +215,5 @@
 
 all: build                           \
+     $(DISK_IMAGE)                   \
      map.bin                         \
      hard_config.h                   \
@@ -230,33 +232,15 @@
      build/classif/classif.elf       \
      build/coproc/coproc.elf         \
-     $(DISK_IMAGE)
-#    build/ocean/ocean.elf           \
-### Copy always all files into disk image
-	mcopy -o -i $(DISK_IMAGE) build/kernel/kernel.elf ::/build/kernel
-	mcopy -o -i $(DISK_IMAGE) build/display/display.elf ::/build/display
-	mcopy -o -i $(DISK_IMAGE) build/hello/hello.elf ::/build/hello
-	mcopy -o -i $(DISK_IMAGE) build/pgcd/pgcd.elf ::/build/pgcd
-	mcopy -o -i $(DISK_IMAGE) build/router/router.elf ::/build/router
-	mcopy -o -i $(DISK_IMAGE) build/dhrystone/dhrystone.elf ::/build/dhrystone
-	mcopy -o -i $(DISK_IMAGE) build/gameoflife/gameoflife.elf ::/build/gameoflife
-	mcopy -o -i $(DISK_IMAGE) build/sort/sort.elf ::/build/sort
-	mcopy -o -i $(DISK_IMAGE) build/transpose/transpose.elf ::/build/transpose
-	mcopy -o -i $(DISK_IMAGE) build/convol/convol.elf ::/build/convol
-	mcopy -o -i $(DISK_IMAGE) build/classif/classif.elf ::/build/classif
-	mcopy -o -i $(DISK_IMAGE) build/coproc/coproc.elf ::/build/coproc
-#	mcopy -o -i $(DISK_IMAGE) build/ocean/ocean.elf ::/build/ocean
-	mcopy -o -i $(DISK_IMAGE) applications/transpose/images.raw ::/misc
-	mcopy -o -i $(DISK_IMAGE) applications/convol/philips_image.raw ::/misc
-	mcopy -o -i $(DISK_IMAGE) applications/display/lena.raw ::/misc
-	mcopy -o -i $(DISK_IMAGE) map.bin ::/
-### Copy bootloader into sector 2 of disk image
-	dd if=build/boot/boot.elf of=$(DISK_IMAGE) seek=2 conv=notrunc
-### Checking root directory
+     build/ocean/ocean.elf
 	mdir -/ -b -i $(DISK_IMAGE) ::/
-
 
 build:
 	mkdir -p build
 	(cd build && mkdir -p $(BUILD_DIRS))
+
+### copy the files generated by the virtual prototype on
+### the virtual disk "home" directory to the giet_vm home directory
+extract:
+	mcopy -o -i $(DISK_IMAGE) ::/home .
 
 ### Disk image generation (no files in this step)
@@ -273,7 +257,7 @@
 	mmd -o -i $(DISK_IMAGE) ::/misc
 	mmd -o -i $(DISK_IMAGE) ::/home
-#	mcopy -o -i $(DISK_IMAGE) applications/transpose/images.raw ::/misc
-#	mcopy -o -i $(DISK_IMAGE) applications/convol/philips_image.raw ::/misc
-#	mcopy -o -i $(DISK_IMAGE) applications/display/lena.raw ::/misc
+	mcopy -o -i $(DISK_IMAGE) applications/transpose/images.raw ::/misc
+	mcopy -o -i $(DISK_IMAGE) applications/convol/philips_image.raw ::/misc
+	mcopy -o -i $(DISK_IMAGE) applications/display/lena.raw ::/misc
 
 ### mapping generation: map.bin / map.xml / hard_config.h / giet_vsegs.ld
@@ -289,104 +273,19 @@
                        --$(APP)           \
                        --xml=.
-#	mcopy -o -i $(DISK_IMAGE) map.bin ::/
-
-### drivers compilation
-build/drivers/cma_driver.o: giet_drivers/cma_driver.c  \
-                            giet_drivers/cma_driver.h  \
-                            hard_config.h              \
-                            giet_config.h
-	$(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
-
-build/drivers/dma_driver.o: giet_drivers/dma_driver.c  \
-                            giet_drivers/dma_driver.h  \
-                            hard_config.h              \
-                            giet_config.h
-	$(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
-
-build/drivers/xcu_driver.o: giet_drivers/xcu_driver.c  \
-                            giet_drivers/xcu_driver.h  \
-                            hard_config.h              \
-                            giet_config.h
-	$(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
-
-build/drivers/bdv_driver.o: giet_drivers/bdv_driver.c  \
-                            giet_drivers/bdv_driver.h  \
-                            hard_config.h              \
-                            giet_config.h
-	$(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
-
-build/drivers/hba_driver.o: giet_drivers/hba_driver.c  \
-                            giet_drivers/hba_driver.h  \
-                            hard_config.h              \
-                            giet_config.h
-	$(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
-
-build/drivers/sdc_driver.o: giet_drivers/sdc_driver.c  \
-                            giet_drivers/sdc_driver.h  \
-                            hard_config.h              \
-                            giet_config.h
-	$(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
-
-build/drivers/spi_driver.o: giet_drivers/spi_driver.c  \
-                            giet_drivers/spi_driver.h  \
-                            hard_config.h              \
-                            giet_config.h
-	$(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
-
-build/drivers/rdk_driver.o: giet_drivers/rdk_driver.c  \
-                            giet_drivers/rdk_driver.h  \
-                            hard_config.h              \
-                            giet_config.h
-	$(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
-
-build/drivers/iob_driver.o: giet_drivers/iob_driver.c  \
-                            giet_drivers/iob_driver.h  \
-                            hard_config.h              \
-                            giet_config.h
-	$(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
-
-build/drivers/mmc_driver.o: giet_drivers/mmc_driver.c  \
-                            giet_drivers/mmc_driver.h  \
-                            hard_config.h              \
-                            giet_config.h
-	$(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
-
-build/drivers/mwr_driver.o: giet_drivers/mwr_driver.c  \
-                            giet_drivers/mwr_driver.h  \
-                            hard_config.h              \
-                            giet_config.h
-	$(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
-
-build/drivers/nic_driver.o: giet_drivers/nic_driver.c  \
-                            giet_drivers/nic_driver.h  \
-                            hard_config.h              \
-                            giet_config.h
-	$(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
-
-build/drivers/tim_driver.o: giet_drivers/tim_driver.c  \
-                            giet_drivers/tim_driver.h  \
-                            hard_config.h              \
-                            giet_config.h
-	$(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
-
-build/drivers/tty_driver.o: giet_drivers/tty_driver.c  \
-                            giet_drivers/tty_driver.h  \
-                            hard_config.h              \
-                            giet_config.h
-	$(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
-
-build/drivers/pic_driver.o: giet_drivers/pic_driver.c  \
-                            giet_drivers/pic_driver.h  \
-                            hard_config.h              \
-                            giet_config.h
-	$(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
+	mcopy -o -i $(DISK_IMAGE) map.bin ::/
 
 ################################
 ### drivers library compilation
+build/drivers/%.o: giet_drivers/%.c \
+                   giet_drivers/%.h \
+                   hard_config.h    \
+                   giet_config.h
+	$(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
+
 build/drivers/libdrivers.a: $(DRIVERS_OBJS)
 	$(AR) -rcs $@ $(DRIVERS_OBJS)
 
 ##########################
-### common compilation
+### fat32 compilation
 build/fat32/fat32.o: giet_fat32/fat32.c \
                      giet_fat32/fat32.h \
@@ -395,44 +294,10 @@
 	$(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
 
-build/common/utils.o: giet_common/utils.c \
-                      giet_common/utils.h \
-                      hard_config.h       \
-                      giet_config.h
-	$(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
-
-build/common/kernel_locks.o: giet_common/kernel_locks.c \
-                             giet_common/kernel_locks.h \
-                             hard_config.h              \
-                             giet_config.h
-	$(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
-
-build/common/kernel_barriers.o: giet_common/kernel_barriers.c \
-                                giet_common/kernel_barriers.h \
-                                hard_config.h                 \
-                                giet_config.h
-	$(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
-
-build/common/tty0.o:  giet_common/tty0.c \
-                      giet_common/tty0.h \
-                      hard_config.h       \
-                      giet_config.h
-	$(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
-
-build/common/vmem.o: giet_common/vmem.c \
-                     giet_common/vmem.h \
-                     hard_config.h      \
-                     giet_config.h
-	$(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
-
-build/common/pmem.o: giet_common/pmem.c \
-                     giet_common/pmem.h \
-                     hard_config.h      \
-                     giet_config.h
-	$(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
-
-build/common/kernel_malloc.o: giet_common/kernel_malloc.c \
-                              giet_common/kernel_malloc.h \
-                              hard_config.h               \
-                              giet_config.h
+##########################
+### common compilation
+build/common/%.o: giet_common/%.c   \
+                  giet_common/%.h   \
+                  hard_config.h     \
+                  giet_config.h
 	$(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
 
@@ -440,9 +305,8 @@
 ### boot compilation
 ### Copy bootloader into sector 2 of disk image
-
 build/boot/boot.elf: $(BOOT_OBJS)            \
                      $(DISK_IMAGE)           \
                      giet_boot/boot.ld       \
-                     build/drivers/libdrivers.a | build/boot
+                     build/drivers/libdrivers.a
 	$(LD) -o $@ -T giet_boot/boot.ld $(BOOT_OBJS) -Lbuild/drivers -ldrivers
 	$(DU) -D $@ > $@.txt
@@ -470,5 +334,5 @@
 	$(DU) -D $@ > $@.txt
 	mmd -o -i $(DISK_IMAGE) ::/build/kernel || true
-#	mcopy -o -i $(DISK_IMAGE) $@ ::/build/kernel
+	mcopy -o -i $(DISK_IMAGE) $@ ::/build/kernel
 
 build/kernel/%.o: giet_kernel/%.c    \
@@ -484,58 +348,19 @@
 ###########################
 ### user libs compilation
-build/libs/stdio.o: giet_libs/stdio.c \
-                    giet_libs/stdio.h \
-                    hard_config.h     \
-                    giet_config.h
+build/libs/%.o: giet_libs/%.c   \
+                giet_libs/%.h   \
+                hard_config.h   \
+                giet_config.h
 	$(CC) $(CFLAGS) $(USER_INCLUDE) -c -o $@ $<
 
-build/libs/mwmr_channel.o: giet_libs/mwmr_channel.c \
-                           giet_libs/mwmr_channel.h \
-                           hard_config.h            \
-                           giet_config.h
+################################
+### math library compilation
+build/libs/math/%.o: giet_libs/math/%.c             \
+                     giet_libs/math/math_private.h  \
+                     giet_libs/math.h
 	$(CC) $(CFLAGS) $(USER_INCLUDE) -c -o $@ $<
 
-build/libs/malloc.o: giet_libs/malloc.c         \
-                     giet_libs/malloc.h         \
-                     hard_config.h              \
-                     giet_config.h
-	$(CC) $(CFLAGS) $(USER_INCLUDE) -c -o $@ $<
-
-build/libs/user_barrier.o: giet_libs/user_barrier.c \
-                           giet_libs/user_barrier.h \
-                           hard_config.h       \
-                           giet_config.h
-	$(CC) $(CFLAGS) $(USER_INCLUDE) -c -o $@ $<
-
-build/libs/stdlib.o: giet_libs/stdlib.c \
-                     giet_libs/stdlib.h \
-                     hard_config.h      \
-                     giet_config.h
-	$(CC) $(CFLAGS) $(USER_INCLUDE) -c -o $@ $<
-
-build/libs/string.o: giet_libs/string.c \
-                     giet_libs/string.h \
-                     hard_config.h      \
-                     giet_config.h
-	$(CC) $(CFLAGS) $(USER_INCLUDE) -c -o $@ $<
-
-build/libs/user_lock.o: giet_libs/user_lock.c \
-                        giet_libs/user_lock.h \
-                        hard_config.h         \
-                        giet_config.h
-	$(CC) $(CFLAGS) $(USER_INCLUDE) -c -o $@ $<
-
-build/libs/user_sqt_lock.o: giet_libs/user_sqt_lock.c \
-                            giet_libs/user_sqt_lock.h \
-                            giet_libs/user_lock.h     \
-                            hard_config.h             \
-                            giet_config.h
-	$(CC) $(CFLAGS) $(USER_INCLUDE) -c -o $@ $<
-
-build/libs/libmath.a: $(MATH_OBJ)
+build/libs/libmath.a: $(MATH_OBJS)
 	$(AR) -rcs $@ $^
-
-build/libs/math/%.o: giet_libs/math/%.c giet_libs/math/math_private.h giet_libs/math.h
-	$(CC) $(CFLAGS) $(USER_INCLUDE) -c -o $@ $<
 
 ########################################
@@ -545,5 +370,5 @@
 	$(DU) -D $@ > $@.txt
 	mmd -o -i $(DISK_IMAGE) ::/build/display || true
-#	mcopy -o -i $(DISK_IMAGE) $@ ::/build/display
+	mcopy -o -i $(DISK_IMAGE) $@ ::/build/display
 
 build/display/main.o: applications/display/main.c hard_config.h
@@ -556,5 +381,5 @@
 	$(DU) -D $@ > $@.txt
 	mmd -o -i $(DISK_IMAGE) ::/build/router || true
-#	mcopy -o -i $(DISK_IMAGE) $@ ::/build/router
+	mcopy -o -i $(DISK_IMAGE) $@ ::/build/router
 
 build/router/main.o: applications/router/main.c hard_config.h
@@ -567,5 +392,5 @@
 	$(DU) -D $@ > $@.txt
 	mmd -o -i $(DISK_IMAGE) ::/build/hello || true
-#	mcopy -o -i $(DISK_IMAGE) $@ ::/build/hello
+	mcopy -o -i $(DISK_IMAGE) $@ ::/build/hello
 
 build/hello/main.o: applications/hello/main.c hard_config.h
@@ -578,5 +403,5 @@
 	$(DU) -D $@ > $@.txt
 	mmd -o -i $(DISK_IMAGE) ::/build/pgcd || true
-#	mcopy -o -i $(DISK_IMAGE) $@ ::/build/pgcd
+	mcopy -o -i $(DISK_IMAGE) $@ ::/build/pgcd
 
 build/pgcd/main.o: applications/pgcd/main.c hard_config.h
@@ -589,7 +414,7 @@
 	$(DU) -D $@ > $@.txt
 	mmd -o -i $(DISK_IMAGE) ::/build/gameoflife || true
-#	mcopy -o -i $(DISK_IMAGE) $@ ::/build/gameoflife
-
-build/gameoflife/main.o: applications/gameoflife/main.c
+	mcopy -o -i $(DISK_IMAGE) $@ ::/build/gameoflife
+
+build/gameoflife/main.o: applications/gameoflife/main.c hard_config.h
 	$(CC) $(USER_INCLUDE) $(CFLAGS) -O3 -c -o $@ $<
 
@@ -600,5 +425,5 @@
 	$(DU) -D $@ > $@.txt
 	mmd -o -i $(DISK_IMAGE) ::/build/dhrystone || true
-#	mcopy -o -i $(DISK_IMAGE) $@ ::/build/dhrystone
+	mcopy -o -i $(DISK_IMAGE) $@ ::/build/dhrystone
 
 build/dhrystone/dhry_1.o: applications/dhrystone/dhry_1.c hard_config.h
@@ -614,5 +439,5 @@
 	$(DU) -D $@ > $@.txt
 	mmd -o -i $(DISK_IMAGE) ::/build/sort || true
-#	mcopy -o -i $(DISK_IMAGE) $@ ::/build/sort
+	mcopy -o -i $(DISK_IMAGE) $@ ::/build/sort
 
 build/sort/main.o: applications/sort/main.c hard_config.h
@@ -625,5 +450,5 @@
 	$(DU) -D $@ > $@.txt
 	mmd -o -i $(DISK_IMAGE) ::/build/transpose || true
-#	mcopy -o -i $(DISK_IMAGE) $@ ::/build/transpose
+	mcopy -o -i $(DISK_IMAGE) $@ ::/build/transpose
 
 build/transpose/main.o: applications/transpose/main.c hard_config.h
@@ -636,5 +461,5 @@
 	$(DU) -D $@ > $@.txt
 	mmd -o -i $(DISK_IMAGE) ::/build/convol || true
-#	mcopy -o -i $(DISK_IMAGE) $@ ::/build/convol
+	mcopy -o -i $(DISK_IMAGE) $@ ::/build/convol
 
 build/convol/main.o: applications/convol/main.c hard_config.h
@@ -647,5 +472,5 @@
 	$(DU) -D $@ > $@.txt
 	mmd -o -i $(DISK_IMAGE) ::/build/classif || true
-#	mcopy -o -i $(DISK_IMAGE) $@ ::/build/classif
+	mcopy -o -i $(DISK_IMAGE) $@ ::/build/classif
 
 build/classif/main.o: applications/classif/main.c hard_config.h
@@ -658,16 +483,18 @@
 	$(DU) -D $@ > $@.txt
 	mmd -o -i $(DISK_IMAGE) ::/build/coproc || true
-#	mcopy -o -i $(DISK_IMAGE) $@ ::/build/coproc
-
-build/coproc/main.o: applications/coproc/main.c
+	mcopy -o -i $(DISK_IMAGE) $@ ::/build/coproc
+
+build/coproc/main.o: applications/coproc/main.c hard_config.h
 	$(CC) $(USER_INCLUDE) $(CFLAGS) -O0 -c -o $@ $<
 
 ########################################
 ### ocean compilation
-build/ocean/ocean.elf: applications/ocean/ocean.elf
+build/ocean/ocean.elf: applications/ocean/ocean.elf hard_config.h
 	mv $< $@
 	$(DU) -D $@ > $@.txt
-
-applications/ocean/ocean.elf: $(OCEAN_OBJS)
+	mmd -o -i $(DISK_IMAGE) ::/build/ocean || true
+	mcopy -o -i $(DISK_IMAGE) $@ ::/build/ocean
+
+applications/ocean/ocean.elf: $(OCEAN_OBJS) hard_config.h
 	cd applications/ocean/ && $(MAKE)
 
