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);