5 #ifndef OPENTITAN_SW_DEVICE_LIB_RUNTIME_EPMP_H_
6 #define OPENTITAN_SW_DEVICE_LIB_RUNTIME_EPMP_H_
46 typedef enum epmp_perm {
58 kEpmpPermLockedNoAccess,
63 kEpmpPermLockedExecuteOnly,
68 kEpmpPermLockedReadOnly,
73 kEpmpPermLockedReadExecute,
78 kEpmpPermLockedReadWrite,
105 typedef enum epmp_entry {
127 typedef enum epmp_entry_count {
145 } epmp_entry_count_t;
154 typedef enum epmp_result {
170 epmp_result_t epmp_init(
void);
176 epmp_result_t epmp_check(
void);
190 epmp_result_t epmp_transaction_start(epmp_entry_count_t count);
211 epmp_result_t epmp_transaction_end(epmp_entry_count_t count);
216 typedef enum epmp_entry_configure_result {
217 kEpmpEntryConfigureOk = kEpmpOk,
218 kEpmpEntryConfigureError = kEpmpError,
219 kEpmpEntryConfigureBadArg = kEpmpBadArg,
224 kEpmpEntryConfigureBadRegion,
232 kEpmpEntryConfigureBadTransaction,
239 kEpmpEntryConfigureBadEntry,
249 kEpmpEntryConfigureConflict,
250 } epmp_entry_configure_result_t;
292 epmp_entry_configure_result_t epmp_entry_configure_off(epmp_entry_t entry,
294 epmp_perm_t permissions);
348 epmp_entry_configure_result_t epmp_entry_configure_tor(epmp_entry_t entry,
350 epmp_perm_t permissions);
385 epmp_entry_configure_result_t epmp_entry_configure_na4(epmp_entry_t entry,
387 epmp_perm_t permissions);
429 epmp_entry_configure_result_t epmp_entry_configure_napot(
430 epmp_entry_t entry,
epmp_region_t region, epmp_perm_t permissions);
442 epmp_result_t epmp_disable_rule_locking_bypass(
void);