diff options
author | Weiyi Wang <wwylele@gmail.com> | 2017-01-31 10:06:42 +0100 |
---|---|---|
committer | Yuri Kunde Schlesner <yuriks@yuriks.net> | 2017-01-31 10:06:42 +0100 |
commit | 0b9c59ff220b7c8f8c06f5cf6fea716970773f00 (patch) | |
tree | 89d6930540a5add3b669bdbb469544dc5016a13b /src/common/x64/abi.h | |
parent | shader_jit_x64_compiler: esi and edi should be persistent (#2500) (diff) | |
download | yuzu-0b9c59ff220b7c8f8c06f5cf6fea716970773f00.tar yuzu-0b9c59ff220b7c8f8c06f5cf6fea716970773f00.tar.gz yuzu-0b9c59ff220b7c8f8c06f5cf6fea716970773f00.tar.bz2 yuzu-0b9c59ff220b7c8f8c06f5cf6fea716970773f00.tar.lz yuzu-0b9c59ff220b7c8f8c06f5cf6fea716970773f00.tar.xz yuzu-0b9c59ff220b7c8f8c06f5cf6fea716970773f00.tar.zst yuzu-0b9c59ff220b7c8f8c06f5cf6fea716970773f00.zip |
Diffstat (limited to 'src/common/x64/abi.h')
-rw-r--r-- | src/common/x64/abi.h | 58 |
1 files changed, 0 insertions, 58 deletions
diff --git a/src/common/x64/abi.h b/src/common/x64/abi.h deleted file mode 100644 index eaaf81d89..000000000 --- a/src/common/x64/abi.h +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright 2008 Dolphin Emulator Project -// Licensed under GPLv2+ -// Refer to the license.txt file included. - -#pragma once - -#include "common/bit_set.h" -#include "emitter.h" - -// x64 ABI:s, and helpers to help follow them when JIT-ing code. -// All convensions return values in EAX (+ possibly EDX). - -// Windows 64-bit -// * 4-reg "fastcall" variant, very new-skool stack handling -// * Callee moves stack pointer, to make room for shadow regs for the biggest function _it itself -// calls_ -// * Parameters passed in RCX, RDX, ... further parameters are MOVed into the allocated stack space. -// Scratch: RAX RCX RDX R8 R9 R10 R11 -// Callee-save: RBX RSI RDI RBP R12 R13 R14 R15 -// Parameters: RCX RDX R8 R9, further MOV-ed - -// Linux 64-bit -// * 6-reg "fastcall" variant, old skool stack handling (parameters are pushed) -// Scratch: RAX RCX RDX RSI RDI R8 R9 R10 R11 -// Callee-save: RBX RBP R12 R13 R14 R15 -// Parameters: RDI RSI RDX RCX R8 R9 - -#define ABI_ALL_FPRS BitSet32(0xffff0000) -#define ABI_ALL_GPRS BitSet32(0x0000ffff) - -#ifdef _WIN32 // 64-bit Windows - the really exotic calling convention - -#define ABI_PARAM1 RCX -#define ABI_PARAM2 RDX -#define ABI_PARAM3 R8 -#define ABI_PARAM4 R9 - -// xmm0-xmm15 use the upper 16 bits in the functions that push/pop registers. -#define ABI_ALL_CALLER_SAVED \ - (BitSet32{RAX, RCX, RDX, R8, R9, R10, R11, XMM0 + 16, XMM1 + 16, XMM2 + 16, XMM3 + 16, \ - XMM4 + 16, XMM5 + 16}) -#else // 64-bit Unix / OS X - -#define ABI_PARAM1 RDI -#define ABI_PARAM2 RSI -#define ABI_PARAM3 RDX -#define ABI_PARAM4 RCX -#define ABI_PARAM5 R8 -#define ABI_PARAM6 R9 - -// TODO: Avoid pushing all 16 XMM registers when possible. Most functions we call probably -// don't actually clobber them. -#define ABI_ALL_CALLER_SAVED (BitSet32{RAX, RCX, RDX, RDI, RSI, R8, R9, R10, R11} | ABI_ALL_FPRS) -#endif // WIN32 - -#define ABI_ALL_CALLEE_SAVED (~ABI_ALL_CALLER_SAVED) - -#define ABI_RETURN RAX |