summaryrefslogtreecommitdiff
path: root/src/main.rs
blob: 6fae7c095fd1e14c1334477563175903730022b3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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<dyn Error>> {
    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::<Rv32i>().add_extension::<Rv32m>();
            cpu.execute(0b00000000000000000001000000010011).unwrap();
        });
        handles.push(handle);
    }

    for handle in handles {
        handle.join().unwrap();
    }

    Ok(())
}