diff options
Diffstat (limited to 'src/core/arm')
| -rw-r--r-- | src/core/arm/dynarmic/arm_dynarmic_cp15.cpp | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/src/core/arm/dynarmic/arm_dynarmic_cp15.cpp b/src/core/arm/dynarmic/arm_dynarmic_cp15.cpp index caefc09f4..ebd506121 100644 --- a/src/core/arm/dynarmic/arm_dynarmic_cp15.cpp +++ b/src/core/arm/dynarmic/arm_dynarmic_cp15.cpp | |||
| @@ -94,12 +94,11 @@ CallbackOrAccessOneWord DynarmicCP15::CompileGetOneWord(bool two, unsigned opc1, | |||
| 94 | CallbackOrAccessTwoWords DynarmicCP15::CompileGetTwoWords(bool two, unsigned opc, CoprocReg CRm) { | 94 | CallbackOrAccessTwoWords DynarmicCP15::CompileGetTwoWords(bool two, unsigned opc, CoprocReg CRm) { |
| 95 | if (!two && opc == 0 && CRm == CoprocReg::C14) { | 95 | if (!two && opc == 0 && CRm == CoprocReg::C14) { |
| 96 | // CNTPCT | 96 | // CNTPCT |
| 97 | const auto callback = static_cast<u64 (*)(Dynarmic::A32::Jit*, void*, u32, u32)>( | 97 | const auto callback = [](Dynarmic::A32::Jit*, void* arg, u32, u32) -> u64 { |
| 98 | [](Dynarmic::A32::Jit*, void* arg, u32, u32) -> u64 { | 98 | const auto& parent_arg = *static_cast<ARM_Dynarmic_32*>(arg); |
| 99 | ARM_Dynarmic_32& parent = *(ARM_Dynarmic_32*)arg; | 99 | return parent_arg.system.CoreTiming().GetClockTicks(); |
| 100 | return parent.system.CoreTiming().GetClockTicks(); | 100 | }; |
| 101 | }); | 101 | return Callback{callback, &parent}; |
| 102 | return Dynarmic::A32::Coprocessor::Callback{callback, (void*)&parent}; | ||
| 103 | } | 102 | } |
| 104 | 103 | ||
| 105 | LOG_CRITICAL(Core_ARM, "CP15: mrrc{} p15, {}, <Rt>, <Rt2>, {}", two ? "2" : "", opc, CRm); | 104 | LOG_CRITICAL(Core_ARM, "CP15: mrrc{} p15, {}, <Rt>, <Rt2>, {}", two ? "2" : "", opc, CRm); |