You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
991 B
35 lines
991 B
3 years ago
|
//See LICENSE for license details.
|
||
|
#include <gd32vf103.h>
|
||
|
#include <stdint.h>
|
||
|
#include <stdio.h>
|
||
|
#include <unistd.h>
|
||
|
#include "riscv_encoding.h"
|
||
|
#include "n200_func.h"
|
||
|
|
||
|
extern uint32_t disable_mcycle_minstret();
|
||
|
void _init()
|
||
|
{
|
||
|
SystemInit();
|
||
|
|
||
|
//ECLIC init
|
||
|
eclic_init(ECLIC_NUM_INTERRUPTS);
|
||
|
eclic_mode_enable();
|
||
|
|
||
|
//printf("After ECLIC mode enabled, the mtvec value is %x \n\n\r", read_csr(mtvec));
|
||
|
|
||
|
// // It must be NOTED:
|
||
|
// // * In the RISC-V arch, if user mode and PMP supported, then by default if PMP is not configured
|
||
|
// // with valid entries, then user mode cannot access any memory, and cannot execute any instructions.
|
||
|
// // * So if switch to user-mode and still want to continue, then you must configure PMP first
|
||
|
//pmp_open_all_space();
|
||
|
//switch_m2u_mode();
|
||
|
|
||
|
/* Before enter into main, add the cycle/instret disable by default to save power,
|
||
|
only use them when needed to measure the cycle/instret */
|
||
|
disable_mcycle_minstret();
|
||
|
}
|
||
|
|
||
|
void _fini()
|
||
|
{
|
||
|
}
|