diff --git a/FreeRTOS/Demo/CORTEX_MPU_CEC_MEC_17xx_51xx_Keil_GCC/main.c b/FreeRTOS/Demo/CORTEX_MPU_CEC_MEC_17xx_51xx_Keil_GCC/main.c
index b9697b3..8f929c4 100644
--- a/FreeRTOS/Demo/CORTEX_MPU_CEC_MEC_17xx_51xx_Keil_GCC/main.c
+++ b/FreeRTOS/Demo/CORTEX_MPU_CEC_MEC_17xx_51xx_Keil_GCC/main.c
@@ -1021,7 +1021,7 @@
 }
 /*-----------------------------------------------------------*/
 
-static void prvTimerCallback( TaskHandle_t xExpiredTimer )
+static void prvTimerCallback( TimerHandle_t xExpiredTimer )
 {
 uint32_t ulCount;
 
diff --git a/FreeRTOS/Demo/RISC-V-Qemu-sifive_e-FreedomStudio/.cproject b/FreeRTOS/Demo/RISC-V-Qemu-sifive_e-FreedomStudio/.cproject
index a942463..aee5647 100644
--- a/FreeRTOS/Demo/RISC-V-Qemu-sifive_e-FreedomStudio/.cproject
+++ b/FreeRTOS/Demo/RISC-V-Qemu-sifive_e-FreedomStudio/.cproject
@@ -20,7 +20,7 @@
 							<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.addtools.createflash.8320194" name="Create flash image" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.addtools.createflash" useByScannerDiscovery="false" value="true" valueType="boolean"/>
 							<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.addtools.createlisting.379436257" name="Create extended listing" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.addtools.createlisting" useByScannerDiscovery="false"/>
 							<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.addtools.printsize.1043841176" name="Print size" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.addtools.printsize" useByScannerDiscovery="false" value="true" valueType="boolean"/>
-							<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.optimization.level.383399415" name="Optimization Level" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.optimization.level" useByScannerDiscovery="true" value="ilg.gnumcueclipse.managedbuild.cross.riscv.option.optimization.level.more" valueType="enumerated"/>
+							<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.optimization.level.383399415" name="Optimization Level" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.optimization.level" useByScannerDiscovery="true" value="ilg.gnumcueclipse.managedbuild.cross.riscv.option.optimization.level.none" valueType="enumerated"/>
 							<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.optimization.messagelength.178339006" name="Message length (-fmessage-length=0)" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.optimization.messagelength" useByScannerDiscovery="true" value="false" valueType="boolean"/>
 							<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.optimization.signedchar.119459497" name="'char' is signed (-fsigned-char)" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.optimization.signedchar" useByScannerDiscovery="true" value="false" valueType="boolean"/>
 							<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.optimization.functionsections.735578493" name="Function sections (-ffunction-sections)" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.optimization.functionsections" useByScannerDiscovery="true" value="false" valueType="boolean"/>
@@ -49,10 +49,10 @@
 							<tool id="ilg.gnumcueclipse.managedbuild.cross.riscv.tool.assembler.1472778604" name="GNU RISC-V Cross Assembler" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.tool.assembler">
 								<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.assembler.usepreprocessor.874608690" name="Use preprocessor" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.assembler.usepreprocessor" useByScannerDiscovery="false" value="true" valueType="boolean"/>
 								<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.assembler.include.paths.545620458" name="Include paths (-I)" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.assembler.include.paths" useByScannerDiscovery="true" valueType="includePath">
-									<listOptionValue builtIn="false" value="../../../../bsp/env"/>
-									<listOptionValue builtIn="false" value="../../../../bsp/include"/>
-									<listOptionValue builtIn="false" value="../../../../bsp/env/freedom-e300-hifive1"/>
-									<listOptionValue builtIn="false" value="../../../../bsp/drivers"/>
+									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/freedom-e-sdk/env}&quot;"/>
+									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/freedom-e-sdk/include}&quot;"/>
+									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/freedom-e-sdk/env/freedom-e300-hifive1}&quot;"/>
+									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/freedom-e-sdk/drivers}&quot;"/>
 								</option>
 								<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.assembler.other.855588508" name="Other assembler flags" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.assembler.other" useByScannerDiscovery="false" value="-c" valueType="string"/>
 								<inputType id="ilg.gnumcueclipse.managedbuild.cross.riscv.tool.assembler.input.1208356864" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.tool.assembler.input"/>
@@ -68,10 +68,12 @@
 									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/freedom-e-sdk/include}&quot;"/>
 								</option>
 								<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.compiler.defs.1115817835" name="Defined symbols (-D)" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.compiler.defs" useByScannerDiscovery="true" valueType="definedSymbols">
-									<listOptionValue builtIn="false" value="USE_PLIC"/>
-									<listOptionValue builtIn="false" value="USE_M_TIME"/>
+									<listOptionValue builtIn="false" value="DONT_USE_PLIC"/>
+									<listOptionValue builtIn="false" value="DONT_USE_M_TIME"/>
 								</option>
 								<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.compiler.other.953712529" name="Other compiler flags" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.compiler.other" useByScannerDiscovery="true" value="-include sys/cdefs.h -fno-builtin-printf -c" valueType="string"/>
