mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 13:50:03 +00:00 
			
		
		
		
	HLE: Move SVC handlers to the Kernel namespace
This commit is contained in:
		
							parent
							
								
									ad71e23f23
								
							
						
					
					
						commit
						21188f5683
					
				
					 5 changed files with 209 additions and 281 deletions
				
			
		|  | @ -54,7 +54,7 @@ static Dynarmic::UserCallbacks GetUserCallbacks( | ||||||
|     Dynarmic::UserCallbacks user_callbacks{}; |     Dynarmic::UserCallbacks user_callbacks{}; | ||||||
|     user_callbacks.InterpreterFallback = &InterpreterFallback; |     user_callbacks.InterpreterFallback = &InterpreterFallback; | ||||||
|     user_callbacks.user_arg = static_cast<void*>(interpreter_state.get()); |     user_callbacks.user_arg = static_cast<void*>(interpreter_state.get()); | ||||||
|     user_callbacks.CallSVC = &SVC::CallSVC; |     user_callbacks.CallSVC = &Kernel::CallSVC; | ||||||
|     user_callbacks.memory.IsReadOnlyMemory = &IsReadOnlyMemory; |     user_callbacks.memory.IsReadOnlyMemory = &IsReadOnlyMemory; | ||||||
|     user_callbacks.memory.ReadCode = &Memory::Read32; |     user_callbacks.memory.ReadCode = &Memory::Read32; | ||||||
|     user_callbacks.memory.Read8 = &Memory::Read8; |     user_callbacks.memory.Read8 = &Memory::Read8; | ||||||
|  |  | ||||||
|  | @ -3863,7 +3863,7 @@ SWI_INST : { | ||||||
|         cpu->NumInstrsToExecute = |         cpu->NumInstrsToExecute = | ||||||
|             num_instrs >= cpu->NumInstrsToExecute ? 0 : cpu->NumInstrsToExecute - num_instrs; |             num_instrs >= cpu->NumInstrsToExecute ? 0 : cpu->NumInstrsToExecute - num_instrs; | ||||||
|         num_instrs = 0; |         num_instrs = 0; | ||||||
|         SVC::CallSVC(inst_cream->num & 0xFFFF); |         Kernel::CallSVC(inst_cream->num & 0xFFFF); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     cpu->Reg[15] += cpu->GetInstructionSize(); |     cpu->Reg[15] += cpu->GetInstructionSize(); | ||||||
|  |  | ||||||
|  | @ -99,10 +99,10 @@ void Wrap() { | ||||||
|     FuncReturn(retval); |     FuncReturn(retval); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| template <ResultCode func(MemoryInfo*, PageInfo*, u32)> | template <ResultCode func(Kernel::MemoryInfo*, Kernel::PageInfo*, u32)> | ||||||
| void Wrap() { | void Wrap() { | ||||||
|     MemoryInfo memory_info = {}; |     Kernel::MemoryInfo memory_info = {}; | ||||||
|     PageInfo page_info = {}; |     Kernel::PageInfo page_info = {}; | ||||||
|     u32 retval = func(&memory_info, &page_info, PARAM(2)).raw; |     u32 retval = func(&memory_info, &page_info, PARAM(2)).raw; | ||||||
|     Core::CPU().SetReg(1, memory_info.base_address); |     Core::CPU().SetReg(1, memory_info.base_address); | ||||||
|     Core::CPU().SetReg(2, memory_info.size); |     Core::CPU().SetReg(2, memory_info.size); | ||||||
|  | @ -112,10 +112,10 @@ void Wrap() { | ||||||
|     FuncReturn(retval); |     FuncReturn(retval); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| template <ResultCode func(MemoryInfo*, PageInfo*, Kernel::Handle, u32)> | template <ResultCode func(Kernel::MemoryInfo*, Kernel::PageInfo*, Kernel::Handle, u32)> | ||||||
| void Wrap() { | void Wrap() { | ||||||
|     MemoryInfo memory_info = {}; |     Kernel::MemoryInfo memory_info = {}; | ||||||
|     PageInfo page_info = {}; |     Kernel::PageInfo page_info = {}; | ||||||
|     u32 retval = func(&memory_info, &page_info, PARAM(2), PARAM(3)).raw; |     u32 retval = func(&memory_info, &page_info, PARAM(2), PARAM(3)).raw; | ||||||
|     Core::CPU().SetReg(1, memory_info.base_address); |     Core::CPU().SetReg(1, memory_info.base_address); | ||||||
|     Core::CPU().SetReg(2, memory_info.size); |     Core::CPU().SetReg(2, memory_info.size); | ||||||
|  |  | ||||||
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							|  | @ -6,8 +6,7 @@ | ||||||
| 
 | 
 | ||||||
| #include "common/common_types.h" | #include "common/common_types.h" | ||||||
| 
 | 
 | ||||||
| ////////////////////////////////////////////////////////////////////////////////////////////////////
 | namespace Kernel { | ||||||
| // SVC types
 |  | ||||||
| 
 | 
 | ||||||
| struct MemoryInfo { | struct MemoryInfo { | ||||||
|     u32 base_address; |     u32 base_address; | ||||||
|  | @ -20,11 +19,6 @@ struct PageInfo { | ||||||
|     u32 flags; |     u32 flags; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| ////////////////////////////////////////////////////////////////////////////////////////////////////
 |  | ||||||
| // Namespace SVC
 |  | ||||||
| 
 |  | ||||||
| namespace SVC { |  | ||||||
| 
 |  | ||||||
| /// Values accepted by svcGetSystemInfo's type parameter.
 | /// Values accepted by svcGetSystemInfo's type parameter.
 | ||||||
| enum class SystemInfoType { | enum class SystemInfoType { | ||||||
|     /**
 |     /**
 | ||||||
|  | @ -56,4 +50,4 @@ enum class SystemInfoMemUsageRegion { | ||||||
| 
 | 
 | ||||||
| void CallSVC(u32 immediate); | void CallSVC(u32 immediate); | ||||||
| 
 | 
 | ||||||
| } // namespace
 | } // namespace Kernel
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue