mirror of
https://git.suyu.dev/suyu/dynarmic.git
synced 2026-03-12 19:46:28 +00:00
callbacks: Factorize memory callbacks into inner structure
This commit is contained in:
@@ -127,16 +127,16 @@ static Dynarmic::UserCallbacks GetUserCallbacks() {
|
||||
Dynarmic::UserCallbacks user_callbacks{};
|
||||
user_callbacks.InterpreterFallback = &InterpreterFallback;
|
||||
user_callbacks.CallSVC = (void (*)(u32)) &Fail;
|
||||
user_callbacks.IsReadOnlyMemory = &IsReadOnlyMemory;
|
||||
user_callbacks.MemoryRead8 = &MemoryRead8;
|
||||
user_callbacks.MemoryRead16 = &MemoryRead16;
|
||||
user_callbacks.MemoryRead32 = &MemoryRead32;
|
||||
user_callbacks.MemoryRead64 = &MemoryRead64;
|
||||
user_callbacks.MemoryReadCode = &MemoryReadCode;
|
||||
user_callbacks.MemoryWrite8 = &MemoryWrite8;
|
||||
user_callbacks.MemoryWrite16 = &MemoryWrite16;
|
||||
user_callbacks.MemoryWrite32 = &MemoryWrite32;
|
||||
user_callbacks.MemoryWrite64 = &MemoryWrite64;
|
||||
user_callbacks.memory.IsReadOnlyMemory = &IsReadOnlyMemory;
|
||||
user_callbacks.memory.Read8 = &MemoryRead8;
|
||||
user_callbacks.memory.Read16 = &MemoryRead16;
|
||||
user_callbacks.memory.Read32 = &MemoryRead32;
|
||||
user_callbacks.memory.Read64 = &MemoryRead64;
|
||||
user_callbacks.memory.ReadCode = &MemoryReadCode;
|
||||
user_callbacks.memory.Write8 = &MemoryWrite8;
|
||||
user_callbacks.memory.Write16 = &MemoryWrite16;
|
||||
user_callbacks.memory.Write32 = &MemoryWrite32;
|
||||
user_callbacks.memory.Write64 = &MemoryWrite64;
|
||||
return user_callbacks;
|
||||
}
|
||||
|
||||
|
||||
@@ -118,16 +118,16 @@ static Dynarmic::UserCallbacks GetUserCallbacks() {
|
||||
Dynarmic::UserCallbacks user_callbacks{};
|
||||
user_callbacks.InterpreterFallback = &InterpreterFallback;
|
||||
user_callbacks.CallSVC = (void (*)(u32)) &Fail;
|
||||
user_callbacks.IsReadOnlyMemory = &IsReadOnlyMemory;
|
||||
user_callbacks.MemoryRead8 = &MemoryRead8;
|
||||
user_callbacks.MemoryRead16 = &MemoryRead16;
|
||||
user_callbacks.MemoryRead32 = &MemoryRead32;
|
||||
user_callbacks.MemoryRead64 = &MemoryRead64;
|
||||
user_callbacks.MemoryReadCode = &MemoryReadCode;
|
||||
user_callbacks.MemoryWrite8 = &MemoryWrite8;
|
||||
user_callbacks.MemoryWrite16 = &MemoryWrite16;
|
||||
user_callbacks.MemoryWrite32 = &MemoryWrite32;
|
||||
user_callbacks.MemoryWrite64 = &MemoryWrite64;
|
||||
user_callbacks.memory.IsReadOnlyMemory = &IsReadOnlyMemory;
|
||||
user_callbacks.memory.Read8 = &MemoryRead8;
|
||||
user_callbacks.memory.Read16 = &MemoryRead16;
|
||||
user_callbacks.memory.Read32 = &MemoryRead32;
|
||||
user_callbacks.memory.Read64 = &MemoryRead64;
|
||||
user_callbacks.memory.ReadCode = &MemoryReadCode;
|
||||
user_callbacks.memory.Write8 = &MemoryWrite8;
|
||||
user_callbacks.memory.Write16 = &MemoryWrite16;
|
||||
user_callbacks.memory.Write32 = &MemoryWrite32;
|
||||
user_callbacks.memory.Write64 = &MemoryWrite64;
|
||||
return user_callbacks;
|
||||
}
|
||||
|
||||
|
||||
@@ -48,8 +48,8 @@ static void InterpreterFallback(u32 pc, Dynarmic::Jit* jit, void*) {
|
||||
|
||||
static Dynarmic::UserCallbacks GetUserCallbacks() {
|
||||
Dynarmic::UserCallbacks user_callbacks{};
|
||||
user_callbacks.MemoryRead32 = &MemoryRead32;
|
||||
user_callbacks.MemoryReadCode = &MemoryReadCode;
|
||||
user_callbacks.memory.Read32 = &MemoryRead32;
|
||||
user_callbacks.memory.ReadCode = &MemoryReadCode;
|
||||
user_callbacks.InterpreterFallback = &InterpreterFallback;
|
||||
return user_callbacks;
|
||||
}
|
||||
|
||||
@@ -803,7 +803,7 @@ enum {
|
||||
|
||||
static unsigned int InterpreterTranslateInstruction(const ARMul_State* cpu, const u32 phys_addr, ARM_INST_PTR& inst_base) {
|
||||
unsigned int inst_size = 4;
|
||||
unsigned int inst = (*cpu->user_callbacks.MemoryReadCode)(phys_addr & 0xFFFFFFFC);
|
||||
unsigned int inst = (*cpu->user_callbacks.memory.ReadCode)(phys_addr & 0xFFFFFFFC);
|
||||
|
||||
// If we are in Thumb mode, we'll translate one Thumb instruction to the corresponding ARM instruction
|
||||
if (cpu->TFlag) {
|
||||
|
||||
@@ -204,14 +204,14 @@ u8 ARMul_State::ReadMemory8(u32 address) const
|
||||
{
|
||||
// CheckMemoryBreakpoint(address, GDBStub::BreakpointType::Read);
|
||||
|
||||
return (*user_callbacks.MemoryRead8)(address);
|
||||
return (*user_callbacks.memory.Read8)(address);
|
||||
}
|
||||
|
||||
u16 ARMul_State::ReadMemory16(u32 address) const
|
||||
{
|
||||
// CheckMemoryBreakpoint(address, GDBStub::BreakpointType::Read);
|
||||
|
||||
u16 data = (*user_callbacks.MemoryRead16)(address);
|
||||
u16 data = (*user_callbacks.memory.Read16)(address);
|
||||
|
||||
if (InBigEndianMode())
|
||||
data = Common::swap16(data);
|
||||
@@ -223,7 +223,7 @@ u32 ARMul_State::ReadMemory32(u32 address) const
|
||||
{
|
||||
// CheckMemoryBreakpoint(address, GDBStub::BreakpointType::Read);
|
||||
|
||||
u32 data = (*user_callbacks.MemoryRead32)(address);
|
||||
u32 data = (*user_callbacks.memory.Read32)(address);
|
||||
|
||||
if (InBigEndianMode())
|
||||
data = Common::swap32(data);
|
||||
@@ -235,7 +235,7 @@ u64 ARMul_State::ReadMemory64(u32 address) const
|
||||
{
|
||||
// CheckMemoryBreakpoint(address, GDBStub::BreakpointType::Read);
|
||||
|
||||
u64 data = (*user_callbacks.MemoryRead64)(address);
|
||||
u64 data = (*user_callbacks.memory.Read64)(address);
|
||||
|
||||
if (InBigEndianMode())
|
||||
data = Common::swap64(data);
|
||||
@@ -247,7 +247,7 @@ void ARMul_State::WriteMemory8(u32 address, u8 data)
|
||||
{
|
||||
// CheckMemoryBreakpoint(address, GDBStub::BreakpointType::Write);
|
||||
|
||||
(*user_callbacks.MemoryWrite8)(address, data);
|
||||
(*user_callbacks.memory.Write8)(address, data);
|
||||
}
|
||||
|
||||
void ARMul_State::WriteMemory16(u32 address, u16 data)
|
||||
@@ -257,7 +257,7 @@ void ARMul_State::WriteMemory16(u32 address, u16 data)
|
||||
if (InBigEndianMode())
|
||||
data = Common::swap16(data);
|
||||
|
||||
(*user_callbacks.MemoryWrite16)(address, data);
|
||||
(*user_callbacks.memory.Write16)(address, data);
|
||||
}
|
||||
|
||||
void ARMul_State::WriteMemory32(u32 address, u32 data)
|
||||
@@ -267,7 +267,7 @@ void ARMul_State::WriteMemory32(u32 address, u32 data)
|
||||
if (InBigEndianMode())
|
||||
data = Common::swap32(data);
|
||||
|
||||
(*user_callbacks.MemoryWrite32)(address, data);
|
||||
(*user_callbacks.memory.Write32)(address, data);
|
||||
}
|
||||
|
||||
void ARMul_State::WriteMemory64(u32 address, u64 data)
|
||||
@@ -277,7 +277,7 @@ void ARMul_State::WriteMemory64(u32 address, u64 data)
|
||||
if (InBigEndianMode())
|
||||
data = Common::swap64(data);
|
||||
|
||||
(*user_callbacks.MemoryWrite64)(address, data);
|
||||
(*user_callbacks.memory.Write64)(address, data);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user