+								<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.compiler.std.1963706020" name="Language standard" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.compiler.std" useByScannerDiscovery="true" value="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.compiler.std.default" valueType="enumerated"/>
+								<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.compiler.otheroptimizations.1382786252" name="Other optimization flags" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.compiler.otheroptimizations" useByScannerDiscovery="true" value="" valueType="string"/>
 								<inputType id="ilg.gnumcueclipse.managedbuild.cross.riscv.tool.c.compiler.input.517786622" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.tool.c.compiler.input"/>
 							</tool>
 							<tool id="ilg.gnumcueclipse.managedbuild.cross.riscv.tool.cpp.compiler.890064572" name="GNU RISC-V Cross C++ Compiler" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.tool.cpp.compiler"/>
@@ -112,7 +114,7 @@
 						</toolChain>
 					</folderInfo>
 					<sourceEntries>
-						<entry excluding="freedom-e-sdk/env/entry.S" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
+						<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
 					</sourceEntries>
 				</configuration>
 			</storageModule>
diff --git a/FreeRTOS/Demo/RISC-V-Qemu-sifive_e-FreedomStudio/.settings/language.settings.xml b/FreeRTOS/Demo/RISC-V-Qemu-sifive_e-FreedomStudio/.settings/language.settings.xml
index ba62fc5..53c0c63 100644
--- a/FreeRTOS/Demo/RISC-V-Qemu-sifive_e-FreedomStudio/.settings/language.settings.xml
+++ b/FreeRTOS/Demo/RISC-V-Qemu-sifive_e-FreedomStudio/.settings/language.settings.xml
@@ -5,7 +5,7 @@
 			<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
 			<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
 			<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
-			<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="1914048489906665533" id="ilg.gnumcueclipse.managedbuild.cross.riscv.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT RISC-V Cross GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} ${cross_toolchain_flags} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
+			<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="1967898482140670668" id="ilg.gnumcueclipse.managedbuild.cross.riscv.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT RISC-V Cross GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} ${cross_toolchain_flags} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
 				<language-scope id="org.eclipse.cdt.core.gcc"/>
 				<language-scope id="org.eclipse.cdt.core.g++"/>
 			</provider>
diff --git a/FreeRTOS/Demo/RISC-V-Qemu-sifive_e-FreedomStudio/FreeRTOSConfig.h b/FreeRTOS/Demo/RISC-V-Qemu-sifive_e-FreedomStudio/FreeRTOSConfig.h
index 74858e4..c9e825c 100644
--- a/FreeRTOS/Demo/RISC-V-Qemu-sifive_e-FreedomStudio/FreeRTOSConfig.h
+++ b/FreeRTOS/Demo/RISC-V-Qemu-sifive_e-FreedomStudio/FreeRTOSConfig.h
@@ -71,6 +71,7 @@
 #ifndef FREERTOS_CONFIG_H
 #define FREERTOS_CONFIG_H
 
+#include "platform.h"
 
 /*-----------------------------------------------------------
  * Application specific definitions.
@@ -84,7 +85,7 @@
  * See http://www.freertos.org/a00110.html.
  *----------------------------------------------------------*/
 
-#define configCTRL_BASE					0x2000000
+#define configCLINT_BASE_ADDRESS		CLINT_CTRL_ADDR
 #define configUSE_PREEMPTION			1
 #define configUSE_IDLE_HOOK				0
 #define configUSE_TICK_HOOK				0
@@ -92,7 +93,7 @@
 #define configTICK_RATE_HZ				( ( TickType_t ) 1000 )
 #define configMAX_PRIORITIES			( 5 )
 #define configMINIMAL_STACK_SIZE		( ( unsigned short ) 512 )
-#define configTOTAL_HEAP_SIZE			( ( size_t ) ( 10 * 1024 ) )
+#define configTOTAL_HEAP_SIZE			( ( size_t ) ( 8 * 1024 ) )
 #define configMAX_TASK_NAME_LEN			( 16 )
 #define configUSE_TRACE_FACILITY		1
 #define configUSE_16_BIT_TICKS			0
