A32: Add yuzu-specific hacks

This commit is contained in:
MerryMage
2020-06-16 16:38:43 +01:00
parent 2c1a4843ad
commit a1c9bb94a8
7 changed files with 57 additions and 14 deletions

View File

@@ -59,6 +59,16 @@ public:
*/
void HaltExecution();
/**
* HACK:
* Exits execution from a callback, the callback must rewind the stack or
* never return to dynarmic from it's current stack.
*/
void ExceptionalExit();
/// HACK: Change processor ID.
void ChangeProcessorID(std::size_t new_processor);
/// View and modify registers.
std::array<std::uint32_t, 16>& Regs();
const std::array<std::uint32_t, 16>& Regs() const;

View File

@@ -139,6 +139,11 @@ struct UserConfig {
/// definite behaviour for some unpredictable instructions.
bool define_unpredictable_behaviour = false;
/// HACK:
/// This tells the translator a wall clock will be used, thus allowing it
/// to avoid writting certain unnecessary code only needed for cycle timers.
bool wall_clock_cntpct = false;
/// This enables the fast dispatcher.
bool enable_fast_dispatch = true;

View File

@@ -61,11 +61,15 @@ public:
void HaltExecution();
/**
* HACK:
* Exits execution from a callback, the callback must rewind the stack or
* never return to dynarmic from it's current stack.
*/
void ExceptionalExit();
/// HACK: Change processor ID.
void ChangeProcessorID(std::size_t new_processor);
/// Read Stack Pointer
std::uint64_t GetSP() const;
/// Modify Stack Pointer
@@ -111,8 +115,6 @@ public:
/// Modify PSTATE
void SetPstate(std::uint32_t value);
void ChangeProcessorID(std::size_t new_processor);
/// Clears exclusive state for this core.
void ClearExclusiveState();

View File

@@ -194,12 +194,12 @@ struct UserConfig {
/// page boundary.
bool only_detect_misalignment_via_page_table_on_page_boundary = false;
/// This option relates to translation. Generally when we run into an unpredictable
/// instruction the ExceptionRaised callback is called. If this is true, we define
/// definite behaviour for some unpredictable instructions.
bool define_unpredictable_behaviour = false;
/// HACK:
/// This tells the translator a wall clock will be used, thus allowing it
/// to avoid writting certain unnecessary code only needed for cycle timers.
bool wall_clock_cntpct = false;