From 9abd84992b8b4cbf57dab4a5efb2ae4d0ceaec01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=97=E6=8C=AF=E5=87=B1?= Date: Fri, 18 Feb 2022 03:01:50 +0800 Subject: [PATCH] Set the mtvec register in the Spike demonstraction (#794) * Set the mtvec register to freertos_risc_v_trap_handler --- FreeRTOS/Demo/RISC-V-spike-htif_GCC/main.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/FreeRTOS/Demo/RISC-V-spike-htif_GCC/main.c b/FreeRTOS/Demo/RISC-V-spike-htif_GCC/main.c index 5d18bedf7..f22ed701c 100644 --- a/FreeRTOS/Demo/RISC-V-spike-htif_GCC/main.c +++ b/FreeRTOS/Demo/RISC-V-spike-htif_GCC/main.c @@ -31,11 +31,18 @@ /* Run a simple demo just prints 'Blink' */ #define DEMO_BLINKY 1 +extern void freertos_risc_v_trap_handler( void ); + void vApplicationMallocFailedHook( void ); void vApplicationIdleHook( void ); void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName ); void vApplicationTickHook( void ); +/* + * Setup the Spike simulator to run this demo. + */ +static void prvSetupSpike( void ); + int main_blinky( void ); /*-----------------------------------------------------------*/ @@ -43,6 +50,7 @@ int main_blinky( void ); int main( void ) { int ret; + prvSetupSpike(); #if defined(DEMO_BLINKY) ret = main_blinky(); @@ -52,6 +60,11 @@ int main( void ) return ret; } +/*-----------------------------------------------------------*/ +static void prvSetupSpike( void ) +{ + __asm__ volatile( "csrw mtvec, %0" :: "r"( freertos_risc_v_trap_handler ) ); +} /*-----------------------------------------------------------*/