#ifndef HSM_EXTERNAL_H
#define HSM_EXTERNAL_H

struct hsm_op_s
{
  sb_hsm_err_t (*enable)();
  sb_hsm_err_t (*disable)();
  sb_hsm_err_t (*enable_int)();
  sb_hsm_err_t (*disable_int)();
  sb_hsm_err_t (*pspe_init)(paddr_t, paddr_t, size_t, paddr_t,
			    size_t, size_t, bool_t, enum sb_page_size_e);
  sb_hsm_err_t (*pspe_delete)(paddr_t);
  sb_hsm_err_t (*sp_init)(paddr_t, enum sb_confidentiality_mode_e,
			  enum sb_integrity_mode_e, uint32_t*, uint32_t*);
  sb_hsm_err_t (*sp_delete)(paddr_t);
  sb_hsm_err_t (*init_page_integrity)(paddr_t, bool_t);
  sb_hsm_err_t (*writeGroup)(paddr_t, uintptr_t);
  sb_hsm_err_t (*prewriteGroup)(uintptr_t);
  sb_hsm_err_t (*completedwriteGroup)(paddr_t);
  sb_hsm_err_t (*prereadGroup)(paddr_t);
  sb_hsm_err_t (*completedreadGroup)(uintptr_t);
  reg_t        (*getstatus)();
};

#endif
