mirror of
https://github.com/RPCSX/rpcsx.git
synced 2026-04-06 06:55:09 +00:00
Initial Linux Aarch64 support
* Update asmjit dependency (aarch64 branch) * Disable USE_DISCORD_RPC by default * Dump some JIT objects in rpcs3 cache dir * Add SIGILL handler for all platforms * Fix resetting zeroing denormals in thread pool * Refactor most v128:: utils into global gv_** functions * Refactor PPU interpreter (incomplete), remove "precise" * - Instruction specializations with multiple accuracy flags * - Adjust calling convention for speed * - Removed precise/fast setting, replaced with static * - Started refactoring interpreters for building at runtime JIT * (I got tired of poor compiler optimizations) * - Expose some accuracy settings (SAT, NJ, VNAN, FPCC) * - Add exec_bytes PPU thread variable (akin to cycle count) * PPU LLVM: fix VCTUXS+VCTSXS instruction NaN results * SPU interpreter: remove "precise" for now (extremely non-portable) * - As with PPU, settings changed to static/dynamic for interpreters. * - Precise options will be implemented later * Fix termination after fatal error dialog
This commit is contained in:
parent
d6aa834b5f
commit
580bd2b25e
89 changed files with 20360 additions and 5612 deletions
|
|
@ -684,7 +684,7 @@ namespace vm
|
|||
// 1. To simplify range_lock logic
|
||||
// 2. To make sure it never overlaps with 32-bit addresses
|
||||
// Also check that it's aligned (lowest 16 bits)
|
||||
ensure((shm_self & 0xffff'8000'0000'ffff) == range_locked);
|
||||
ensure((shm_self & 0xffff'0000'0000'ffff) == range_locked);
|
||||
|
||||
// Find another mirror and map it as shareable too
|
||||
for (auto& ploc : g_locations)
|
||||
|
|
@ -714,7 +714,7 @@ namespace vm
|
|||
u64 shm_self = reinterpret_cast<u64>(shm->get()) ^ range_locked;
|
||||
|
||||
// Check (see above)
|
||||
ensure((shm_self & 0xffff'8000'0000'ffff) == range_locked);
|
||||
ensure((shm_self & 0xffff'0000'0000'ffff) == range_locked);
|
||||
|
||||
// Map range as shareable
|
||||
for (u32 i = addr / 65536; i < addr / 65536 + size / 65536; i++)
|
||||
|
|
@ -1129,13 +1129,16 @@ namespace vm
|
|||
{
|
||||
auto fill64 = [](u8* ptr, u64 data, usz count)
|
||||
{
|
||||
#ifdef _MSC_VER
|
||||
#ifdef _M_X64
|
||||
__stosq(reinterpret_cast<u64*>(ptr), data, count);
|
||||
#else
|
||||
#elif defined(ARCH_X64)
|
||||
__asm__ ("mov %0, %%rdi; mov %1, %%rax; mov %2, %%rcx; rep stosq;"
|
||||
:
|
||||
: "r" (ptr), "r" (data), "r" (count)
|
||||
: "rdi", "rax", "rcx", "memory");
|
||||
#else
|
||||
for (usz i = 0; i < count; i++)
|
||||
reinterpret_cast<u64*>(ptr)[i] = data;
|
||||
#endif
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue