added correct interrupt handler initialization in RISC-V-Qemu-virt_GCC (#864)

* added correct trap_handler initialization in main.c

Co-authored-by: Joseph Julicher <jjulicher@mac.com>
Co-authored-by: Kody Stribrny <kstribrn@amazon.com>
Co-authored-by: Aniruddha Kanhere <60444055+AniruddhaKanhere@users.noreply.github.com>
This commit is contained in:
Andrea 2022-11-11 10:27:56 +01:00 committed by GitHub
parent 54d4eeaa26
commit dc2c031c45
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 78 additions and 2 deletions

View file

@ -20,7 +20,7 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* https://www.FreeRTOS.org
* https://www.github.com/FreeRTOS
* https://github.com/FreeRTOS
*
*/
@ -30,6 +30,10 @@
/* Run a simple demo just prints 'Blink' */
#define DEMO_BLINKY 1
#define mainVECTOR_MODE_DIRECT 1
extern void freertos_risc_v_trap_handler( void );
extern void freertos_vector_table( void );
void vApplicationMallocFailedHook( void );
void vApplicationIdleHook( void );
@ -43,6 +47,16 @@ int main_blinky( void );
int main( void )
{
int ret;
// trap handler initialization
#if( mainVECTOR_MODE_DIRECT == 1 )
{
__asm__ volatile( "csrw mtvec, %0" :: "r"( freertos_risc_v_trap_handler ) );
}
#else
{
__asm__ volatile( "csrw mtvec, %0" :: "r"( ( uintptr_t )freertos_vector_table | 0x1 ) );
}
#endif
#if defined(DEMO_BLINKY)
ret = main_blinky();