diff --git a/FreeRTOS/Demo/RISC-V-Qemu-sifive_e-FreedomStudio/full_demo/RegTest.S b/FreeRTOS/Demo/RISC-V-Qemu-sifive_e-FreedomStudio/full_demo/RegTest.S
new file mode 100644
index 0000000..e4d8714
--- /dev/null
+++ b/FreeRTOS/Demo/RISC-V-Qemu-sifive_e-FreedomStudio/full_demo/RegTest.S
@@ -0,0 +1,255 @@
+/*
+ * FreeRTOS Kernel V10.1.1
+ * Copyright (C) 2018 Amazon.com, Inc. or its affiliates.  All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and associated documentation files (the "Software"), to deal in
+ * the Software without restriction, including without limitation the rights to
+ * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+ * the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+ * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+ * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+ * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * http://www.FreeRTOS.org
+ * http://aws.amazon.com/freertos
+ *
+ * 1 tab == 4 spaces!
+ */
+
+	.extern ulRegTest1LoopCounter
+	.extern ulRegTest2LoopCounter
+
+	.global vRegTest1Task
+	.global vRegTest2Task
+
+/*-----------------------------------------------------------*/
+
+vRegTest1Task:
+
+	/* Fill the core registers with known values. */
+	li x5, 0x5
+	li x6, 0x6
+	li x7, 0x7
+	li x8, 0x8
+	li x9, 0x9
+	li x10, 0xa
+	li x11, 0xb
+	li x12, 0xc
+	li x13, 0xd
+	li x14, 0xe
+	li x15, 0xf
+	li x16, 0x10
+	li x17, 0x11
+	li x18, 0x12
+	li x19, 0x13
+	li x20, 0x14
+	li x21, 0x15
+	li x22, 0x16
+	li x23, 0x17
+	li x24, 0x18
+	li x25, 0x19
+	li x26, 0x1a
+	li x27, 0x1b
+	li x28, 0x1c
+	li x29, 0x1d
+	li x30, 0x1e
+
+reg1_loop:
+
+    /* Check each register still contains the expected known value.
+    vRegTest1Implementation uses x31 as the temporary, vRegTest2Implementation
+    uses x5 as the temporary. */
+	li x31, 0x5
+	bne x31, x5, reg1_error_loop
+	li x31, 0x6
+	bne x31, x6, reg1_error_loop
+	li x31, 0x7
+	bne x31, x7, reg1_error_loop
+	li x31, 0x8
+	bne x31, x8, reg1_error_loop
+	li x31, 0x9
+	bne x31, x9, reg1_error_loop
+	li x31, 0xa
+	bne x31, x10, reg1_error_loop
+	li x31, 0xb
+	bne x31, x11, reg1_error_loop
+	li x31, 0xc
+	bne x31, x12, reg1_error_loop
+	li x31, 0xd
+	bne x31, x13, reg1_error_loop
+	li x31, 0xe
+	bne x31, x14, reg1_error_loop
+	li x31, 0xf
+	bne x31, x15, reg1_error_loop
+	li x31, 0x10
+	bne x31, x16, reg1_error_loop
+	li x31, 0x11
+	bne x31, x17, reg1_error_loop
+	li x31, 0x12
+	bne x31, x18, reg1_error_loop
+	li x31, 0x13
+	bne x31, x19, reg1_error_loop
+	li x31, 0x14
+	bne x31, x20, reg1_error_loop
+	li x31, 0x15
+	bne x31, x21, reg1_error_loop
+	li x31, 0x16
+	bne x31, x22, reg1_error_loop
+	li x31, 0x17
+	bne x31, x23, reg1_error_loop
+	li x31, 0x18
+	bne x31, x24, reg1_error_loop
+	li x31, 0x19
+	bne x31, x25, reg1_error_loop
+	li x31, 0x1a
+	bne x31, x26, reg1_error_loop
+	li x31, 0x1b
+	bne x31, x27, reg1_error_loop
+	li x31, 0x1c
+	bne x31, x28, reg1_error_loop
+	li x31, 0x1d
+	bne x31, x29, reg1_error_loop
+	li x31, 0x1e
+	bne x31, x30, reg1_error_loop
+
+    /* Everything passed, increment the loop counter. */
+	lw x31, ulRegTest1LoopCounterConst
+	lw x30, 0(x31)
+	addi x30, x30, 1
+	sw x30, 0(x31)
+
+    /* Restore clobbered register reading for next loop. */
+    li x30, 0x1e
+
+    /* Yield to increase code coverage. */
+    ecall
+
+    /* Start again. */
+    jal reg1_loop
+
+reg1_error_loop:
+    /* Jump here if a register contains an uxpected value.  This stops the loop
+    counter being incremented so the check task knows an error was found. */
+	jal reg1_error_loop
+
+ulRegTest1LoopCounterConst: .word ulRegTest1LoopCounter
+
+/*-----------------------------------------------------------*/
+
+vRegTest2Task:
+
+    /* Fill the core registers with known values. */
+    li x6, 0x61
+    li x7, 0x71
+    li x8, 0x81
+    li x9, 0x91
+    li x10, 0xa1
+    li x11, 0xb1
+    li x12, 0xc1
+    li x13, 0xd1
+    li x14, 0xe1
+    li x15, 0xf1
+    li x16, 0x20
+    li x17, 0x21
+    li x18, 0x22
+    li x19, 0x23
+    li x20, 0x24
+    li x21, 0x25
+    li x22, 0x26
+    li x23, 0x27
+    li x24, 0x28
+    li x25, 0x29
+    li x26, 0x2a
+    li x27, 0x2b
+    li x28, 0x2c
+    li x29, 0x2d
+    li x30, 0x2e
+    li x31, 0x2f
+
+Reg2_loop:
+
+    /* Check each register still contains the expected known value.
+    vRegTest2Implementation uses x5 as the temporary, vRegTest1Implementation
+    uses x31 as the temporary. */
+    li x5, 0x61
+    bne x5, x6, reg2_error_loop
+    li x5, 0x71
+    bne x5, x7, reg2_error_loop
+    li x5, 0x81
+    bne x5, x8, reg2_error_loop
+    li x5, 0x91
+    bne x5, x9, reg2_error_loop
+    li x5, 0xa1
+    bne x5, x10, reg2_error_loop
+    li x5, 0xb1
+    bne x5, x11, reg2_error_loop
+    li x5, 0xc1
+    bne x5, x12, reg2_error_loop
+    li x5, 0xd1
+    bne x5, x13, reg2_error_loop
+    li x5, 0xe1
+    bne x5, x14, reg2_error_loop
+    li x5, 0xf1
+    bne x5, x15, reg2_error_loop
+    li x5, 0x20
+    bne x5, x16, reg2_error_loop
+    li x5, 0x21
+    bne x5, x17, reg2_error_loop
+    li x5, 0x22
+    bne x5, x18, reg2_error_loop
+    li x5, 0x23
+    bne x5, x19, reg2_error_loop
+    li x5, 0x24
+    bne x5, x20, reg2_error_loop
+    li x5, 0x25
+    bne x5, x21, reg2_error_loop
+    li x5, 0x26
+    bne x5, x22, reg2_error_loop
+    li x5, 0x27
+    bne x5, x23, reg2_error_loop
+    li x5, 0x28
+    bne x5, x24, reg2_error_loop
+    li x5, 0x29
+    bne x5, x25, reg2_error_loop
+    li x5, 0x2a
+    bne x5, x26, reg2_error_loop
+    li x5, 0x2b
+    bne x5, x27, reg2_error_loop
+    li x5, 0x2c
+    bne x5, x28, reg2_error_loop
+    li x5, 0x2d
+    bne x5, x29, reg2_error_loop
+    li x5, 0x2e
+    bne x5, x30, reg2_error_loop
+    li x5, 0x2f
+    bne x5, x31, reg2_error_loop
+
+    /* Everything passed, increment the loop counter. */
+    lw x5, ulRegTest2LoopCounterConst
+    lw x6, 0(x5)
+    addi x6, x6, 1
+    sw x6, 0(x5)
+
+    /* Restore clobbered register reading for next loop. */
+    li x6, 0x61
+
+    /* Start again. */
+    jal Reg2_loop
+
+reg2_error_loop:
+    /* Jump here if a register contains an uxpected value.  This stops the loop
+    counter being incremented so the check task knows an error was found. */
+    jal reg2_error_loop
+
+ulRegTest2LoopCounterConst: .word ulRegTest2LoopCounter
+
+
diff --git a/FreeRTOS/Demo/RISC-V-Qemu-sifive_e-FreedomStudio/main.c b/FreeRTOS/Demo/RISC-V-Qemu-sifive_e-FreedomStudio/main.c
index 6492185..a33a716 100644
--- a/FreeRTOS/Demo/RISC-V-Qemu-sifive_e-FreedomStudio/main.c
+++ b/FreeRTOS/Demo/RISC-V-Qemu-sifive_e-FreedomStudio/main.c
@@ -30,247 +30,99 @@
 void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName );
 
 
