From a0a9b5bbc5eed06f6705fa4c58dcaa946a231fd3 Mon Sep 17 00:00:00 2001 From: Flyinghead Date: Mon, 12 Dec 2022 22:15:12 +0100 Subject: [PATCH] holly: crash when reading a write-only register --- core/hw/holly/sb.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/core/hw/holly/sb.cpp b/core/hw/holly/sb.cpp index 5fb8f6151..61f552354 100644 --- a/core/hw/holly/sb.cpp +++ b/core/hw/holly/sb.cpp @@ -180,6 +180,10 @@ u32 sb_ReadMem(u32 addr) if (!(sb_regs[offset].flags & REG_RF)) rv = sb_regs[offset].data32; + else if (sb_regs[offset].flags & REG_WO) { + INFO_LOG(HOLLY, "sb_ReadMem write-only reg %s", regName(addr)); + rv = 0; + } else rv = sb_regs[offset].readFunctionAddr(addr); @@ -248,7 +252,7 @@ void sb_rio_register(u32 reg_addr, RegIO flags, RegReadAddrFP* rf, RegWriteAddrF } else { - if (flags & REG_RF) + if ((flags & REG_RF) && !(flags & REG_WO)) sb_regs[idx].readFunctionAddr = rf; else sb_regs[idx].data32 = 0;