board.rs 702 B

1234567891011121314151617181920212223242526
  1. //! Board support, including peripheral and core drivers.
  2. use core::mem::MaybeUninit;
  3. use rustsbi::RustSBI;
  4. use crate::clint::ClintDevice;
  5. use crate::reset::TestDevice;
  6. use crate::console::ConsoleDevice;
  7. use crate::hsm::Hsm;
  8. use crate::rfence::RFence;
  9. pub(crate) static mut SBI: MaybeUninit<Board> = MaybeUninit::uninit();
  10. #[derive(RustSBI, Default)]
  11. #[rustsbi(dynamic)]
  12. pub struct Board<'a> {
  13. #[rustsbi(console)]
  14. pub uart16550: Option<ConsoleDevice<'a>>,
  15. #[rustsbi(ipi, timer)]
  16. pub clint: Option<ClintDevice<'a>>,
  17. #[rustsbi(hsm)]
  18. pub hsm: Option<Hsm>,
  19. #[rustsbi(reset)]
  20. pub sifive_test: Option<TestDevice<'a>>,
  21. #[rustsbi(fence)]
  22. pub rfence: Option<RFence>
  23. }