
On the kendryte k210, writes to mcounteren result in an illegal instruction exception.
Signed-off-by: Sean Anderson seanga2@gmail.com --- arch/riscv/cpu/cpu.c | 2 ++ board/sipeed/maix/Kconfig | 1 + configs/sipeed_maix_bitm_config | 1 + 3 files changed, 4 insertions(+)
diff --git a/arch/riscv/cpu/cpu.c b/arch/riscv/cpu/cpu.c index e457f6acbf..df9eae663c 100644 --- a/arch/riscv/cpu/cpu.c +++ b/arch/riscv/cpu/cpu.c @@ -89,7 +89,9 @@ int arch_cpu_init_dm(void) * Enable perf counters for cycle, time, * and instret counters only */ +#ifndef CONFIG_SYS_RISCV_NOCOUNTER csr_write(CSR_MCOUNTEREN, GENMASK(2, 0)); +#endif
/* Disable paging */ if (supports_extension('s')) diff --git a/board/sipeed/maix/Kconfig b/board/sipeed/maix/Kconfig index 6a25086ef4..c456c47fb2 100644 --- a/board/sipeed/maix/Kconfig +++ b/board/sipeed/maix/Kconfig @@ -37,6 +37,7 @@ config BOARD_SPECIFIC_OPTIONS select SIFIVE_SERIAL select ARCH_DEFAULT_RV64I select ENV_IS_NOWHERE + select SYS_RISCV_NOCOUNTER imply SIFIVE_CLINT imply K210_SYSCTL imply CLK_K210 diff --git a/configs/sipeed_maix_bitm_config b/configs/sipeed_maix_bitm_config index 0088748ae0..73075e3016 100644 --- a/configs/sipeed_maix_bitm_config +++ b/configs/sipeed_maix_bitm_config @@ -30,6 +30,7 @@ CONFIG_RISCV_ISA_A=y CONFIG_SIFIVE_CLINT=y CONFIG_K210_SYSCTL=y CONFIG_SHOW_REGS=y +CONFIG_SYS_RISCV_NOCOUNTER=y CONFIG_STACK_SIZE_SHIFT=14 CONFIG_LOCALVERSION="" CONFIG_CC_OPTIMIZE_FOR_SIZE=y