From e17357a50a7442dc233e61d15b918fa6fe58e1c5 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Fri, 4 Jun 2021 21:01:07 -0700 Subject: [PATCH] ARM Debugger: Fix disassembly alignment (fixes #2204) --- CHANGES | 1 + src/arm/debugger/cli-debugger.c | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index aef829f98..1559694e4 100644 --- a/CHANGES +++ b/CHANGES @@ -11,6 +11,7 @@ Emulation fixes: - GBA Video: Revert scanline latching changes (fixes mgba.io/i/2153, mgba.io/i/2149) Other fixes: - 3DS: Fix disabling "wide" mode on 2DS (fixes mgba.io/i/2167) + - ARM Debugger: Fix disassembly alignment (fixes mgba.io/i/2204) - Core: Fix memory leak in opening games from the library - Core: Fix memory searches for relative values (fixes mgba.io/i/2135) - GB Core: Fix GBC colors setting breaking default model overrides (fixes mgba.io/i/2161) diff --git a/src/arm/debugger/cli-debugger.c b/src/arm/debugger/cli-debugger.c index df3e04c1c..4df448151 100644 --- a/src/arm/debugger/cli-debugger.c +++ b/src/arm/debugger/cli-debugger.c @@ -101,9 +101,10 @@ static inline uint32_t _printLine(struct CLIDebugger* debugger, uint32_t address struct mCore* core = debugger->d.core; char disassembly[64]; struct ARMInstructionInfo info; + address &= ~(WORD_SIZE_THUMB - 1); be->printf(be, "%08X: ", address); if (mode == MODE_ARM) { - uint32_t instruction = core->busRead32(core, address); + uint32_t instruction = core->busRead32(core, address & ~(WORD_SIZE_ARM - 1)); ARMDecodeARM(instruction, &info); ARMDisassemble(&info, core->cpu, core->symbolTable, address + WORD_SIZE_ARM * 2, disassembly, sizeof(disassembly)); be->printf(be, "%08X\t%s\n", instruction, disassembly);