mirror of
				https://github.com/hedge-dev/XenonRecomp.git
				synced 2025-11-04 06:47:09 +00:00 
			
		
		
		
	Prevent optimization for recompiled functions.
This commit is contained in:
		@@ -63,7 +63,7 @@ int main()
 | 
			
		||||
            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, "\tuint32_t ea;\n");
 | 
			
		||||
 | 
			
		||||
@@ -176,7 +176,9 @@ int main()
 | 
			
		||||
                        targetName = std::format("sub_{:X}", insn.operands[0]);
 | 
			
		||||
                    }
 | 
			
		||||
                    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;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7,6 +7,9 @@
 | 
			
		||||
#define _byteswap_ushort __builtin_bswap16
 | 
			
		||||
#define _byteswap_ulong __builtin_bswap32
 | 
			
		||||
#define _byteswap_uint64 __builtin_bswap64
 | 
			
		||||
#define PPC_FUNC extern inline __attribute__((weak,noinline))
 | 
			
		||||
#else
 | 
			
		||||
#define PPC_FUNC __declspec(noinline)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define PPC_LOAD_U8(x) *(uint8_t*)(base + (x))
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user