-void reset_demo (void);
 
-// Structures for registering different interrupt handlers
-// for different parts of the application.
-typedef void (*function_ptr_t) (void);
-
-void no_interrupt_handler (void) {};
-
-function_ptr_t g_ext_interrupt_handlers[PLIC_NUM_INTERRUPTS];
+void vRegTest1Task( void *pvParameters );
+void vRegTest2Task( void *pvParameters );
 
 
-// Instance data for the PLIC.
-
+const char * const pcStartMessage = "FreeRTOS demo\r\n";
+volatile uint32_t ulRegTest1LoopCounter = 0, ulRegTest2LoopCounter = 0;
+static void prvCheckTask( void *pvParameters );
 plic_instance_t g_plic;
+uint32_t bitbang_mask = 0;
 
-
-/*Entry Point for PLIC Interrupt Handler*/
-void handle_m_ext_interrupt(){
-  plic_source int_num  = PLIC_claim_interrupt(&g_plic);
-  if ((int_num >=1 ) && (int_num < PLIC_NUM_INTERRUPTS)) {
-    g_ext_interrupt_handlers[int_num]();
-  }
-  else {
-    exit(1 + (uintptr_t) int_num);
-  }
-  PLIC_complete_interrupt(&g_plic, int_num);
-}
-
-
-/*Entry Point for Machine Timer Interrupt Handler*/
-void handle_m_time_interrupt(){
-
-  clear_csr(mie, MIP_MTIP);
-
-  // Reset the timer for 3s in the future.
-  // This also clears the existing timer interrupt.
-
-  volatile uint64_t * mtime       = (uint64_t*) (CLINT_CTRL_ADDR + CLINT_MTIME);
-  volatile uint64_t * mtimecmp    = (uint64_t*) (CLINT_CTRL_ADDR + CLINT_MTIMECMP);
-  uint64_t now = *mtime;
-  uint64_t then = now + 2 * RTC_FREQ;
-  *mtimecmp = then;
-
-  // read the current value of the LEDS and invert them.
-  uint32_t leds = GPIO_REG(GPIO_OUTPUT_VAL);
-
-  GPIO_REG(GPIO_OUTPUT_VAL) ^= ((0x1 << RED_LED_OFFSET)   |
-				(0x1 << GREEN_LED_OFFSET) |
-				(0x1 << BLUE_LED_OFFSET));
-  
-  // Re-enable the timer interrupt.
-  set_csr(mie, MIP_MTIP);
-
-}
-
-
-const char * instructions_msg = " \
-\n\
-                SIFIVE, INC.\n\
-\n\
-         5555555555555555555555555\n\
-        5555                   5555\n\
-       5555                     5555\n\
-      5555                       5555\n\
-     5555       5555555555555555555555\n\
-    5555       555555555555555555555555\n\
-   5555                             5555\n\
-  5555                               5555\n\
- 5555                                 5555\n\
-5555555555555555555555555555          55555\n\
- 55555           555555555           55555\n\
-   55555           55555           55555\n\
-     55555           5           55555\n\
-       55555                   55555\n\
-         55555               55555\n\
-           55555           55555\n\
-             55555       55555\n\
-               55555   55555\n\
-                 555555555\n\
-                   55555\n\
-                     5\n\
-\n\
-SiFive E-Series Software Development Kit 'demo_gpio' program.\n\
-Every 2 second, the Timer Interrupt will invert the LEDs.\n\
-(Arty Dev Kit Only): Press Buttons 0, 1, 2 to Set the LEDs.\n\
-Pin 19 (HiFive1) or A5 (Arty Dev Kit) is being bit-banged\n\
-for GPIO speed demonstration.\n\
-\n\
- ";
-
-void print_instructions() {
-
-  write (STDOUT_FILENO, instructions_msg, strlen(instructions_msg));
-
-}
-
-#ifdef HAS_BOARD_BUTTONS
-void button_0_handler(void) {
-
-  // Red LED on
-  GPIO_REG(GPIO_OUTPUT_VAL) |= (0x1 << RED_LED_OFFSET);
-
-  // Clear the GPIO Pending interrupt by writing 1.
-  GPIO_REG(GPIO_RISE_IP) = (0x1 << BUTTON_0_OFFSET);
-
-};
-
-void button_1_handler(void) {
-
-  // Green LED On
-  GPIO_REG(GPIO_OUTPUT_VAL) |= (1 << GREEN_LED_OFFSET);
-
-  // Clear the GPIO Pending interrupt by writing 1.
-  GPIO_REG(GPIO_RISE_IP) = (0x1 << BUTTON_1_OFFSET);
-
-};
-
-
-void button_2_handler(void) {
-
-  // Blue LED On
-  GPIO_REG(GPIO_OUTPUT_VAL) |= (1 << BLUE_LED_OFFSET);
-
-  GPIO_REG(GPIO_RISE_IP) = (0x1 << BUTTON_2_OFFSET);
-
-};
-#endif
-
-void reset_demo (){
-
-  // Disable the machine & timer interrupts until setup is done.
-
-  clear_csr(mie, MIP_MEIP);
-  clear_csr(mie, MIP_MTIP);
-
-  for (int ii = 0; ii < PLIC_NUM_INTERRUPTS; ii ++){
-    g_ext_interrupt_handlers[ii] = no_interrupt_handler;
-  }
-
-#ifdef HAS_BOARD_BUTTONS
-  g_ext_interrupt_handlers[INT_DEVICE_BUTTON_0] = button_0_handler;
-  g_ext_interrupt_handlers[INT_DEVICE_BUTTON_1] = button_1_handler;
-  g_ext_interrupt_handlers[INT_DEVICE_BUTTON_2] = button_2_handler;
-#endif
-
-  print_instructions();
-
-#ifdef HAS_BOARD_BUTTONS
-
-  // Have to enable the interrupt both at the GPIO level,
-  // and at the PLIC level.
-  PLIC_enable_interrupt (&g_plic, INT_DEVICE_BUTTON_0);
-  PLIC_enable_interrupt (&g_plic, INT_DEVICE_BUTTON_1);
-  PLIC_enable_interrupt (&g_plic, INT_DEVICE_BUTTON_2);
-
-  // Priority must be set > 0 to trigger the interrupt.
-  PLIC_set_priority(&g_plic, INT_DEVICE_BUTTON_0, 1);
-  PLIC_set_priority(&g_plic, INT_DEVICE_BUTTON_1, 1);
-  PLIC_set_priority(&g_plic, INT_DEVICE_BUTTON_2, 1);
-
-  GPIO_REG(GPIO_RISE_IE) |= (1 << BUTTON_0_OFFSET);
-  GPIO_REG(GPIO_RISE_IE) |= (1 << BUTTON_1_OFFSET);
-  GPIO_REG(GPIO_RISE_IE) |= (1 << BUTTON_2_OFFSET);
-
-#endif
-
-    // Set the machine timer to go off in 3 seconds.
-    // The
-    volatile uint64_t * mtime       = (uint64_t*) (CLINT_CTRL_ADDR + CLINT_MTIME);
-    volatile uint64_t * mtimecmp    = (uint64_t*) (CLINT_CTRL_ADDR + CLINT_MTIMECMP);
-    uint64_t now = *mtime;
-    uint64_t then = now + 2*RTC_FREQ;
-    *mtimecmp = then;
-
-    // Enable the Machine-External bit in MIE
-    set_csr(mie, MIP_MEIP);
-
-    // Enable the Machine-Timer bit in MIE
-    set_csr(mie, MIP_MTIP);
-
-    // Enable interrupts in general.
-    set_csr(mstatus, MSTATUS_MIE);
-}
-
-int main(int argc, char **argv)
+int main( void )
 {
-  // Set up the GPIOs such that the LED GPIO
-  // can be used as both Inputs and Outputs.
-  
+	#ifdef HAS_BOARD_BUTTONS
+		GPIO_REG(GPIO_OUTPUT_EN)  &= ~((0x1 << BUTTON_0_OFFSET) | (0x1 << BUTTON_1_OFFSET) | (0x1 << BUTTON_2_OFFSET));
+		GPIO_REG(GPIO_PULLUP_EN)  &= ~((0x1 << BUTTON_0_OFFSET) | (0x1 << BUTTON_1_OFFSET) | (0x1 << BUTTON_2_OFFSET));
+		GPIO_REG(GPIO_INPUT_EN)   |=  ((0x1 << BUTTON_0_OFFSET) | (0x1 << BUTTON_1_OFFSET) | (0x1 << BUTTON_2_OFFSET));
+	#endif
 
-#ifdef HAS_BOARD_BUTTONS
-  GPIO_REG(GPIO_OUTPUT_EN)  &= ~((0x1 << BUTTON_0_OFFSET) | (0x1 << BUTTON_1_OFFSET) | (0x1 << BUTTON_2_OFFSET));
-  GPIO_REG(GPIO_PULLUP_EN)  &= ~((0x1 << BUTTON_0_OFFSET) | (0x1 << BUTTON_1_OFFSET) | (0x1 << BUTTON_2_OFFSET));
-  GPIO_REG(GPIO_INPUT_EN)   |=  ((0x1 << BUTTON_0_OFFSET) | (0x1 << BUTTON_1_OFFSET) | (0x1 << BUTTON_2_OFFSET));
-#endif
+	GPIO_REG(GPIO_INPUT_EN)    &= ~((0x1<< RED_LED_OFFSET) | (0x1<< GREEN_LED_OFFSET) | (0x1 << BLUE_LED_OFFSET)) ;
+	GPIO_REG(GPIO_OUTPUT_EN)   |=  ((0x1<< RED_LED_OFFSET)| (0x1<< GREEN_LED_OFFSET) | (0x1 << BLUE_LED_OFFSET)) ;
+	GPIO_REG(GPIO_OUTPUT_VAL)  |=   (0x1 << BLUE_LED_OFFSET) ;
+	GPIO_REG(GPIO_OUTPUT_VAL)  &=  ~((0x1<< RED_LED_OFFSET) | (0x1<< GREEN_LED_OFFSET)) ;
 
-  GPIO_REG(GPIO_INPUT_EN)    &= ~((0x1<< RED_LED_OFFSET) | (0x1<< GREEN_LED_OFFSET) | (0x1 << BLUE_LED_OFFSET)) ;
-  GPIO_REG(GPIO_OUTPUT_EN)   |=  ((0x1<< RED_LED_OFFSET)| (0x1<< GREEN_LED_OFFSET) | (0x1 << BLUE_LED_OFFSET)) ;
-  GPIO_REG(GPIO_OUTPUT_VAL)  |=   (0x1 << BLUE_LED_OFFSET) ;
-  GPIO_REG(GPIO_OUTPUT_VAL)  &=  ~((0x1<< RED_LED_OFFSET) | (0x1<< GREEN_LED_OFFSET)) ;
+	/* For Bit-banging with Atomics demo. */
+	#ifdef _SIFIVE_HIFIVE1_H
+		bitbang_mask = (1 << PIN_19_OFFSET);
+	#else
+		#ifdef _SIFIVE_COREPLEXIP_ARTY_H
+			bitbang_mask = (0x1 << JA_0_OFFSET);
+		#endif
+	#endif
 
-  
-  // For Bit-banging with Atomics demo.
-  
-  uint32_t bitbang_mask = 0;
-#ifdef _SIFIVE_HIFIVE1_H
-  bitbang_mask = (1 << PIN_19_OFFSET);
-#else
-#ifdef _SIFIVE_COREPLEXIP_ARTY_H
-  bitbang_mask = (0x1 << JA_0_OFFSET);
-#endif
-#endif
+	GPIO_REG(GPIO_OUTPUT_EN) |= bitbang_mask;
 
-  GPIO_REG(GPIO_OUTPUT_EN) |= bitbang_mask;
-  
-  /**************************************************************************
-   * Set up the PLIC
-   *
-   *************************************************************************/
-  PLIC_init(&g_plic,
-	    PLIC_CTRL_ADDR,
-	    PLIC_NUM_INTERRUPTS,
-	    PLIC_NUM_PRIORITIES);
+//	xTaskCreate( vRegTest1Task, "RegTest1", 1000, NULL, tskIDLE_PRIORITY, NULL );
+//	xTaskCreate( vRegTest2Task, "RegTest2", 1000, NULL, tskIDLE_PRIORITY, NULL );
+	xTaskCreate( prvCheckTask, "Check", 1000, NULL, configMAX_PRIORITIES - 1, NULL );
 
-  reset_demo();
-
-  /**************************************************************************
-   * Demonstrate fast GPIO bit-banging.
-   * One can bang it faster than this if you know
-   * the entire OUTPUT_VAL that you want to write, but 
-   * Atomics give a quick way to control a single bit.
-   *************************************************************************/
-  // For Bit-banging with Atomics demo.
-  
-  while (1){
-    atomic_fetch_xor_explicit(&GPIO_REG(GPIO_OUTPUT_VAL), bitbang_mask, memory_order_relaxed);
-  }
-
-  return 0;
-
+	vTaskStartScheduler();
 }
