mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 05:40:04 +00:00 
			
		
		
		
	Merge pull request #4276 from MerryMage/jit_breakpoints
arm_dynarmic: Pass breakpoints to gdbstub
This commit is contained in:
		
						commit
						9f972b9f5c
					
				
					 2 changed files with 18 additions and 1 deletions
				
			
		
							
								
								
									
										2
									
								
								externals/dynarmic
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								externals/dynarmic
									
										
									
									
										vendored
									
									
								
							|  | @ -1 +1 @@ | ||||||
| Subproject commit 68ca03e8d4822c78e15315e67ddbb1d6bf4d3827 | Subproject commit 4e6848d1c9e8dadc70595c15b5589f8b14aad478 | ||||||
|  | @ -12,6 +12,7 @@ | ||||||
| #include "core/arm/dyncom/arm_dyncom_interpreter.h" | #include "core/arm/dyncom/arm_dyncom_interpreter.h" | ||||||
| #include "core/core.h" | #include "core/core.h" | ||||||
| #include "core/core_timing.h" | #include "core/core_timing.h" | ||||||
|  | #include "core/gdbstub/gdbstub.h" | ||||||
| #include "core/hle/kernel/svc.h" | #include "core/hle/kernel/svc.h" | ||||||
| #include "core/memory.h" | #include "core/memory.h" | ||||||
| 
 | 
 | ||||||
|  | @ -125,6 +126,22 @@ public: | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     void ExceptionRaised(VAddr pc, Dynarmic::A32::Exception exception) override { |     void ExceptionRaised(VAddr pc, Dynarmic::A32::Exception exception) override { | ||||||
|  |         switch (exception) { | ||||||
|  |         case Dynarmic::A32::Exception::UndefinedInstruction: | ||||||
|  |         case Dynarmic::A32::Exception::UnpredictableInstruction: | ||||||
|  |             break; | ||||||
|  |         case Dynarmic::A32::Exception::Breakpoint: | ||||||
|  |             if (GDBStub::IsConnected()) { | ||||||
|  |                 parent.jit->HaltExecution(); | ||||||
|  |                 parent.SetPC(pc); | ||||||
|  |                 Kernel::Thread* thread = Kernel::GetCurrentThread(); | ||||||
|  |                 parent.SaveContext(thread->context); | ||||||
|  |                 GDBStub::Break(); | ||||||
|  |                 GDBStub::SendTrap(thread, 5); | ||||||
|  |                 return; | ||||||
|  |             } | ||||||
|  |             break; | ||||||
|  |         } | ||||||
|         ASSERT_MSG(false, "ExceptionRaised(exception = {}, pc = {:08X}, code = {:08X})", |         ASSERT_MSG(false, "ExceptionRaised(exception = {}, pc = {:08X}, code = {:08X})", | ||||||
|                    static_cast<std::size_t>(exception), pc, MemoryReadCode(pc)); |                    static_cast<std::size_t>(exception), pc, MemoryReadCode(pc)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue