1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
use anyhow::Result;

pub trait Processor<TModules> {
    fn reset(&mut self, mods: &mut TModules);
    fn exec_step(&mut self, mods: &mut TModules) -> Result<()>;
    fn dump(&self, mods: &TModules);
    fn running(&self) -> bool;
    fn get_io_values(&self) -> Vec<Option<u64>>;
}

mod rv32imv;
pub use rv32imv::{Processor32,ProcessorModules32};
mod rv64imv;
pub use rv64imv::{Rv64imvProcessor,Rv64imvProcessorModules};
mod rv64imvxcheri;
pub use rv64imvxcheri::{Rv64imvXCheriProcessor,Rv64imvXCheriProcessorModules,CheriExecMode};