summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core.rs1
-rw-r--r--src/instructions/rvi.rs2
2 files changed, 2 insertions, 1 deletions
diff --git a/src/core.rs b/src/core.rs
index ce704fb..08f029b 100644
--- a/src/core.rs
+++ b/src/core.rs
@@ -64,6 +64,7 @@ impl Core {
InstructionResult::Normal => {}
InstructionResult::Exception(_e) => {
eprintln!("Exception from instruction");
+ eprintln!("PC: {:016X}, instr: {:08X}", self.pc, instr.0);
break;
}
InstructionResult::Pause => {
diff --git a/src/instructions/rvi.rs b/src/instructions/rvi.rs
index f182e88..0920e80 100644
--- a/src/instructions/rvi.rs
+++ b/src/instructions/rvi.rs
@@ -62,7 +62,7 @@ pub fn sd(core: &mut Core, instr: Instruction) -> InstructionResult {
}
pub fn ld(core: &mut Core, instr: Instruction) -> InstructionResult {
- let addr = core.reg_read(instr.rs1()).wrapping_add(instr.imm_s());
+ let addr = core.reg_read(instr.rs1()).wrapping_add(instr.imm_i());
if !addr.is_multiple_of(std::mem::size_of::<DWord>() as Addr) {
return InstructionResult::Exception(());