+/*-----------------------------------------------------------*/
+
+static void prvCheckTask( void *pvParameters )
+{
+const char *pcMessage = "PASS\r\n";
+const TickType_t xCheckPeriod = pdMS_TO_TICKS( 3000UL );
+uint32_t ulLastRegTest1LoopCounter = 0, ulLastRegTest2LoopCounter = 0;
+volatile uintptr_t mstatus;
+
+volatile uint32_t ulx;
+__asm volatile ("csrr %0, mstatus" : "=r"(mstatus));
+portENABLE_INTERRUPTS();
+__asm volatile ("csrr %0, mstatus" : "=r"(mstatus));
+for( ;; )
+{
+//	for( ulx = 0; ulx < 0xffff; ulx++ ) __asm volatile( "NOP" );
+//	vPortSetupTimerInterrupt();
+	vTaskDelay( xCheckPeriod );
+	write( STDOUT_FILENO, "Blip\r\n", strlen( "Blip\r\n" ) );
+}
+#if 0
+	for( ;; )
+	{
+		vTaskDelay( xCheckPeriod );
+
+		if( ulLastRegTest1LoopCounter == ulRegTest1LoopCounter )
+		{
+			/* The RegTest1 loop counter is no longer incrementing, indicating
+			the task failed its self check. */
+			pcMessage = "FAIL: RegTest1\r\n";
+		}
+		else
+		{
+			ulLastRegTest1LoopCounter = ulRegTest1LoopCounter;
+		}
+
+		if( ulLastRegTest2LoopCounter == ulRegTest2LoopCounter )
+		{
+			/* The RegTest1 loop counter is no longer incrementing, indicating
+			the task failed its self check. */
+			pcMessage = "FAIL: RegTest2\r\n";
+		}
+		else
+		{
+			ulLastRegTest2LoopCounter = ulRegTest2LoopCounter;
+		}
+
+		vUARTWriteString( pcMessage );
+	}
+#endif
+}
+/*-----------------------------------------------------------*/
 
 void vApplicationMallocFailedHook( void )
 {
@@ -316,11 +168,35 @@
 }
 /*-----------------------------------------------------------*/
 
