From 441665abad40d7838535323218ecbcc657709a56 Mon Sep 17 00:00:00 2001 From: Amneesh Singh Date: Tue, 11 Jun 2024 23:28:27 +0530 Subject: [PATCH] cpu/arm: fix single data transfer Signed-off-by: Amneesh Singh --- src/cpu/arm/exec.cc | 4 ---- tests/cpu/arm/exec.cc | 4 ++-- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/cpu/arm/exec.cc b/src/cpu/arm/exec.cc index eb27115..072ff08 100644 --- a/src/cpu/arm/exec.cc +++ b/src/cpu/arm/exec.cc @@ -171,10 +171,6 @@ Instruction::exec(Cpu& cpu) { cpu.cpsr.set_c(carry); } - // PC is always two instructions ahead - if (data.rn == cpu.PC_INDEX) - address -= 2 * INSTRUCTION_SIZE; - if (data.pre) address += (data.up ? offset : -offset); diff --git a/tests/cpu/arm/exec.cc b/tests/cpu/arm/exec.cc index ab8d8bb..14649f3 100644 --- a/tests/cpu/arm/exec.cc +++ b/tests/cpu/arm/exec.cc @@ -319,9 +319,9 @@ TEST_CASE_METHOD(CpuFixture, "Single Data Transfer", TAG) { exec(data); - CHECK(bus.read_word(0x300352A - 2 * INSTRUCTION_SIZE) == 61119); + CHECK(bus.read_word(0x300352A) == 61119); // 0x300352A - 0xDA1 - CHECK(getr(15) == 0x3002789 - 2 * INSTRUCTION_SIZE); + CHECK(getr(15) == 0x3002789); // cleanup data_transfer->rn = 7;