From 51016eb1c59ba082381ea41ea52aee3b992fa158 Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Sun, 27 Dec 2015 21:59:10 -0800 Subject: [PATCH] Jit: Invalidate after module loads. Just to be safe, let's invalidate the entire range. --- Core/HLE/sceKernelModule.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Core/HLE/sceKernelModule.cpp b/Core/HLE/sceKernelModule.cpp index a5fda0e8d6..7cb7ff2ec9 100644 --- a/Core/HLE/sceKernelModule.cpp +++ b/Core/HLE/sceKernelModule.cpp @@ -757,6 +757,9 @@ void Module::Cleanup() { Memory::Write_U32(MIPS_MAKE_BREAK(1), nm.text_addr + i); } Memory::Memset(nm.text_addr + nm.text_size, -1, nm.data_size + nm.bss_size); + + // Let's also invalidate, just to make sure it's cleared out for any future data. + currentMIPS->InvalidateICache(memoryBlockAddr, memoryBlockSize); } } @@ -959,6 +962,8 @@ static Module *__KernelLoadELFFromPtr(const u8 *ptr, u32 loadAddress, bool fromT module->memoryBlockAddr = reader.GetVaddr(); module->memoryBlockSize = reader.GetTotalSize(); + currentMIPS->InvalidateICache(module->memoryBlockAddr, module->memoryBlockSize); + SectionID sceModuleInfoSection = reader.GetSectionByName(".rodata.sceModuleInfo"); PspModuleInfo *modinfo; if (sceModuleInfoSection != -1)