+#define mainINTERRUPT_BIT_SET 0x80000000UL
+#define mainENVIRONMENT_CALL	11UL
+#define mainEXTERNAL_INTERRRUPT ( mainINTERRUPT_BIT_SET | 11UL )
+#define mainTIMER_INTERRUPT		( mainINTERRUPT_BIT_SET | 7UL )
+#define mainSOFTWARE_INTERRUPT	( mainINTERRUPT_BIT_SET | 3UL )
 
+extern void Timer_IRQHandler( void );
 
-void trap_entry( void )
+uint32_t ulPortTrapHandler( uint32_t mcause, uint32_t mepc )
 {
-#warning Dummy until kernel code is incldued.
+	if( mcause == mainENVIRONMENT_CALL )
+	{
+		vTaskSwitchContext();
+
+		/* Ensure not to return to the instruction that generated the exception. */
+		mepc += 4;
+	}
+	else if( mcause == mainEXTERNAL_INTERRRUPT )
+	{
+		for( ;; );
+	}
+	else if( mcause == mainTIMER_INTERRUPT )
+	{
+		Timer_IRQHandler();
+	}
+	else if( mcause == mainSOFTWARE_INTERRUPT )
+	{
+		for( ;; );
+	}
+
+	return mepc;
 }
-
-
diff --git a/FreeRTOS/Source/include/task.h b/FreeRTOS/Source/include/task.h
index 446f6fa..9d0b520 100644
--- a/FreeRTOS/Source/include/task.h
+++ b/FreeRTOS/Source/include/task.h
@@ -376,9 +376,9 @@
  * memory to be allocated dynamically.
  *
  * @return If neither pxStackBuffer or pxTaskBuffer are NULL, then the task will
