From 2ab01af0bd8c4c554f09a9049f05a19df876be32 Mon Sep 17 00:00:00 2001 From: Ben Vanik Date: Fri, 24 May 2013 18:34:08 -0700 Subject: [PATCH] Breaking on indirect branches. --- src/xenia/cpu/x64/x64_emitter.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/xenia/cpu/x64/x64_emitter.cc b/src/xenia/cpu/x64/x64_emitter.cc index 2652e4bb4..9d699d3fa 100644 --- a/src/xenia/cpu/x64/x64_emitter.cc +++ b/src/xenia/cpu/x64/x64_emitter.cc @@ -651,8 +651,9 @@ int X64Emitter::CallFunction(FunctionSymbol* target_symbol, c.ret(); #endif // ASMJIT_WINDOWS } else { -#endif +#else { +#endif // tail call disable // void fn(ppc_state*, uint64_t) X86CompilerFuncCall* call = c.call(target_ptr); call->setComment(target_symbol->name()); @@ -818,6 +819,8 @@ void X64Emitter::TraceBranch(uint32_t cia) { int X64Emitter::GenerateIndirectionBranch(uint32_t cia, GpVar& target, bool lk, bool likely_local) { + X86Compiler& c = compiler_; + // This function is called by the control emitters when they know that an // indirect branch is required. // It first tries to see if the branch is to an address within the function @@ -827,6 +830,7 @@ int X64Emitter::GenerateIndirectionBranch(uint32_t cia, GpVar& target, // TODO(benvanik): port indirection. //XEASSERTALWAYS(); + c.int3(); // BasicBlock* next_block = GetNextBasicBlock();