From 29d30bf931a9193839a891a01254915e890d64b1 Mon Sep 17 00:00:00 2001 From: MerryMage Date: Tue, 9 Aug 2016 22:45:54 +0100 Subject: [PATCH] Interface: Added Jit::Reset to reset CPU state --- src/backend_x64/interface_x64.cpp | 5 +++++ src/interface/interface.h | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/src/backend_x64/interface_x64.cpp b/src/backend_x64/interface_x64.cpp index 1681d3b3..2edf289c 100644 --- a/src/backend_x64/interface_x64.cpp +++ b/src/backend_x64/interface_x64.cpp @@ -123,6 +123,11 @@ void Jit::ClearCache(bool poison_memory) { impl->emitter.ClearCache(); } +void Jit::Reset() { + ASSERT(!is_executing); + impl->jit_state = {}; +} + void Jit::HaltExecution() { ASSERT(is_executing); halt_requested = true; diff --git a/src/interface/interface.h b/src/interface/interface.h index 9a3bcace..bd592eb7 100644 --- a/src/interface/interface.h +++ b/src/interface/interface.h @@ -57,6 +57,12 @@ public: */ void ClearCache(bool poison_memory = true); + /** + * Reset CPU state to state at startup. Does not clear code cache. + * Cannot be called from a callback. + */ + void Reset(); + /** * Stops execution in Jit::Run. * Can only be called from a callback.