2020-05-31 07:49:49 +00:00
|
|
|
#include "ibex_system.h"
|
|
|
|
|
2020-05-31 12:58:05 +00:00
|
|
|
void __enable_irqs(void) {
|
|
|
|
__csrs("mstatus", 0x08);
|
2020-05-31 07:49:49 +00:00
|
|
|
}
|
|
|
|
|
2020-05-31 12:58:05 +00:00
|
|
|
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;
|
2020-05-31 07:49:49 +00:00
|
|
|
}
|