mod rv32_cpu; use rv32_cpu::rv32_cpu::Rv32Cpu; mod instruction; mod rv32i; use rv32i::rv32i::Rv32i; mod rv32m; use rv32m::rv32m::Rv32m; mod extension; use std::error::Error; use std::thread; const HART_CNT: usize = 4; fn main() -> Result<(), Box> { let mut handles = vec![]; for i in 0..HART_CNT { let handle = thread::spawn(move || { let mut cpu: Rv32Cpu = Rv32Cpu::new(i as u32).add_extension::().add_extension::(); cpu.execute(0b00000000000000000001000000010011).unwrap(); }); handles.push(handle); } for handle in handles { handle.join().unwrap(); } Ok(()) }