From a8261e82a0f4bed030e2312bb7cb08371be17325 Mon Sep 17 00:00:00 2001 From: Logan McNaughton <848146+loganmc10@users.noreply.github.com> Date: Sun, 8 Oct 2023 08:27:57 -0600 Subject: [PATCH] small cleanup --- src/device/cpu.rs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/device/cpu.rs b/src/device/cpu.rs index f037b96b..3d01ca92 100644 --- a/src/device/cpu.rs +++ b/src/device/cpu.rs @@ -234,7 +234,8 @@ pub fn run(device: &mut device::Device) { device.cpu.running = 1; while device.cpu.running == 1 { device.cpu.gpr[0] = 0; // gpr 0 is read only - let (phys_address, cached, err) = device::memory::translate_address( + let (cached, err); + (device.cpu.pc_phys, cached, err) = device::memory::translate_address( device, device.cpu.pc, device::memory::AccessType::Read, @@ -242,17 +243,18 @@ pub fn run(device: &mut device::Device) { if err { continue; // TLB exception } - device.cpu.pc_phys = phys_address; + if cached { - device::cache::icache_fetch(device, phys_address) + device::cache::icache_fetch(device, device.cpu.pc_phys) } else { - let opcode = device.memory.memory_map_read[(phys_address >> 16) as usize]( + let opcode = device.memory.memory_map_read[(device.cpu.pc_phys >> 16) as usize]( device, - phys_address, + device.cpu.pc_phys, device::memory::AccessSize::Word, ); device::cpu::decode_opcode(device, opcode)(device, opcode); } + match device.cpu.branch_state.state { State::Step => device.cpu.pc += 4, State::Take => {