mirror of
https://git.suyu.dev/suyu/dynarmic.git
synced 2026-02-19 06:49:38 +00:00
A32: Add yuzu-specific hacks
This commit is contained in:
@@ -47,8 +47,12 @@ public:
|
||||
|
||||
void InvalidateCacheRanges(const boost::icl::interval_set<u32>& ranges);
|
||||
|
||||
void ChangeProcessorID(size_t value) {
|
||||
conf.processor_id = value;
|
||||
}
|
||||
|
||||
protected:
|
||||
const A32::UserConfig conf;
|
||||
A32::UserConfig conf;
|
||||
A32::Jit* jit_interface;
|
||||
BlockRangeInformation<u32> block_ranges;
|
||||
|
||||
|
||||
@@ -63,7 +63,7 @@ struct Jit::Impl {
|
||||
BlockOfCode block_of_code;
|
||||
A32EmitX64 emitter;
|
||||
|
||||
const A32::UserConfig conf;
|
||||
A32::UserConfig conf;
|
||||
|
||||
// Requests made during execution to invalidate the cache are queued up here.
|
||||
size_t invalid_cache_generation = 0;
|
||||
@@ -89,6 +89,19 @@ struct Jit::Impl {
|
||||
block_of_code.StepCode(&jit_state, GetCurrentSingleStep());
|
||||
}
|
||||
|
||||
void ExceptionalExit() {
|
||||
if (!conf.wall_clock_cntpct) {
|
||||
const s64 ticks = jit_state.cycles_to_run - jit_state.cycles_remaining;
|
||||
conf.callbacks->AddTicks(ticks);
|
||||
}
|
||||
PerformCacheInvalidation();
|
||||
}
|
||||
|
||||
void ChangeProcessorID(size_t value) {
|
||||
conf.processor_id = value;
|
||||
emitter.ChangeProcessorID(value);
|
||||
}
|
||||
|
||||
std::string Disassemble(const IR::LocationDescriptor& descriptor) {
|
||||
auto block = GetBasicBlock(descriptor);
|
||||
std::string result = fmt::format("address: {}\nsize: {} bytes\n", block.entrypoint, block.size);
|
||||
@@ -218,6 +231,15 @@ void Jit::HaltExecution() {
|
||||
impl->jit_state.halt_requested = true;
|
||||
}
|
||||
|
||||
void Jit::ExceptionalExit() {
|
||||
impl->ExceptionalExit();
|
||||
is_executing = false;
|
||||
}
|
||||
|
||||
void Jit::ChangeProcessorID(size_t new_processor) {
|
||||
impl->ChangeProcessorID(new_processor);
|
||||
}
|
||||
|
||||
std::array<u32, 16>& Jit::Regs() {
|
||||
return impl->jit_state.Reg;
|
||||
}
|
||||
|
||||
@@ -92,6 +92,11 @@ public:
|
||||
is_executing = false;
|
||||
}
|
||||
|
||||
void ChangeProcessorID(size_t value) {
|
||||
conf.processor_id = value;
|
||||
emitter.ChangeProcessorID(value);
|
||||
}
|
||||
|
||||
void ClearCache() {
|
||||
invalidate_entire_cache = true;
|
||||
RequestCacheInvalidation();
|
||||
@@ -194,11 +199,6 @@ public:
|
||||
jit_state.SetPstate(value);
|
||||
}
|
||||
|
||||
void ChangeProcessorID(size_t value) {
|
||||
conf.processor_id = value;
|
||||
emitter.ChangeProcessorID(value);
|
||||
}
|
||||
|
||||
void ClearExclusiveState() {
|
||||
jit_state.exclusive_state = 0;
|
||||
}
|
||||
@@ -326,6 +326,10 @@ void Jit::ExceptionalExit() {
|
||||
impl->ExceptionalExit();
|
||||
}
|
||||
|
||||
void Jit::ChangeProcessorID(size_t new_processor) {
|
||||
impl->ChangeProcessorID(new_processor);
|
||||
}
|
||||
|
||||
u64 Jit::GetSP() const {
|
||||
return impl->GetSP();
|
||||
}
|
||||
@@ -398,10 +402,6 @@ void Jit::SetPstate(u32 value) {
|
||||
impl->SetPstate(value);
|
||||
}
|
||||
|
||||
void Jit::ChangeProcessorID(size_t new_processor) {
|
||||
impl->ChangeProcessorID(new_processor);
|
||||
}
|
||||
|
||||
void Jit::ClearExclusiveState() {
|
||||
impl->ClearExclusiveState();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user