rfnc.rs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. //! Chapter 8. RFENCE Extension (EID #0x52464E43 "RFNC").
  2. /// Extension ID for Remote Fence extension.
  3. #[doc(alias = "SBI_EXT_RFENCE")]
  4. pub const EID_RFNC: usize = crate::eid_from_str("RFNC") as _;
  5. pub use fid::*;
  6. /// Declared in §8.8.
  7. mod fid {
  8. /// Function ID to `FENCE.I` instruction on remote harts.
  9. ///
  10. /// Declared in §8.1.
  11. #[doc(alias = "SBI_EXT_RFENCE_REMOTE_FENCE_I")]
  12. pub const REMOTE_FENCE_I: usize = 0;
  13. /// Function ID to `SFENCE.VMA` for all address spaces on remote harts.
  14. ///
  15. /// Declared in §8.2.
  16. #[doc(alias = "SBI_EXT_RFENCE_REMOTE_SFENCE_VMA")]
  17. pub const REMOTE_SFENCE_VMA: usize = 1;
  18. /// Function ID to address space based `SFENCE.VMA` on remote harts.
  19. ///
  20. /// Declared in §8.3.
  21. #[doc(alias = "SBI_EXT_RFENCE_REMOTE_SFENCE_VMA_ASID")]
  22. pub const REMOTE_SFENCE_VMA_ASID: usize = 2;
  23. /// Function ID to virtual machine id based `HFENCE.GVMA` on remote harts.
  24. ///
  25. /// Declared in §8.4.
  26. #[doc(alias = "SBI_EXT_RFENCE_REMOTE_HFENCE_GVMA_VMID")]
  27. pub const REMOTE_HFENCE_GVMA_VMID: usize = 3;
  28. /// Function ID to `HFENCE.GVMA` for all virtual machines on remote harts.
  29. ///
  30. /// Declared in §8.5.
  31. #[doc(alias = "SBI_EXT_RFENCE_REMOTE_HFENCE_GVMA")]
  32. pub const REMOTE_HFENCE_GVMA: usize = 4;
  33. /// Function ID to address space based `HFENCE.VVMA` for current virtual machine on remote harts.
  34. ///
  35. /// Declared in §8.6.
  36. #[doc(alias = "SBI_EXT_RFENCE_REMOTE_HFENCE_VVMA_ASID")]
  37. pub const REMOTE_HFENCE_VVMA_ASID: usize = 5;
  38. /// Function ID to `HFENCE.VVMA` for all address spaces in the current virtual machine on remote harts.
  39. ///
  40. /// Declared in §8.7.
  41. #[doc(alias = "SBI_EXT_RFENCE_REMOTE_HFENCE_VVMA")]
  42. pub const REMOTE_HFENCE_VVMA: usize = 6;
  43. }