mirror of
https://git.eden-emu.dev/eden-emu/eden.git
synced 2026-09-11 14:24:20 +00:00
@@ -20,6 +20,7 @@
|
|||||||
namespace Dynarmic::A32 {
|
namespace Dynarmic::A32 {
|
||||||
|
|
||||||
using namespace Dynarmic::Backend::PPC64;
|
using namespace Dynarmic::Backend::PPC64;
|
||||||
|
using CodePtr = std::uint32_t*;
|
||||||
|
|
||||||
struct A32AddressSpace final {
|
struct A32AddressSpace final {
|
||||||
explicit A32AddressSpace(const A32::UserConfig& conf)
|
explicit A32AddressSpace(const A32::UserConfig& conf)
|
||||||
@@ -72,8 +73,8 @@ struct A32Core final {
|
|||||||
static HaltReason Run(A32AddressSpace& process, A32JitState& thread_ctx, volatile u32* halt_reason) {
|
static HaltReason Run(A32AddressSpace& process, A32JitState& thread_ctx, volatile u32* halt_reason) {
|
||||||
auto const loc = thread_ctx.GetLocationDescriptor();
|
auto const loc = thread_ctx.GetLocationDescriptor();
|
||||||
auto const entry = process.GetOrEmit(loc);
|
auto const entry = process.GetOrEmit(loc);
|
||||||
using CodeFn = HaltReason (*)(A32AddressSpace*, A32JitState*, volatile u32*);
|
using CodeFn = HaltReason (*)(A32AddressSpace*, A32JitState*, volatile u32*, void*);
|
||||||
return (CodeFn(entry))(&process, &thread_ctx, halt_reason);
|
return (CodeFn(entry))(&process, &thread_ctx, halt_reason, reinterpret_cast<void*>(&A32Core::Run));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
namespace Dynarmic::A64 {
|
namespace Dynarmic::A64 {
|
||||||
|
|
||||||
using namespace Dynarmic::Backend::PPC64;
|
using namespace Dynarmic::Backend::PPC64;
|
||||||
|
using CodePtr = std::uint32_t*;
|
||||||
|
|
||||||
struct A64AddressSpace final {
|
struct A64AddressSpace final {
|
||||||
explicit A64AddressSpace(const A64::UserConfig& conf)
|
explicit A64AddressSpace(const A64::UserConfig& conf)
|
||||||
@@ -74,8 +75,8 @@ struct A64Core final {
|
|||||||
static HaltReason Run(A64AddressSpace& process, A64JitState& thread_ctx, volatile u32* halt_reason) {
|
static HaltReason Run(A64AddressSpace& process, A64JitState& thread_ctx, volatile u32* halt_reason) {
|
||||||
const auto loc = thread_ctx.GetLocationDescriptor();
|
const auto loc = thread_ctx.GetLocationDescriptor();
|
||||||
const auto entry = process.GetOrEmit(loc);
|
const auto entry = process.GetOrEmit(loc);
|
||||||
using CodeFn = HaltReason (*)(A64AddressSpace*, A64JitState*, volatile u32*);
|
using CodeFn = HaltReason (*)(A64AddressSpace*, A64JitState*, volatile u32*, void*);
|
||||||
return (CodeFn(entry))(&process, &thread_ctx, halt_reason);
|
return (CodeFn(entry))(&process, &thread_ctx, halt_reason, reinterpret_cast<void*>(&A64Core::Run));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -8,10 +8,11 @@
|
|||||||
|
|
||||||
namespace Dynarmic::Backend::PPC64 {
|
namespace Dynarmic::Backend::PPC64 {
|
||||||
|
|
||||||
// Jit fn signature => (AXXAddressSpace& process, AXXJitState& thread_ctx, volatile u32* halt_reason)
|
// Jit fn signature => (AXXAddressSpace& process, AXXJitState& thread_ctx, volatile u32* halt_reason, void* link_fn)
|
||||||
constexpr powah::GPR RPROCESS = powah::R3;
|
constexpr powah::GPR RPROCESS = powah::R3;
|
||||||
constexpr powah::GPR RJIT = powah::R4;
|
constexpr powah::GPR RJIT = powah::R4;
|
||||||
constexpr powah::GPR RHALTREASON = powah::R5;
|
constexpr powah::GPR RHALTREASON = powah::R5;
|
||||||
|
constexpr powah::GPR RLINKFN = powah::R6;
|
||||||
constexpr powah::GPR RNZCV = powah::R31;
|
constexpr powah::GPR RNZCV = powah::R31;
|
||||||
|
|
||||||
constexpr powah::GPR ABI_PARAM1 = powah::R3;
|
constexpr powah::GPR ABI_PARAM1 = powah::R3;
|
||||||
|
|||||||
Reference in New Issue
Block a user