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
31
32
33
34
35
//! RISC-V emulator core implementation.
//!
//! # How to use
//! Create an `Emulator` object, place a binary data in DRAM and set the program counter to
//! `DRAM_BASE`. The binary data must contain no headers for now. The example is here:
//! ```rust
//! use rvemu::bus::DRAM_BASE;
//! use rvemu::emulator::Emulator;
//!
//! fn main() {
//!     // Create a dummy binary data.
//!     let data = vec![
//!         0x93, 0x0f, 0xa0, 0x02, // addi x31, x0, 42
//!     ];
//!
//!     let mut emu = Emulator::new(); // Create an emulator object.
//!     emu.set_dram(data); // Place the binary data in the beginning of DRAM.
//!     emu.set_pc(DRAM_BASE); // Set the program counter to 0x8000_0000, which is the
//!     address DRAM starts.
//!     emu.start();
//!
//!     assert_eq!();
//! }
//! ```
//!
//! See the example usage in
//! [rvemu/lib/rvemu-cli/src/main.rs](https://github.com/d0iasm/rvemu/blob/master/lib/rvemu-cli/src/main.rs).

pub mod bus;
pub mod cpu;
pub mod csr;
pub mod devices;
pub mod emulator;
pub mod exception;
pub mod memory;