diff --git a/src/backend/core/registers/Registers.cpp b/src/backend/core/registers/Registers.cpp index f9af5387..8b0c36e8 100644 --- a/src/backend/core/registers/Registers.cpp +++ b/src/backend/core/registers/Registers.cpp @@ -195,6 +195,20 @@ void Registers::Write(size_t idx, s8 v) { gpr[idx] = v; } +template <> +void Registers::Write(size_t idx, Xbyak::Reg v) { + if (idx == 0) + return; + + gprIsConstant[idx] = false; + + if (!jit) + Util::panic("Did you try to call Registers::Write(size_t, *Xbyak::Reg*) from the interpreter?"); + + jit->code.movsx(v.cvt64(), v.cvt8()); + jit->code.mov(jit->GPR(idx), v); +} + template <> void Registers::Write(size_t idx, Xbyak::Reg v) { if (idx == 0)