mirror of
https://github.com/RPCSX/rpcsx.git
synced 2026-04-08 07:55:35 +00:00
JIT cleanup for PPU LLVM
Remove MemoryManager3 as unnecessary. Rewrite MemoryManager1 to use its own 512M reservations. Disabled unwind info registration on all platforms. Use 64-bit executable pointers under vm::g_exec_addr area. Stop relying on deploying PPU LLVM objects in first 2G of address space. Implement jit_module_manager, protect its data with mutex.
This commit is contained in:
parent
3c935f7834
commit
f2d2a6b605
6 changed files with 109 additions and 622 deletions
|
|
@ -52,7 +52,7 @@ PPUTranslator::PPUTranslator(LLVMContext& context, Module* _module, const ppu_mo
|
|||
m_thread_type = StructType::create(m_context, thread_struct, "context_t");
|
||||
|
||||
// Callable
|
||||
m_call = new GlobalVariable(*_module, ArrayType::get(GetType<u32>(), 0x80000000)->getPointerTo(), true, GlobalValue::ExternalLinkage, 0, fmt::format("__cptr%x", gsuffix));
|
||||
m_call = new GlobalVariable(*_module, ArrayType::get(GetType<u64>(), 0x40000000)->getPointerTo(), true, GlobalValue::ExternalLinkage, 0, fmt::format("__cptr%x", gsuffix));
|
||||
m_call->setInitializer(ConstantPointerNull::get(cast<PointerType>(m_call->getType()->getPointerElementType())));
|
||||
m_call->setExternallyInitialized(true);
|
||||
|
||||
|
|
@ -331,7 +331,7 @@ void PPUTranslator::CallFunction(u64 target, Value* indirect)
|
|||
}
|
||||
}
|
||||
|
||||
const auto pos = m_ir->CreateShl(m_ir->CreateLShr(indirect, 2, "", true), 1, "", true);
|
||||
const auto pos = m_ir->CreateLShr(indirect, 2, "", true);
|
||||
const auto ptr = m_ir->CreateGEP(m_ir->CreateLoad(m_call), {m_ir->getInt64(0), pos});
|
||||
indirect = m_ir->CreateIntToPtr(m_ir->CreateLoad(ptr), type->getPointerTo());
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue