mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-30 21:30:04 +00:00 
			
		
		
		
	hle: added a hokey way to force a thread reschedule during CPU single step mode (as used by the debugger)
This commit is contained in:
		
							parent
							
								
									6cdad8390c
								
							
						
					
					
						commit
						174cc9a0ed
					
				
					 3 changed files with 7 additions and 1 deletions
				
			
		|  | @ -13,6 +13,7 @@ | |||
| #include "core/arm/disassembler/arm_disasm.h" | ||||
| #include "core/arm/interpreter/arm_interpreter.h" | ||||
| 
 | ||||
| #include "core/hle/hle.h" | ||||
| #include "core/hle/kernel/thread.h" | ||||
| 
 | ||||
| namespace Core { | ||||
|  | @ -36,7 +37,7 @@ void SingleStep() { | |||
| 
 | ||||
|     g_app_core->Step(); | ||||
|      | ||||
|     if (ticks >= LCD::kFrameTicks / 2) { | ||||
|     if ((ticks >= LCD::kFrameTicks / 2) || HLE::g_reschedule) { | ||||
|         HW::Update(); | ||||
|         Kernel::Reschedule(); | ||||
|         ticks = 0; | ||||
|  |  | |||
|  | @ -16,6 +16,8 @@ namespace HLE { | |||
| 
 | ||||
| static std::vector<ModuleDef> g_module_db; | ||||
| 
 | ||||
| bool g_reschedule = false;  ///< If true, immediately reschedules the CPU to a new thread
 | ||||
| 
 | ||||
| const FunctionDef* GetSVCInfo(u32 opcode) { | ||||
|     u32 func_num = opcode & 0xFFFFFF; // 8 bits
 | ||||
|     if (func_num > 0xFF) { | ||||
|  | @ -47,6 +49,7 @@ void Reschedule(const char *reason) { | |||
|     _dbg_assert_msg_(HLE, reason != 0 && strlen(reason) < 256, "Reschedule: Invalid or too long reason."); | ||||
| #endif | ||||
|     Core::g_app_core->PrepareReschedule(); | ||||
|     g_reschedule = true; | ||||
| } | ||||
| 
 | ||||
| void RegisterModule(std::string name, int num_functions, const FunctionDef* func_table) { | ||||
|  |  | |||
|  | @ -16,6 +16,8 @@ | |||
| 
 | ||||
| namespace HLE { | ||||
| 
 | ||||
| extern bool g_reschedule;   ///< If true, immediately reschedules the CPU to a new thread
 | ||||
| 
 | ||||
| typedef u32 Addr; | ||||
| typedef void (*Func)(); | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue