5#ifndef OPENTITAN_SW_DEVICE_SILICON_CREATOR_LIB_DRIVERS_IBEX_H_
6#define OPENTITAN_SW_DEVICE_SILICON_CREATOR_LIB_DRIVERS_IBEX_H_
25uint32_t ibex_fpga_version(
void);
33size_t ibex_addr_remap_slots(
void);
35#ifdef OT_PLATFORM_RV32
39inline void ibex_mcycle_zero(
void) {
48inline uint32_t ibex_mcycle32(
void) {
58inline uint64_t ibex_mcycle(
void) {
65 return ((uint64_t)hi << 32) | lo;
71inline uint64_t ibex_time_to_cycles(uint64_t time_us) {
75extern void ibex_mcycle_zero(
void);
76extern uint32_t ibex_mcycle32(
void);
77extern uint64_t ibex_mcycle(
void);
78extern uint64_t ibex_time_to_cycles(uint64_t time_us);
87typedef enum ibex_exception_code {
88 kIbexExceptionCodeLoadAccessFault = 5,
89 kIbexExceptionCodeMax = 31,
90} ibex_exception_code_t;
104 kAddressTranslationSecMmioConfigure = 6,
118void ibex_addr_remap_set(
size_t slot, uint32_t matching_addr,
119 uint32_t remap_addr,
size_t size);
129uint32_t ibex_addr_remap_get(
size_t slot);
138void ibex_addr_remap_lockdown(
size_t slot);
149bool ibex_addr_remap_is_enabled(
size_t slot);
171bool ibex_addr_remap_verify(
size_t slot, uint32_t matching_addr,
172 uint32_t remap_addr,
size_t size);
174typedef enum ibex_nmi_source {
178 kIbexNmiSourceAlert = 1 << 0,
182 kIbexNmiSourceWdog = 1 << 1,
186 kIbexNmiSourceAll = 0x3,
194void ibex_enable_nmi(ibex_nmi_source_t nmi_src);
201void ibex_clear_nmi(ibex_nmi_source_t nmi_src);