[cpu] Add linux registers to CallExtern

This commit is contained in:
Sandy Carter 2019-07-13 14:11:25 -04:00
parent 74d30f8348
commit b3f5b6ecf0
1 changed files with 5 additions and 0 deletions

View File

@ -497,8 +497,13 @@ void X64Emitter::CallExtern(const hir::Instr* instr, const Function* function) {
auto thunk = backend()->guest_to_host_thunk();
mov(rax, reinterpret_cast<uint64_t>(thunk));
mov(rcx, reinterpret_cast<uint64_t>(builtin_function->handler()));
#if XE_PLATFORM_LINUX
mov(rbx, reinterpret_cast<uint64_t>(builtin_function->arg0()));
mov(rdx, reinterpret_cast<uint64_t>(builtin_function->arg1()));
#else
mov(rdx, reinterpret_cast<uint64_t>(builtin_function->arg0()));
mov(r8, reinterpret_cast<uint64_t>(builtin_function->arg1()));
#endif
call(rax);
// rax = host return
}