37 lines
686 B
C
37 lines
686 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 = mcycleh << 31;
|
|
ret <<= 1;
|
|
ret |= mcycle;
|
|
|
|
return ret;
|
|
} |