From 8ef0427885279738a9af3ad7b8d4df26ed0b8bd9 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Fri, 26 Jun 2020 01:17:19 -0700 Subject: [PATCH] ARM: Fix LDM^ writeback to user-mode register --- CHANGES | 1 + src/arm/isa-arm.c | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGES b/CHANGES index d322ea764..0984d6286 100644 --- a/CHANGES +++ b/CHANGES @@ -5,6 +5,7 @@ Features: Emulation fixes: - ARM: Fix ALU reading PC after shifting - ARM: Fix STR storing PC after address calculation + - ARM: Fix LDM^ writeback to user-mode register - GB: Partially fix timing for skipped BIOS - GB Memory: Fix OAM DMA from top 8 kB - GB MBC: Fix MBC1 mode changing behavior diff --git a/src/arm/isa-arm.c b/src/arm/isa-arm.c index 7201f6160..fa9026001 100644 --- a/src/arm/isa-arm.c +++ b/src/arm/isa-arm.c @@ -446,9 +446,9 @@ ATTRIBUTE_NOINLINE static void _neutralS(struct ARMCore* cpu, int32_t d) { uint32_t address = cpu->gprs[rn]; \ S_PRE; \ address = cpu->memory. LS ## Multiple(cpu, address, rs, LSM_ ## DIRECTION, ¤tCycles); \ + WRITEBACK; \ S_POST; \ - POST_BODY; \ - WRITEBACK;) + POST_BODY;) #define DEFINE_LOAD_STORE_MULTIPLE_INSTRUCTION_ARM(NAME, LS, POST_BODY) \