|
|
|
@ -86,7 +86,16 @@ public:
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void AddTicks(u64 ticks) override {
|
|
|
|
|
CoreTiming::AddTicks(ticks - num_interpreted_instructions);
|
|
|
|
|
// Divide the number of ticks by the amount of CPU cores. TODO(Subv): This yields only a
|
|
|
|
|
// rough approximation of the amount of executed ticks in the system, it may be thrown off
|
|
|
|
|
// if not all cores are doing a similar amount of work. Instead of doing this, we should
|
|
|
|
|
// device a way so that timing is consistent across all cores without increasing the ticks 4
|
|
|
|
|
// times.
|
|
|
|
|
u64 amortized_ticks = (ticks - num_interpreted_instructions) / Core::NUM_CPU_CORES;
|
|
|
|
|
// Always execute at least one tick.
|
|
|
|
|
amortized_ticks = std::max<u64>(amortized_ticks, 1);
|
|
|
|
|
|
|
|
|
|
CoreTiming::AddTicks(amortized_ticks);
|
|
|
|
|
num_interpreted_instructions = 0;
|
|
|
|
|
}
|
|
|
|
|
u64 GetTicksRemaining() override {
|
|
|
|
|