- * be created and pdPASS is returned.  If either pxStackBuffer or pxTaskBuffer
- * are NULL then the task will not be created and
- * errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY is returned.
+ * be created and a handle to the created task is returned.  If either
+ * pxStackBuffer or pxTaskBuffer are NULL then the task will not be created and
+ * NULL is returned.
  *
  * Example usage:
    <pre>
diff --git a/FreeRTOS/Source/portable/GCC/RISC-V-RV32/port.c b/FreeRTOS/Source/portable/GCC/RISC-V-RV32/port.c
index 2a0686b..2754cb4 100644
--- a/FreeRTOS/Source/portable/GCC/RISC-V-RV32/port.c
+++ b/FreeRTOS/Source/portable/GCC/RISC-V-RV32/port.c
@@ -51,7 +51,7 @@
 /* Used to program the machine timer compare register. */
 static uint64_t ullNextTime = 0ULL;
 static const uint64_t ullTimerIncrementsForOneTick = ( uint64_t ) ( configCPU_CLOCK_HZ / configTICK_RATE_HZ );
-static volatile uint64_t * const pullMachineTimerCompareRegister = ( volatile uint64_t * const ) ( configCTRL_BASE + 0x4000 );
+static volatile uint64_t * const pullMachineTimerCompareRegister = ( volatile uint64_t * const ) ( configCLINT_BASE_ADDRESS + 0x4000 );
 
 /*-----------------------------------------------------------*/
 
