diff --git a/arch/risc-v/common/riscv_encoding.h b/arch/risc-v/common/include/riscv_encoding.h
similarity index 100%
rename from arch/risc-v/common/riscv_encoding.h
rename to arch/risc-v/common/include/riscv_encoding.h
diff --git a/arch/risc-v/common/tos_cpu.h b/arch/risc-v/common/include/tos_cpu.h
similarity index 100%
rename from arch/risc-v/common/tos_cpu.h
rename to arch/risc-v/common/include/tos_cpu.h
diff --git a/arch/risc-v/common/tos_cpu_def.h b/arch/risc-v/common/include/tos_cpu_def.h
similarity index 100%
rename from arch/risc-v/common/tos_cpu_def.h
rename to arch/risc-v/common/include/tos_cpu_def.h
diff --git a/arch/risc-v/common/tos_cpu_types.h b/arch/risc-v/common/include/tos_cpu_types.h
similarity index 100%
rename from arch/risc-v/common/tos_cpu_types.h
rename to arch/risc-v/common/include/tos_cpu_types.h
diff --git a/arch/risc-v/common/tos_fault.h b/arch/risc-v/common/include/tos_fault.h
similarity index 100%
rename from arch/risc-v/common/tos_fault.h
rename to arch/risc-v/common/include/tos_fault.h
diff --git a/board/QEMU_Spike/GCC/demo/Makefile b/board/QEMU_Spike/GCC/demo/Makefile
new file mode 100644
index 00000000..8b6a96e6
--- /dev/null
+++ b/board/QEMU_Spike/GCC/demo/Makefile
@@ -0,0 +1,193 @@
+##########################################################################################################################
+# File automatically-generated by tool: [projectgenerator] version: [3.3.0] date: [Mon Aug 05 10:29:11 CST 2019]
+##########################################################################################################################
+
+# ------------------------------------------------
+# Generic Makefile (based on gcc)
+#
+# ChangeLog :
+# 2017-02-10 - Several enhancements + project update mode
+# 2015-07-22 - first version
+# ------------------------------------------------
+
+######################################
+# target
+######################################
+TARGET = demo
+
+
+######################################
+# building variables
+######################################
+# debug build?
+DEBUG = 1
+# optimization
+OPT = -O0
+
+TOP_DIR = ../../../..
+#######################################
+# paths
+#######################################
+# Build path
+BUILD_DIR = build
+
+######################################
+# source
+######################################
+# C sources
+KERNEL_SRC = \
+ ${wildcard $(TOP_DIR)/kernel/core/*.c}
+ C_SOURCES += $(KERNEL_SRC)
+
+ARCH_SRC = \
+ ${wildcard $(TOP_DIR)/arch/risc-v/rv32i/gcc/*.c} \
+ ${wildcard $(TOP_DIR)/arch/risc-v/common/*.c}
+ C_SOURCES += $(ARCH_SRC)
+
+HAL_DRIVER_SRC = \
+ $(TOP_DIR)/board/QEMU_Spike/Src/main.c
+ C_SOURCES += $(HAL_DRIVER_SRC)
+
+# ASM sources
+ASM_SOURCES =
+
+ASM_SOURCES_S = \
+$(TOP_DIR)/arch/risc-v/rv32i/gcc/port_s.S \
+start.S
+
+
+#######################################
+# binaries
+#######################################
+PREFIX = riscv-none-embed-
+# The gcc compiler bin path can be either defined in make command via GCC_PATH variable (> make GCC_PATH=xxx)
+# either it can be added to the PATH environment variable.
+ifdef GCC_PATH
+CC = $(GCC_PATH)/$(PREFIX)gcc
+AS = $(GCC_PATH)/$(PREFIX)gcc -x assembler-with-cpp
+CP = $(GCC_PATH)/$(PREFIX)objcopy
+SZ = $(GCC_PATH)/$(PREFIX)size
+else
+CC = $(PREFIX)gcc
+AS = $(PREFIX)gcc -x assembler-with-cpp
+CP = $(PREFIX)objcopy
+SZ = $(PREFIX)size
+endif
+HEX = $(CP) -O ihex
+BIN = $(CP) -O binary -S
+
+#######################################
+# CFLAGS
+#######################################
+# cpu
+CPU = -march=rv32imac
+
+# fpu
+FPU =
+
+# float-abi
+FLOAT-ABI =
+
+# mcu
+MCU = $(CPU) $(FPU) $(FLOAT-ABI)
+
+# macros for gcc
+# AS defines
+AS_DEFS =
+
+# C defines
+C_DEFS =
+
+# AS includes
+AS_INCLUDES =
+
+# C includes
+KERNEL_INC = \
+ -I $(TOP_DIR)/kernel/core/include \
+ -I $(TOP_DIR)/kernel/pm/include \
+ -I $(TOP_DIR)/kernel/hal/include \
+ -I $(TOP_DIR)/arch/risc-v/common/include \
+ -I $(TOP_DIR)/arch/risc-v/rv32i/gcc \
+ -I $(TOP_DIR)/board/QEMU_Spike/TOS-CONFIG
+ C_INCLUDES += $(KERNEL_INC)
+CMSIS_INC =
+
+HAL_DRIVER_INC = \
+ -I $(TOP_DIR)/board/QEMU_Spike/Inc \
+ C_INCLUDES += $(HAL_DRIVER_INC)
+
+# compile gcc flags
+ASFLAGS = $(MCU) $(AS_DEFS) $(AS_INCLUDES) $(OPT) -Wall -fdata-sections -ffunction-sections -mabi=ilp32 -msmall-data-limit=8 -mno-save-restore
+
+CFLAGS = $(MCU) $(C_DEFS) $(C_INCLUDES) $(OPT) -Wall -fdata-sections -ffunction-sections -mabi=ilp32 -msmall-data-limit=8 -mno-save-restore -std=gnu11 --specs=nosys.specs -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections
+
+ifeq ($(DEBUG), 1)
+CFLAGS += -g
+endif
+
+
+# Generate dependency information
+CFLAGS += -MMD -MP -MF"$(@:%.o=%.d)"
+
+
+#######################################
+# LDFLAGS
+#######################################
+# link script
+LDSCRIPT = link.ld
+
+# libraries
+LIBS = -lc -lm -lnosys
+LIBDIR =
+LDFLAGS = $(MCU) -specs=nano.specs -T$(LDSCRIPT) $(LIBDIR) $(LIBS) -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref -Wl,--gc-sections -nostartfiles
+
+# default action: build all
+all: $(BUILD_DIR)/$(TARGET).elf $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).bin
+
+
+#######################################
+# build the application
+#######################################
+# list of objects
+OBJECTS = $(addprefix $(BUILD_DIR)/,$(notdir $(C_SOURCES:.c=.o)))
+vpath %.c $(sort $(dir $(C_SOURCES)))
+# list of ASM program objects
+OBJECTS += $(addprefix $(BUILD_DIR)/,$(notdir $(ASM_SOURCES:.s=.o)))
+vpath %.s $(sort $(dir $(ASM_SOURCES)))
+OBJECTS += $(addprefix $(BUILD_DIR)/,$(notdir $(ASM_SOURCES_S:.S=.o)))
+vpath %.S $(sort $(dir $(ASM_SOURCES_S)))
+
+$(BUILD_DIR)/%.o: %.c Makefile | $(BUILD_DIR)
+ $(CC) -c $(CFLAGS) -Wa,-a,-ad,-alms=$(BUILD_DIR)/$(notdir $(<:.c=.lst)) $< -o $@
+
+$(BUILD_DIR)/%.o: %.s Makefile | $(BUILD_DIR)
+ $(AS) -c $(CFLAGS) $< -o $@
+
+$(BUILD_DIR)/%.o: %.S Makefile | $(BUILD_DIR)
+ $(AS) -c $(CFLAGS) $< -o $@
+
+$(BUILD_DIR)/$(TARGET).elf: $(OBJECTS) Makefile
+ $(CC) $(OBJECTS) $(LDFLAGS) -o $@
+ $(SZ) $@
+
+$(BUILD_DIR)/%.hex: $(BUILD_DIR)/%.elf | $(BUILD_DIR)
+ $(HEX) $< $@
+
+$(BUILD_DIR)/%.bin: $(BUILD_DIR)/%.elf | $(BUILD_DIR)
+ $(BIN) $< $@
+
+$(BUILD_DIR):
+ mkdir $@
+
+#######################################
+# clean up
+#######################################
+clean:
+ -rm -fR $(BUILD_DIR)
+
+#######################################
+# dependencies
+#######################################
+-include $(wildcard $(BUILD_DIR)/*.d)
+
+# *** EOF ***
diff --git a/board/QEMU_Spike/GCC/demo/link.ld b/board/QEMU_Spike/GCC/demo/link.ld
new file mode 100644
index 00000000..bc3eb43f
--- /dev/null
+++ b/board/QEMU_Spike/GCC/demo/link.ld
@@ -0,0 +1,51 @@
+OUTPUT_ARCH( "riscv" )
+ENTRY( _start )
+
+MEMORY
+{
+ ROM (rxai!w) : ORIGIN = 0x80000000, LENGTH = 512K
+ RAM (wxa!ri) : ORIGIN = 0x84000000, LENGTH = 128K
+}
+
+SECTIONS
+{
+ .text : {
+ PROVIDE( _text = . );
+ *(.text.entry)
+ *(.text)
+ *(.rodata)
+ PROVIDE( _etext = . );
+ } >ROM AT>ROM
+
+ . = ALIGN(4);
+ _load_data = LOADADDR(.data);
+
+ . = ALIGN(4);
+ .data : {
+ PROVIDE( _data = . );
+ *(.data)
+ . = ALIGN(4);
+ } >RAM AT>ROM
+ . = ALIGN(4);
+ PROVIDE( _edata = . );
+
+ . = ALIGN(0x1000);
+ PROVIDE( _bss = . );
+ .bss : {
+ *(.bss)
+ } >RAM AT>RAM
+ . = ALIGN(4);
+ PROVIDE( _ebss = . );
+
+
+ . = ALIGN(8);
+ PROVIDE( end = . );
+
+ _stack_size = 128;
+ .stack ORIGIN(RAM) + LENGTH(RAM) - _stack_size :
+ {
+ . = _stack_size;
+ PROVIDE( _stack_top = . );
+ } >RAM AT>RAM
+ _end = .;
+}
diff --git a/arch/risc-v/rv32i/gcc/start.S b/board/QEMU_Spike/GCC/demo/start.S
similarity index 100%
rename from arch/risc-v/rv32i/gcc/start.S
rename to board/QEMU_Spike/GCC/demo/start.S
diff --git a/board/QEMU_Spike/eclipse/hello_world/.cproject b/board/QEMU_Spike/eclipse/demo/.cproject
similarity index 96%
rename from board/QEMU_Spike/eclipse/hello_world/.cproject
rename to board/QEMU_Spike/eclipse/demo/.cproject
index 10343617..895eea06 100644
--- a/board/QEMU_Spike/eclipse/hello_world/.cproject
+++ b/board/QEMU_Spike/eclipse/demo/.cproject
@@ -97,7 +97,7 @@
-
+
@@ -107,9 +107,9 @@
@@ -125,17 +125,17 @@
@@ -301,7 +301,7 @@
-
+
@@ -385,7 +385,7 @@
-
+
@@ -417,13 +417,13 @@
-
+
-
+
diff --git a/board/QEMU_Spike/eclipse/hello_world/.gitignore b/board/QEMU_Spike/eclipse/demo/.gitignore
similarity index 100%
rename from board/QEMU_Spike/eclipse/hello_world/.gitignore
rename to board/QEMU_Spike/eclipse/demo/.gitignore
diff --git a/board/QEMU_Spike/eclipse/hello_world/.project b/board/QEMU_Spike/eclipse/demo/.project
similarity index 98%
rename from board/QEMU_Spike/eclipse/hello_world/.project
rename to board/QEMU_Spike/eclipse/demo/.project
index 1730710c..dd81e27f 100644
--- a/board/QEMU_Spike/eclipse/hello_world/.project
+++ b/board/QEMU_Spike/eclipse/demo/.project
@@ -1,6 +1,6 @@
- hello_world
+ demo
diff --git a/board/QEMU_Spike/eclipse/hello_world/.settings/language.settings.xml b/board/QEMU_Spike/eclipse/demo/.settings/language.settings.xml
similarity index 97%
rename from board/QEMU_Spike/eclipse/hello_world/.settings/language.settings.xml
rename to board/QEMU_Spike/eclipse/demo/.settings/language.settings.xml
index c13aaae5..975049f4 100644
--- a/board/QEMU_Spike/eclipse/hello_world/.settings/language.settings.xml
+++ b/board/QEMU_Spike/eclipse/demo/.settings/language.settings.xml
@@ -11,7 +11,7 @@
-
+
diff --git a/board/QEMU_Spike/eclipse/hello_world/.settings/org.eclipse.cdt.codan.core.prefs b/board/QEMU_Spike/eclipse/demo/.settings/org.eclipse.cdt.codan.core.prefs
similarity index 100%
rename from board/QEMU_Spike/eclipse/hello_world/.settings/org.eclipse.cdt.codan.core.prefs
rename to board/QEMU_Spike/eclipse/demo/.settings/org.eclipse.cdt.codan.core.prefs
diff --git a/board/QEMU_Spike/eclipse/hello_world/.settings/org.eclipse.ltk.core.refactoring.prefs b/board/QEMU_Spike/eclipse/demo/.settings/org.eclipse.ltk.core.refactoring.prefs
similarity index 100%
rename from board/QEMU_Spike/eclipse/hello_world/.settings/org.eclipse.ltk.core.refactoring.prefs
rename to board/QEMU_Spike/eclipse/demo/.settings/org.eclipse.ltk.core.refactoring.prefs
diff --git a/board/QEMU_Spike/eclipse/hello_world/link.ld b/board/QEMU_Spike/eclipse/demo/link.ld
similarity index 100%
rename from board/QEMU_Spike/eclipse/hello_world/link.ld
rename to board/QEMU_Spike/eclipse/demo/link.ld
diff --git a/board/QEMU_Spike/eclipse/demo/start.S b/board/QEMU_Spike/eclipse/demo/start.S
new file mode 100644
index 00000000..30b04422
--- /dev/null
+++ b/board/QEMU_Spike/eclipse/demo/start.S
@@ -0,0 +1,41 @@
+// See LICENSE for license details.
+
+#include "riscv_encoding.h"
+
+.section .text.entry
+ .globl _start
+ .type _start,@function
+_start:
+ csrc mstatus, MSTATUS_MIE
+ csrw mie, 0
+
+ la t0, machine_trap_entry
+ csrw mtvec, t0
+
+ la sp, _stack_top
+
+ /* Load data section */
+ la a0, _load_data
+ la a1, _data
+ la a2, _edata
+ bgeu a1, a2, begin_clear_bss
+clear_data:
+ lw t0, (a0)
+ sw t0, (a1)
+ addi a0, a0, 4
+ addi a1, a1, 4
+ bltu a1, a2, clear_data
+
+begin_clear_bss:
+ // clear bss section
+ la a0, _bss
+ la a1, _ebss
+ bgeu a0, a1, init_finish
+clear_bss:
+ sw zero, (a0)
+ addi a0, a0, 4
+ bltu a0, a1, clear_bss
+init_finish:
+ call main
+__die:
+ j __die