diff --git a/src/core/psxmem.cc b/src/core/psxmem.cc index 7b81a5833..9474cd24d 100644 --- a/src/core/psxmem.cc +++ b/src/core/psxmem.cc @@ -935,18 +935,6 @@ uint32_t PCSX::Memory::msanRealloc(uint32_t ptr, uint32_t size) { return newPtr + c_msanStart; } -bool PCSX::Memory::msanValidateWrite(uint32_t addr, uint32_t size) { - uint32_t msanAddr = addr - c_msanStart; - if (!(m_msanUsableBitmap[msanAddr / 8] & (1 << msanAddr % 8))) { - return false; - } - for (uint32_t checkAddr = msanAddr; checkAddr < msanAddr + size; checkAddr++) { - m_msanWrittenBitmap[checkAddr / 8] |= 1 << checkAddr % 8; - } - [[likely]]; - return true; -} - uint32_t PCSX::Memory::msanSetChainPtr(uint32_t headerAddr, uint32_t nextPtr, uint32_t wordCount) { if (!inMsanRange(headerAddr)) { headerAddr &= 0xffffff; diff --git a/src/core/psxmem.h b/src/core/psxmem.h index 8b5b09e99..204bd09e5 100644 --- a/src/core/psxmem.h +++ b/src/core/psxmem.h @@ -90,9 +90,11 @@ class Memory { uint32_t msanRealloc(uint32_t ptr, uint32_t size); uint32_t msanSetChainPtr(uint32_t headerAddr, uint32_t ptrToNext, uint32_t size); uint32_t msanGetChainPtr(uint32_t addr) const; + inline MsanStatus msanGetStatus(uint32_t addr, uint32_t size) const { uint32_t msanAddr = addr - c_msanStart; if (!(m_msanUsableBitmap[msanAddr / 8] & (1 << msanAddr % 8))) { + [[unlikely]]; return MsanStatus::UNUSABLE; } for (uint32_t checkAddr = msanAddr; checkAddr < msanAddr + size; checkAddr++) { @@ -102,7 +104,18 @@ class Memory { } return MsanStatus::OK; } - bool msanValidateWrite(uint32_t addr, uint32_t size); + + inline bool msanValidateWrite(uint32_t addr, uint32_t size) { + uint32_t msanAddr = addr - c_msanStart; + if (!(m_msanUsableBitmap[msanAddr / 8] & (1 << msanAddr % 8))) { + [[unlikely]]; + return false; + } + for (uint32_t checkAddr = msanAddr; checkAddr < msanAddr + size; checkAddr++) { + m_msanWrittenBitmap[checkAddr / 8] |= 1 << checkAddr % 8; + } + return true; + } static inline bool inMsanRange(uint32_t addr) { return addr >= c_msanStart && addr < c_msanEnd;