|
|
|
@ -102,7 +102,9 @@ public: |
|
|
|
} |
|
|
|
|
|
|
|
void CallSVC(u32 swi) override { |
|
|
|
Kernel::Svc::Call(parent.system, swi); |
|
|
|
parent.svc_called = true; |
|
|
|
parent.svc_swi = swi; |
|
|
|
parent.jit->HaltExecution(); |
|
|
|
} |
|
|
|
|
|
|
|
void AddTicks(u64 ticks) override { |
|
|
|
@ -227,11 +229,17 @@ std::shared_ptr<Dynarmic::A64::Jit> ARM_Dynarmic_64::MakeJit(Common::PageTable* |
|
|
|
} |
|
|
|
|
|
|
|
void ARM_Dynarmic_64::Run() { |
|
|
|
jit->Run(); |
|
|
|
} |
|
|
|
|
|
|
|
void ARM_Dynarmic_64::ExceptionalExit() { |
|
|
|
jit->ExceptionalExit(); |
|
|
|
while (true) { |
|
|
|
jit->Run(); |
|
|
|
if (!svc_called) { |
|
|
|
break; |
|
|
|
} |
|
|
|
svc_called = false; |
|
|
|
Kernel::Svc::Call(system, svc_swi); |
|
|
|
if (shutdown) { |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void ARM_Dynarmic_64::Step() { |
|
|
|
@ -320,6 +328,7 @@ void ARM_Dynarmic_64::LoadContext(const ThreadContext64& ctx) { |
|
|
|
|
|
|
|
void ARM_Dynarmic_64::PrepareReschedule() { |
|
|
|
jit->HaltExecution(); |
|
|
|
shutdown = true; |
|
|
|
} |
|
|
|
|
|
|
|
void ARM_Dynarmic_64::ClearInstructionCache() { |
|
|
|
|