This repository has been archived on 2024-12-14. You can view files and clone it, but cannot push or open issues or pull requests.
rustboyadvance-ng/src/arm7tdmi/arm/exec.rs

19 lines
816 B
Rust
Raw Normal View History

2019-06-25 03:35:52 +01:00
use super::super::cpu::{Core, CpuPipelineAction, CpuError, CpuInstruction, CpuExecResult};
use super::super::sysbus::SysBus;
use super::{ArmInstruction, ArmInstructionFormat};
impl Core {
pub fn exec_arm(&mut self, sysbus: &mut SysBus, insn: ArmInstruction) -> CpuExecResult {
match insn.fmt {
ArmInstructionFormat::BX => {
self.pc = self.get_reg(insn.rn());
Ok((CpuInstruction::Arm(insn), CpuPipelineAction::Branch))
},
ArmInstructionFormat::B_BL => {
self.pc = (self.pc as i32).wrapping_add(insn.branch_offset()) as u32;
Ok((CpuInstruction::Arm(insn), CpuPipelineAction::Branch))
}
fmt => Err(CpuError::UnimplementedCpuInstruction(CpuInstruction::Arm(insn))),
}
}
}