@@ -175,8 +175,8 @@
 void vPortSetupTimerInterrupt( void )
 {
 uint32_t ulCurrentTimeHigh, ulCurrentTimeLow;
-volatile uint32_t * const pulTimeHigh = ( volatile uint32_t * const ) ( configCTRL_BASE + 0xBFFC );
-volatile uint32_t * const pulTimeLow = ( volatile uint32_t * const ) ( configCTRL_BASE + 0xBFF8 );
+volatile uint32_t * const pulTimeHigh = ( volatile uint32_t * const ) ( configCLINT_BASE_ADDRESS + 0xBFFC );
+volatile uint32_t * const pulTimeLow = ( volatile uint32_t * const ) ( configCLINT_BASE_ADDRESS + 0xBFF8 );
 
 	do
 	{
@@ -200,12 +200,12 @@
 
 void Software_IRQHandler( void )
 {
-volatile uint32_t * const ulSoftInterrupt = ( uint32_t * ) configCTRL_BASE;
+volatile uint32_t * const ulSoftInterrupt = ( uint32_t * ) configCLINT_BASE_ADDRESS;
 
 	vTaskSwitchContext();
 
 	/* Clear software interrupt. */
-	*( ( uint32_t * ) configCTRL_BASE ) &= 0x08UL;
+	*( ( uint32_t * ) configCLINT_BASE_ADDRESS ) &= 0x08UL;
 }
 /*-----------------------------------------------------------*/
 
@@ -246,6 +246,14 @@
 	should be executing. */
 	return pdFAIL;
 }
+/*-----------------------------------------------------------*/
+
+void vPortEndScheduler( void )
+{
+	/* Not implemented. */
+	for( ;; );
+}
+
 
 
 
diff --git a/FreeRTOS/Source/portable/GCC/RISC-V-RV32/portASM.S b/FreeRTOS/Source/portable/GCC/RISC-V-RV32/portASM.S
index 4a128cb..8ffd3a4 100644
--- a/FreeRTOS/Source/portable/GCC/RISC-V-RV32/portASM.S
+++ b/FreeRTOS/Source/portable/GCC/RISC-V-RV32/portASM.S
@@ -41,13 +41,16 @@
 .global xPortStartFirstTask
 .global vPortTrapHandler
 .extern pxCurrentTCB
-.extern handle_trap
+.extern ulPortTrapHandler
 
 /*-----------------------------------------------------------*/
 
 .align 8
 xPortStartFirstTask:
 
+	la t0, vPortTrapHandler
+	csrw mtvec, t0
+
 	lw  sp, pxCurrentTCB            /* Load pxCurrentTCB. */
 	lw  sp, 0( sp )                 /* Read sp from first TCB member. */
 
@@ -127,7 +130,7 @@
 	csrr a1, mepc
 	mv a2, sp
 /*_RB_ Does stack need aligning here? */
-	jal handle_trap
+	jal ulPortTrapHandler
 	csrw mepc, a0
 	/* Save exception return address. */
 	sw a0, 0( sp )
diff --git a/FreeRTOS/Source/portable/GCC/RISC-V-RV32/portmacro.h b/FreeRTOS/Source/portable/GCC/RISC-V-RV32/portmacro.h
index d1df681..72b8b83 100644
--- a/FreeRTOS/Source/portable/GCC/RISC-V-RV32/portmacro.h
+++ b/FreeRTOS/Source/portable/GCC/RISC-V-RV32/portmacro.h
@@ -70,7 +70,7 @@
 
 
 /* Scheduler utilities. */
-#define portYIELD() __asm volatile( "ecall" ); // software interrupt alternative *( ( uint32_t * ) configCTRL_BASE ) |= 0x08UL
+#define portYIELD() __asm volatile( "ecall" ); // software interrupt alternative *( ( uint32_t * ) configCLINT_BASE_ADDRESS ) |= 0x08UL
 #define portEND_SWITCHING_ISR( xSwitchRequired ) if( xSwitchRequired ) vPortYield()
 #define portYIELD_FROM_ISR( x ) portEND_SWITCHING_ISR( x )
 /*-----------------------------------------------------------*/
diff --git a/FreeRTOS/Source/tasks.c b/FreeRTOS/Source/tasks.c
index 0c395d7..faf4671 100644
--- a/FreeRTOS/Source/tasks.c
+++ b/FreeRTOS/Source/tasks.c
@@ -2937,28 +2937,28 @@
 
 		#if ( configGENERATE_RUN_TIME_STATS == 1 )
 		{
-				#ifdef portALT_GET_RUN_TIME_COUNTER_VALUE
-					portALT_GET_RUN_TIME_COUNTER_VALUE( ulTotalRunTime );
-				#else
-					ulTotalRunTime = portGET_RUN_TIME_COUNTER_VALUE();
-				#endif
+			#ifdef portALT_GET_RUN_TIME_COUNTER_VALUE
+				portALT_GET_RUN_TIME_COUNTER_VALUE( ulTotalRunTime );
+			#else
+				ulTotalRunTime = portGET_RUN_TIME_COUNTER_VALUE();
+			#endif
 
-				/* Add the amount of time the task has been running to the
-				accumulated time so far.  The time the task started running was
-				stored in ulTaskSwitchedInTime.  Note that there is no overflow
-				protection here so count values are only valid until the timer
-				overflows.  The guard against negative values is to protect
-				against suspect run time stat counter implementations - which
-				are provided by the application, not the kernel. */
-				if( ulTotalRunTime > ulTaskSwitchedInTime )
-				{
-					pxCurrentTCB->ulRunTimeCounter += ( ulTotalRunTime - ulTaskSwitchedInTime );
-				}
-				else
-				{
-					mtCOVERAGE_TEST_MARKER();
-				}
-				ulTaskSwitchedInTime = ulTotalRunTime;
+			/* Add the amount of time the task has been running to the
+			accumulated time so far.  The time the task started running was
+			stored in ulTaskSwitchedInTime.  Note that there is no overflow
+			protection here so count values are only valid until the timer
+			overflows.  The guard against negative values is to protect
+			against suspect run time stat counter implementations - which
+			are provided by the application, not the kernel. */
+			if( ulTotalRunTime > ulTaskSwitchedInTime )
+			{
+				pxCurrentTCB->ulRunTimeCounter += ( ulTotalRunTime - ulTaskSwitchedInTime );
+			}
+			else
+			{
+				mtCOVERAGE_TEST_MARKER();
+			}
+			ulTaskSwitchedInTime = ulTotalRunTime;
 		}
 		#endif /* configGENERATE_RUN_TIME_STATS */
 
