A64: Implement Exceptional Exit.
This commit is contained in:
parent
41521ed856
commit
d7abae1e31
2 changed files with 19 additions and 0 deletions
|
@ -60,6 +60,12 @@ public:
|
|||
*/
|
||||
void HaltExecution();
|
||||
|
||||
/**
|
||||
* Exits execution from a callback, the callback must rewind the stack or
|
||||
* never return to dynarmic from it's current stack.
|
||||
*/
|
||||
void ExceptionalExit();
|
||||
|
||||
/// Read Stack Pointer
|
||||
std::uint64_t GetSP() const;
|
||||
/// Modify Stack Pointer
|
||||
|
|
|
@ -83,6 +83,15 @@ public:
|
|||
PerformRequestedCacheInvalidation();
|
||||
}
|
||||
|
||||
void ExceptionalExit() {
|
||||
if (!conf.wall_clock_cntpct) {
|
||||
const s64 ticks = jit_state.cycles_to_run - jit_state.cycles_remaining;
|
||||
conf.callbacks->AddTicks(ticks);
|
||||
}
|
||||
PerformRequestedCacheInvalidation();
|
||||
is_executing = false;
|
||||
}
|
||||
|
||||
void ClearCache() {
|
||||
invalidate_entire_cache = true;
|
||||
RequestCacheInvalidation();
|
||||
|
@ -313,6 +322,10 @@ void Jit::HaltExecution() {
|
|||
impl->HaltExecution();
|
||||
}
|
||||
|
||||
void Jit::ExceptionalExit() {
|
||||
impl->ExceptionalExit();
|
||||
}
|
||||
|
||||
u64 Jit::GetSP() const {
|
||||
return impl->GetSP();
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue