abi: Consolodate ABI information into one place
This commit is contained in:
parent
f5263cc196
commit
08ed8b4a11
3 changed files with 27 additions and 17 deletions
|
@ -6,6 +6,7 @@
|
||||||
|
|
||||||
#include <array>
|
#include <array>
|
||||||
|
|
||||||
|
#include "common/common_types.h"
|
||||||
#include "backend/x64/hostloc.h"
|
#include "backend/x64/hostloc.h"
|
||||||
|
|
||||||
namespace Dynarmic::Backend::X64 {
|
namespace Dynarmic::Backend::X64 {
|
||||||
|
@ -16,6 +17,8 @@ class BlockOfCode;
|
||||||
|
|
||||||
constexpr HostLoc ABI_RETURN = HostLoc::RAX;
|
constexpr HostLoc ABI_RETURN = HostLoc::RAX;
|
||||||
|
|
||||||
|
constexpr size_t ABI_PARAM_COUNT = 4;
|
||||||
|
|
||||||
constexpr HostLoc ABI_PARAM1 = HostLoc::RCX;
|
constexpr HostLoc ABI_PARAM1 = HostLoc::RCX;
|
||||||
constexpr HostLoc ABI_PARAM2 = HostLoc::RDX;
|
constexpr HostLoc ABI_PARAM2 = HostLoc::RDX;
|
||||||
constexpr HostLoc ABI_PARAM3 = HostLoc::R8;
|
constexpr HostLoc ABI_PARAM3 = HostLoc::R8;
|
||||||
|
@ -63,11 +66,16 @@ constexpr size_t ABI_SHADOW_SPACE = 32; // bytes
|
||||||
#else
|
#else
|
||||||
|
|
||||||
constexpr HostLoc ABI_RETURN = HostLoc::RAX;
|
constexpr HostLoc ABI_RETURN = HostLoc::RAX;
|
||||||
|
constexpr HostLoc ABI_RETURN2 = HostLoc::RDX;
|
||||||
|
|
||||||
|
constexpr size_t ABI_PARAM_COUNT = 6;
|
||||||
|
|
||||||
constexpr HostLoc ABI_PARAM1 = HostLoc::RDI;
|
constexpr HostLoc ABI_PARAM1 = HostLoc::RDI;
|
||||||
constexpr HostLoc ABI_PARAM2 = HostLoc::RSI;
|
constexpr HostLoc ABI_PARAM2 = HostLoc::RSI;
|
||||||
constexpr HostLoc ABI_PARAM3 = HostLoc::RDX;
|
constexpr HostLoc ABI_PARAM3 = HostLoc::RDX;
|
||||||
constexpr HostLoc ABI_PARAM4 = HostLoc::RCX;
|
constexpr HostLoc ABI_PARAM4 = HostLoc::RCX;
|
||||||
|
constexpr HostLoc ABI_PARAM5 = HostLoc::R8;
|
||||||
|
constexpr HostLoc ABI_PARAM6 = HostLoc::R9;
|
||||||
|
|
||||||
constexpr std::array<HostLoc, 25> ABI_ALL_CALLER_SAVE = {
|
constexpr std::array<HostLoc, 25> ABI_ALL_CALLER_SAVE = {
|
||||||
HostLoc::RAX,
|
HostLoc::RAX,
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
#include "backend/x64/a32_jitstate.h"
|
#include "backend/x64/a32_jitstate.h"
|
||||||
#include "backend/x64/abi.h"
|
#include "backend/x64/abi.h"
|
||||||
#include "backend/x64/block_of_code.h"
|
#include "backend/x64/block_of_code.h"
|
||||||
|
#include "backend/x64/hostloc.h"
|
||||||
#include "backend/x64/perf_map.h"
|
#include "backend/x64/perf_map.h"
|
||||||
#include "common/assert.h"
|
#include "common/assert.h"
|
||||||
#include "common/bit_util.h"
|
#include "common/bit_util.h"
|
||||||
|
@ -24,22 +25,22 @@
|
||||||
namespace Dynarmic::Backend::X64 {
|
namespace Dynarmic::Backend::X64 {
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
const Xbyak::Reg64 BlockOfCode::ABI_RETURN = Xbyak::util::rax;
|
const Xbyak::Reg64 BlockOfCode::ABI_RETURN = HostLocToReg64(Dynarmic::Backend::X64::ABI_RETURN);
|
||||||
const Xbyak::Reg64 BlockOfCode::ABI_PARAM1 = Xbyak::util::rcx;
|
const Xbyak::Reg64 BlockOfCode::ABI_PARAM1 = HostLocToReg64(Dynarmic::Backend::X64::ABI_PARAM1);
|
||||||
const Xbyak::Reg64 BlockOfCode::ABI_PARAM2 = Xbyak::util::rdx;
|
const Xbyak::Reg64 BlockOfCode::ABI_PARAM2 = HostLocToReg64(Dynarmic::Backend::X64::ABI_PARAM2);
|
||||||
const Xbyak::Reg64 BlockOfCode::ABI_PARAM3 = Xbyak::util::r8;
|
const Xbyak::Reg64 BlockOfCode::ABI_PARAM3 = HostLocToReg64(Dynarmic::Backend::X64::ABI_PARAM3);
|
||||||
const Xbyak::Reg64 BlockOfCode::ABI_PARAM4 = Xbyak::util::r9;
|
const Xbyak::Reg64 BlockOfCode::ABI_PARAM4 = HostLocToReg64(Dynarmic::Backend::X64::ABI_PARAM4);
|
||||||
const std::array<Xbyak::Reg64, 4> BlockOfCode::ABI_PARAMS = {BlockOfCode::ABI_PARAM1, BlockOfCode::ABI_PARAM2, BlockOfCode::ABI_PARAM3, BlockOfCode::ABI_PARAM4};
|
const std::array<Xbyak::Reg64, ABI_PARAM_COUNT> BlockOfCode::ABI_PARAMS = {BlockOfCode::ABI_PARAM1, BlockOfCode::ABI_PARAM2, BlockOfCode::ABI_PARAM3, BlockOfCode::ABI_PARAM4};
|
||||||
#else
|
#else
|
||||||
const Xbyak::Reg64 BlockOfCode::ABI_RETURN = Xbyak::util::rax;
|
const Xbyak::Reg64 BlockOfCode::ABI_RETURN = HostLocToReg64(Dynarmic::Backend::X64::ABI_RETURN);
|
||||||
const Xbyak::Reg64 BlockOfCode::ABI_RETURN2 = Xbyak::util::rdx;
|
const Xbyak::Reg64 BlockOfCode::ABI_RETURN2 = HostLocToReg64(Dynarmic::Backend::X64::ABI_RETURN2);
|
||||||
const Xbyak::Reg64 BlockOfCode::ABI_PARAM1 = Xbyak::util::rdi;
|
const Xbyak::Reg64 BlockOfCode::ABI_PARAM1 = HostLocToReg64(Dynarmic::Backend::X64::ABI_PARAM1);
|
||||||
const Xbyak::Reg64 BlockOfCode::ABI_PARAM2 = Xbyak::util::rsi;
|
const Xbyak::Reg64 BlockOfCode::ABI_PARAM2 = HostLocToReg64(Dynarmic::Backend::X64::ABI_PARAM2);
|
||||||
const Xbyak::Reg64 BlockOfCode::ABI_PARAM3 = Xbyak::util::rdx;
|
const Xbyak::Reg64 BlockOfCode::ABI_PARAM3 = HostLocToReg64(Dynarmic::Backend::X64::ABI_PARAM3);
|
||||||
const Xbyak::Reg64 BlockOfCode::ABI_PARAM4 = Xbyak::util::rcx;
|
const Xbyak::Reg64 BlockOfCode::ABI_PARAM4 = HostLocToReg64(Dynarmic::Backend::X64::ABI_PARAM4);
|
||||||
const Xbyak::Reg64 BlockOfCode::ABI_PARAM5 = Xbyak::util::r8;
|
const Xbyak::Reg64 BlockOfCode::ABI_PARAM5 = HostLocToReg64(Dynarmic::Backend::X64::ABI_PARAM5);
|
||||||
const Xbyak::Reg64 BlockOfCode::ABI_PARAM6 = Xbyak::util::r9;
|
const Xbyak::Reg64 BlockOfCode::ABI_PARAM6 = HostLocToReg64(Dynarmic::Backend::X64::ABI_PARAM6);
|
||||||
const std::array<Xbyak::Reg64, 6> BlockOfCode::ABI_PARAMS = {BlockOfCode::ABI_PARAM1, BlockOfCode::ABI_PARAM2, BlockOfCode::ABI_PARAM3, BlockOfCode::ABI_PARAM4, BlockOfCode::ABI_PARAM5, BlockOfCode::ABI_PARAM6};
|
const std::array<Xbyak::Reg64, ABI_PARAM_COUNT> BlockOfCode::ABI_PARAMS = {BlockOfCode::ABI_PARAM1, BlockOfCode::ABI_PARAM2, BlockOfCode::ABI_PARAM3, BlockOfCode::ABI_PARAM4, BlockOfCode::ABI_PARAM5, BlockOfCode::ABI_PARAM6};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
#include <xbyak.h>
|
#include <xbyak.h>
|
||||||
#include <xbyak_util.h>
|
#include <xbyak_util.h>
|
||||||
|
|
||||||
|
#include "backend/x64/abi.h"
|
||||||
#include "backend/x64/callback.h"
|
#include "backend/x64/callback.h"
|
||||||
#include "backend/x64/constant_pool.h"
|
#include "backend/x64/constant_pool.h"
|
||||||
#include "backend/x64/jitstate_info.h"
|
#include "backend/x64/jitstate_info.h"
|
||||||
|
@ -129,7 +130,7 @@ public:
|
||||||
static const Xbyak::Reg64 ABI_PARAM2;
|
static const Xbyak::Reg64 ABI_PARAM2;
|
||||||
static const Xbyak::Reg64 ABI_PARAM3;
|
static const Xbyak::Reg64 ABI_PARAM3;
|
||||||
static const Xbyak::Reg64 ABI_PARAM4;
|
static const Xbyak::Reg64 ABI_PARAM4;
|
||||||
static const std::array<Xbyak::Reg64, 4> ABI_PARAMS;
|
static const std::array<Xbyak::Reg64, ABI_PARAM_COUNT> ABI_PARAMS;
|
||||||
#else
|
#else
|
||||||
static const Xbyak::Reg64 ABI_RETURN;
|
static const Xbyak::Reg64 ABI_RETURN;
|
||||||
static const Xbyak::Reg64 ABI_RETURN2;
|
static const Xbyak::Reg64 ABI_RETURN2;
|
||||||
|
@ -139,7 +140,7 @@ public:
|
||||||
static const Xbyak::Reg64 ABI_PARAM4;
|
static const Xbyak::Reg64 ABI_PARAM4;
|
||||||
static const Xbyak::Reg64 ABI_PARAM5;
|
static const Xbyak::Reg64 ABI_PARAM5;
|
||||||
static const Xbyak::Reg64 ABI_PARAM6;
|
static const Xbyak::Reg64 ABI_PARAM6;
|
||||||
static const std::array<Xbyak::Reg64, 6> ABI_PARAMS;
|
static const std::array<Xbyak::Reg64, ABI_PARAM_COUNT> ABI_PARAMS;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
JitStateInfo GetJitStateInfo() const { return jsi; }
|
JitStateInfo GetJitStateInfo() const { return jsi; }
|
||||||
|
|
Loading…
Reference in a new issue