diff --git a/src/backend/core/JIT.cpp b/src/backend/core/JIT.cpp index 5c305bc2..056c29a5 100644 --- a/src/backend/core/JIT.cpp +++ b/src/backend/core/JIT.cpp @@ -2,6 +2,7 @@ #include namespace n64 { +#ifndef __aarch64__ JIT::JIT(ParallelRDP ¶llel) : regs(this), mem(regs, parallel, this) { blockCache.resize(kUpperSize); if (cs_open(CS_ARCH_MIPS, static_cast(CS_MODE_MIPS64 | CS_MODE_BIG_ENDIAN), &disassemblerMips) != @@ -183,4 +184,5 @@ std::vector JIT::Serialize() { } void JIT::Deserialize(const std::vector &data) { memcpy(®s, data.data(), sizeof(Registers)); } +#endif } // namespace n64 diff --git a/src/backend/core/JIT.hpp b/src/backend/core/JIT.hpp index 82b9d774..03fd0846 100644 --- a/src/backend/core/JIT.hpp +++ b/src/backend/core/JIT.hpp @@ -18,6 +18,9 @@ static constexpr u32 kCodeCacheSize = 32_mb; static constexpr u32 kCodeCacheAllocSize = kCodeCacheSize + 4_kb; #define REG(acc, x) code.acc[code.rbp + (reinterpret_cast(®s.x) - (uintptr_t)this)] +#ifdef __aarch64__ +struct JIT : BaseCPU {}; +#else struct JIT : BaseCPU { explicit JIT(ParallelRDP &); ~JIT() override = default; @@ -222,4 +225,5 @@ private: void xor_(u32); void xori(u32); }; +#endif } // namespace n64 diff --git a/src/backend/core/Mem.cpp b/src/backend/core/Mem.cpp index 403d461a..76a06368 100644 --- a/src/backend/core/Mem.cpp +++ b/src/backend/core/Mem.cpp @@ -357,12 +357,14 @@ void Mem::WriteInterpreter(Registers ®s, u32 paddr, u32 val) { } } +#ifndef __aarch64__ template <> void Mem::WriteJIT(Registers ®s, const u32 paddr, const u32 val) { WriteInterpreter(regs, paddr, val); if (jit) jit->InvalidateBlock(paddr); } +#endif template <> void Mem::Write(Registers ®s, const u32 paddr, const u32 val) { @@ -410,12 +412,14 @@ void Mem::WriteInterpreter(Registers ®s, u32 paddr, u32 val) { } } +#ifndef __aarch64__ template <> void Mem::WriteJIT(Registers ®s, const u32 paddr, const u32 val) { WriteInterpreter(regs, paddr, val); if (jit) jit->InvalidateBlock(paddr); } +#endif template <> void Mem::Write(Registers ®s, const u32 paddr, const u32 val) { @@ -460,23 +464,27 @@ void Mem::WriteInterpreter(Registers ®s, const u32 paddr, const u32 val) } } +#ifndef __aarch64__ template <> void Mem::WriteJIT(Registers ®s, const u32 paddr, const u32 val) { WriteInterpreter(regs, paddr, val); if (jit) jit->InvalidateBlock(paddr); } +#endif template <> void Mem::Write(Registers ®s, const u32 paddr, const u32 val) { WriteInterpreter(regs, paddr, val); } +#ifndef __aarch64__ void Mem::WriteJIT(const Registers ®s, const u32 paddr, const u64 val) { WriteInterpreter(regs, paddr, val); if (jit) jit->InvalidateBlock(paddr); } +#endif void Mem::Write(const Registers ®s, const u32 paddr, const u64 val) { WriteInterpreter(regs, paddr, val); } diff --git a/src/backend/core/registers/Registers.cpp b/src/backend/core/registers/Registers.cpp index 8b0c36e8..edadf2b9 100644 --- a/src/backend/core/registers/Registers.cpp +++ b/src/backend/core/registers/Registers.cpp @@ -75,6 +75,7 @@ s8 Registers::Read(size_t idx) { return static_cast(Read(idx)); } +#ifndef __aarch64__ template <> void Registers::Read(size_t idx, Xbyak::Reg reg) { jit->code.mov(reg.cvt64(), jit->GPR(idx)); @@ -114,6 +115,7 @@ template <> void Registers::Read(size_t idx, Xbyak::Reg reg) { jit->code.mov(reg.cvt8(), jit->GPR(idx)); } +#endif template <> void Registers::Write(size_t idx, bool v) { @@ -195,6 +197,7 @@ void Registers::Write(size_t idx, s8 v) { gpr[idx] = v; } +#ifndef __aarch64__ template <> void Registers::Write(size_t idx, Xbyak::Reg v) { if (idx == 0) @@ -310,4 +313,5 @@ template <> void Registers::Write(size_t idx, Xbyak::Reg v) { Write(idx, v); } +#endif } // namespace n64