5 #include "sw/device/lib/base/ibex.h"
7 #include "dt/dt_rv_core_ibex.h"
11 #include "sw/device/lib/base/status.h"
14 #include "rv_core_ibex_regs.h"
16 static_assert(kDtRvCoreIbexCount == 1,
17 "this code requires exactly one rv_core_ibex");
18 const dt_rv_core_ibex_t kRvCoreIbexDt = kDtRvCoreIbexFirst;
20 static inline uint32_t rv_core_ibex_base(
void) {
21 return dt_rv_core_ibex_primary_reg_block(kRvCoreIbexDt);
24 void ibex_wait_rnd_valid(
void) {
26 uint32_t reg = ibex_rnd_status_read();
33 uint32_t ibex_rnd_status_read(
void) {
34 return abs_mmio_read32(rv_core_ibex_base() +
35 RV_CORE_IBEX_RND_STATUS_REG_OFFSET);
38 uint32_t ibex_rnd_data_read(
void) {
39 ibex_wait_rnd_valid();
40 return abs_mmio_read32(rv_core_ibex_base() +
41 RV_CORE_IBEX_RND_DATA_REG_OFFSET);