mirror of
				https://git.suyu.dev/suyu/suyu.git
				synced 2025-10-31 06:46:40 +08:00 
			
		
		
		
	Merge pull request #8240 from liamwhite/count-cycles
core/arm: re-enable cycle counting
This commit is contained in:
		
						commit
						30515b3b27
					
				| @ -125,7 +125,9 @@ public: | ||||
|     } | ||||
| 
 | ||||
|     void AddTicks(u64 ticks) override { | ||||
|         ASSERT_MSG(!parent.uses_wall_clock, "This should never happen - dynarmic ticking disabled"); | ||||
|         if (parent.uses_wall_clock) { | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         // 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
 | ||||
| @ -142,7 +144,12 @@ public: | ||||
|     } | ||||
| 
 | ||||
|     u64 GetTicksRemaining() override { | ||||
|         ASSERT_MSG(!parent.uses_wall_clock, "This should never happen - dynarmic ticking disabled"); | ||||
|         if (parent.uses_wall_clock) { | ||||
|             if (!parent.interrupt_handlers[parent.core_index].IsInterrupted()) { | ||||
|                 return minimum_run_cycles; | ||||
|             } | ||||
|             return 0U; | ||||
|         } | ||||
| 
 | ||||
|         return std::max<s64>(parent.system.CoreTiming().GetDowncount(), 0); | ||||
|     } | ||||
| @ -172,7 +179,7 @@ public: | ||||
|     Core::Memory::Memory& memory; | ||||
|     std::size_t num_interpreted_instructions{}; | ||||
|     bool debugger_enabled{}; | ||||
|     static constexpr u64 minimum_run_cycles = 1000U; | ||||
|     static constexpr u64 minimum_run_cycles = 10000U; | ||||
| }; | ||||
| 
 | ||||
| std::shared_ptr<Dynarmic::A32::Jit> ARM_Dynarmic_32::MakeJit(Common::PageTable* page_table) const { | ||||
| @ -200,7 +207,7 @@ std::shared_ptr<Dynarmic::A32::Jit> ARM_Dynarmic_32::MakeJit(Common::PageTable* | ||||
| 
 | ||||
|     // Timing
 | ||||
|     config.wall_clock_cntpct = uses_wall_clock; | ||||
|     config.enable_cycle_counting = !uses_wall_clock; | ||||
|     config.enable_cycle_counting = true; | ||||
| 
 | ||||
|     // Code cache size
 | ||||
|     config.code_cache_size = 512_MiB; | ||||
|  | ||||
| @ -166,7 +166,9 @@ public: | ||||
|     } | ||||
| 
 | ||||
|     void AddTicks(u64 ticks) override { | ||||
|         ASSERT_MSG(!parent.uses_wall_clock, "This should never happen - dynarmic ticking disabled"); | ||||
|         if (parent.uses_wall_clock) { | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         // 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
 | ||||
| @ -181,7 +183,12 @@ public: | ||||
|     } | ||||
| 
 | ||||
|     u64 GetTicksRemaining() override { | ||||
|         ASSERT_MSG(!parent.uses_wall_clock, "This should never happen - dynarmic ticking disabled"); | ||||
|         if (parent.uses_wall_clock) { | ||||
|             if (!parent.interrupt_handlers[parent.core_index].IsInterrupted()) { | ||||
|                 return minimum_run_cycles; | ||||
|             } | ||||
|             return 0U; | ||||
|         } | ||||
| 
 | ||||
|         return std::max<s64>(parent.system.CoreTiming().GetDowncount(), 0); | ||||
|     } | ||||
| @ -216,7 +223,7 @@ public: | ||||
|     u64 tpidrro_el0 = 0; | ||||
|     u64 tpidr_el0 = 0; | ||||
|     bool debugger_enabled{}; | ||||
|     static constexpr u64 minimum_run_cycles = 1000U; | ||||
|     static constexpr u64 minimum_run_cycles = 10000U; | ||||
| }; | ||||
| 
 | ||||
| std::shared_ptr<Dynarmic::A64::Jit> ARM_Dynarmic_64::MakeJit(Common::PageTable* page_table, | ||||
| @ -260,7 +267,7 @@ std::shared_ptr<Dynarmic::A64::Jit> ARM_Dynarmic_64::MakeJit(Common::PageTable* | ||||
| 
 | ||||
|     // Timing
 | ||||
|     config.wall_clock_cntpct = uses_wall_clock; | ||||
|     config.enable_cycle_counting = !uses_wall_clock; | ||||
|     config.enable_cycle_counting = true; | ||||
| 
 | ||||
|     // Code cache size
 | ||||
|     config.code_cache_size = 512_MiB; | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user