Prevent optimization for recompiled functions.

This commit is contained in:
Skyth 2024-09-12 15:45:39 +03:00
parent 589104a0ef
commit 572dc2a67f
2 changed files with 7 additions and 2 deletions
PowerRecomp
PowerUtils

@ -63,7 +63,7 @@ int main()
name = std::format("sub_{:X}", base); name = std::format("sub_{:X}", base);
} }
std::println(f, "void {}(PPCContext& __restrict callerCtx, uint8_t* base) {{", name); std::println(f, "PPC_FUNC void {}(PPCContext& __restrict callerCtx, uint8_t* base) {{", name);
std::println(f, "\tPPCContext ctx = callerCtx;"); std::println(f, "\tPPCContext ctx = callerCtx;");
std::println(f, "\tuint32_t ea;\n"); std::println(f, "\tuint32_t ea;\n");
@ -176,7 +176,9 @@ int main()
targetName = std::format("sub_{:X}", insn.operands[0]); targetName = std::format("sub_{:X}", insn.operands[0]);
} }
std::println(f, "\tctx.lr = 0x{:X};", base); std::println(f, "\tctx.lr = 0x{:X};", base);
std::println(f, "\t{}(ctx, base);", targetName); std::println(f, "\tcallerCtx = ctx;");
std::println(f, "\t{}(callerCtx, base);", targetName);
std::println(f, "\ctx = callerCtx;");
break; break;
} }

@ -7,6 +7,9 @@
#define _byteswap_ushort __builtin_bswap16 #define _byteswap_ushort __builtin_bswap16
#define _byteswap_ulong __builtin_bswap32 #define _byteswap_ulong __builtin_bswap32
#define _byteswap_uint64 __builtin_bswap64 #define _byteswap_uint64 __builtin_bswap64
#define PPC_FUNC extern inline __attribute__((weak,noinline))
#else
#define PPC_FUNC __declspec(noinline)
#endif #endif
#define PPC_LOAD_U8(x) *(uint8_t*)(base + (x)) #define PPC_LOAD_U8(x) *(uint8_t*)(base + (x))