From 429fff42ccca1365dd37bbe6e33f06d31628037d Mon Sep 17 00:00:00 2001 From: Maschell Date: Tue, 20 Jan 2026 18:25:54 +0100 Subject: [PATCH] Flush custom code when patching functions --- source/function_patcher.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/source/function_patcher.cpp b/source/function_patcher.cpp index 37438e5..ea102cf 100644 --- a/source/function_patcher.cpp +++ b/source/function_patcher.cpp @@ -21,6 +21,19 @@ static void writeDataAndFlushIC(CThread *thread, void *arg) { auto replace_instruction_physical = (uint32_t) &replace_instruction; + if (data->jumpData) { + DCFlushRange(data->jumpData, data->jumpDataSize * sizeof(uint32_t)); + ICInvalidateRange(data->jumpData, data->jumpDataSize * sizeof(uint32_t)); + } + if (data->jumpToOriginal) { + DCFlushRange(data->jumpToOriginal, 5 * sizeof(uint32_t)); + ICInvalidateRange(data->jumpToOriginal, 5 * sizeof(uint32_t)); + } + if (data->realCallFunctionAddressPtr) { + DCFlushRange(data->realCallFunctionAddressPtr, sizeof(uint32_t)); + ICInvalidateRange(data->realCallFunctionAddressPtr, sizeof(uint32_t)); + } + if (replace_instruction_physical < 0x00800000 || replace_instruction_physical >= 0x01000000) { replace_instruction_physical = OSEffectiveToPhysical(replace_instruction_physical); } else {