ibex_demo/src/ibex_system.c

36 lines
681 B
C

#include "ibex_system.h"
void __enable_irqs(void) {
__csrs("mstatus", 0x08);
}
void __disable_irqs(void) {
__csrc("mstatus", 0x08);
}
void __enable_irqn(int irq_number) {
__csrs("mie", (1U << irq_number));
}
void __enable_mcount(void) {
// CY bit in mcountinhibit
// RISC-V GCC has not implement this CSR name for now.
__csrc("0x320", 0x01);
}
void __disable_mcount(void) {
// Same as above.
__csrs("0x320", 0x01);
}
uint64_t __read_mcycle(void) {
uint32_t mcycleh = 0;
uint32_t mcycle = 0;
__csrr("mcycle", mcycle);
__csrr("mcycleh", mcycleh);
uint64_t ret = (uint64_t)mcycleh << 32;
ret |= mcycle;
return ret;
}