mod call;
mod decode;
mod multithreaded;
mod single_threaded;
use crate::err::MwemuError;
pub(crate) use crate::emu::Emu;
pub(crate) use super::assert_aarch64_arch;
impl Emu {
pub fn step_aarch64(&mut self) -> bool {
assert_aarch64_arch(self, "step_aarch64");
self.step_isa()
}
pub fn run_aarch64(&mut self, end_addr: Option<u64>) -> Result<u64, MwemuError> {
assert_aarch64_arch(self, "run_aarch64");
self.reset_active_instruction_cache();
self.run_preflight()?;
if self.cfg.enable_threading && self.threads.len() > 1 {
self.run_multi_threaded_aarch64(end_addr)
} else {
self.run_single_threaded_aarch64(end_addr)
}
}
pub fn decode_and_execute_aarch64(&mut self) -> (usize, bool) {
self::decode::decode_and_execute_aarch64(self)
}
#[inline]
pub fn advance_pc_aarch64(&mut self, sz: usize) {
self::decode::advance_pc_aarch64(self, sz)
}
}