mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 13:50:03 +00:00 
			
		
		
		
	Memory: move Read/Write8/16/32/64 and ReadCString into class
This commit is contained in:
		
							parent
							
								
									1ec9ed6827
								
							
						
					
					
						commit
						323990d402
					
				
					 11 changed files with 119 additions and 99 deletions
				
			
		|  | @ -72,33 +72,34 @@ private: | |||
| class DynarmicUserCallbacks final : public Dynarmic::A32::UserCallbacks { | ||||
| public: | ||||
|     explicit DynarmicUserCallbacks(ARM_Dynarmic& parent) | ||||
|         : parent(parent), timing(parent.system.CoreTiming()), svc_context(parent.system) {} | ||||
|         : parent(parent), timing(parent.system.CoreTiming()), svc_context(parent.system), | ||||
|           memory(parent.system.Memory()) {} | ||||
|     ~DynarmicUserCallbacks() = default; | ||||
| 
 | ||||
|     std::uint8_t MemoryRead8(VAddr vaddr) override { | ||||
|         return Memory::Read8(vaddr); | ||||
|         return memory.Read8(vaddr); | ||||
|     } | ||||
|     std::uint16_t MemoryRead16(VAddr vaddr) override { | ||||
|         return Memory::Read16(vaddr); | ||||
|         return memory.Read16(vaddr); | ||||
|     } | ||||
|     std::uint32_t MemoryRead32(VAddr vaddr) override { | ||||
|         return Memory::Read32(vaddr); | ||||
|         return memory.Read32(vaddr); | ||||
|     } | ||||
|     std::uint64_t MemoryRead64(VAddr vaddr) override { | ||||
|         return Memory::Read64(vaddr); | ||||
|         return memory.Read64(vaddr); | ||||
|     } | ||||
| 
 | ||||
|     void MemoryWrite8(VAddr vaddr, std::uint8_t value) override { | ||||
|         Memory::Write8(vaddr, value); | ||||
|         memory.Write8(vaddr, value); | ||||
|     } | ||||
|     void MemoryWrite16(VAddr vaddr, std::uint16_t value) override { | ||||
|         Memory::Write16(vaddr, value); | ||||
|         memory.Write16(vaddr, value); | ||||
|     } | ||||
|     void MemoryWrite32(VAddr vaddr, std::uint32_t value) override { | ||||
|         Memory::Write32(vaddr, value); | ||||
|         memory.Write32(vaddr, value); | ||||
|     } | ||||
|     void MemoryWrite64(VAddr vaddr, std::uint64_t value) override { | ||||
|         Memory::Write64(vaddr, value); | ||||
|         memory.Write64(vaddr, value); | ||||
|     } | ||||
| 
 | ||||
|     void InterpreterFallback(VAddr pc, std::size_t num_instructions) override { | ||||
|  | @ -159,6 +160,7 @@ public: | |||
|     ARM_Dynarmic& parent; | ||||
|     Core::Timing& timing; | ||||
|     Kernel::SVCContext svc_context; | ||||
|     Memory::MemorySystem& memory; | ||||
| }; | ||||
| 
 | ||||
| ARM_Dynarmic::ARM_Dynarmic(Core::System& system, PrivilegeMode initial_mode) | ||||
|  |  | |||
|  | @ -811,7 +811,7 @@ MICROPROFILE_DEFINE(DynCom_Decode, "DynCom", "Decode", MP_RGB(255, 64, 64)); | |||
| static unsigned int InterpreterTranslateInstruction(const ARMul_State* cpu, const u32 phys_addr, | ||||
|                                                     ARM_INST_PTR& inst_base) { | ||||
|     u32 inst_size = 4; | ||||
|     u32 inst = Memory::Read32(phys_addr & 0xFFFFFFFC); | ||||
|     u32 inst = Core::System::GetInstance().Memory().Read32(phys_addr & 0xFFFFFFFC); | ||||
| 
 | ||||
|     // If we are in Thumb mode, we'll translate one Thumb instruction to the corresponding ARM
 | ||||
|     // instruction
 | ||||
|  |  | |||
|  | @ -191,13 +191,13 @@ static void CheckMemoryBreakpoint(u32 address, GDBStub::BreakpointType type) { | |||
| u8 ARMul_State::ReadMemory8(u32 address) const { | ||||
|     CheckMemoryBreakpoint(address, GDBStub::BreakpointType::Read); | ||||
| 
 | ||||
|     return Memory::Read8(address); | ||||
|     return Core::System::GetInstance().Memory().Read8(address); | ||||
| } | ||||
| 
 | ||||
| u16 ARMul_State::ReadMemory16(u32 address) const { | ||||
|     CheckMemoryBreakpoint(address, GDBStub::BreakpointType::Read); | ||||
| 
 | ||||
|     u16 data = Memory::Read16(address); | ||||
|     u16 data = Core::System::GetInstance().Memory().Read16(address); | ||||
| 
 | ||||
|     if (InBigEndianMode()) | ||||
|         data = Common::swap16(data); | ||||
|  | @ -208,7 +208,7 @@ u16 ARMul_State::ReadMemory16(u32 address) const { | |||
| u32 ARMul_State::ReadMemory32(u32 address) const { | ||||
|     CheckMemoryBreakpoint(address, GDBStub::BreakpointType::Read); | ||||
| 
 | ||||
|     u32 data = Memory::Read32(address); | ||||
|     u32 data = Core::System::GetInstance().Memory().Read32(address); | ||||
| 
 | ||||
|     if (InBigEndianMode()) | ||||
|         data = Common::swap32(data); | ||||
|  | @ -219,7 +219,7 @@ u32 ARMul_State::ReadMemory32(u32 address) const { | |||
| u64 ARMul_State::ReadMemory64(u32 address) const { | ||||
|     CheckMemoryBreakpoint(address, GDBStub::BreakpointType::Read); | ||||
| 
 | ||||
|     u64 data = Memory::Read64(address); | ||||
|     u64 data = Core::System::GetInstance().Memory().Read64(address); | ||||
| 
 | ||||
|     if (InBigEndianMode()) | ||||
|         data = Common::swap64(data); | ||||
|  | @ -230,7 +230,7 @@ u64 ARMul_State::ReadMemory64(u32 address) const { | |||
| void ARMul_State::WriteMemory8(u32 address, u8 data) { | ||||
|     CheckMemoryBreakpoint(address, GDBStub::BreakpointType::Write); | ||||
| 
 | ||||
|     Memory::Write8(address, data); | ||||
|     Core::System::GetInstance().Memory().Write8(address, data); | ||||
| } | ||||
| 
 | ||||
| void ARMul_State::WriteMemory16(u32 address, u16 data) { | ||||
|  | @ -239,7 +239,7 @@ void ARMul_State::WriteMemory16(u32 address, u16 data) { | |||
|     if (InBigEndianMode()) | ||||
|         data = Common::swap16(data); | ||||
| 
 | ||||
|     Memory::Write16(address, data); | ||||
|     Core::System::GetInstance().Memory().Write16(address, data); | ||||
| } | ||||
| 
 | ||||
| void ARMul_State::WriteMemory32(u32 address, u32 data) { | ||||
|  | @ -248,7 +248,7 @@ void ARMul_State::WriteMemory32(u32 address, u32 data) { | |||
|     if (InBigEndianMode()) | ||||
|         data = Common::swap32(data); | ||||
| 
 | ||||
|     Memory::Write32(address, data); | ||||
|     Core::System::GetInstance().Memory().Write32(address, data); | ||||
| } | ||||
| 
 | ||||
| void ARMul_State::WriteMemory64(u32 address, u64 data) { | ||||
|  | @ -257,7 +257,7 @@ void ARMul_State::WriteMemory64(u32 address, u64 data) { | |||
|     if (InBigEndianMode()) | ||||
|         data = Common::swap64(data); | ||||
| 
 | ||||
|     Memory::Write64(address, data); | ||||
|     Core::System::GetInstance().Memory().Write64(address, data); | ||||
| } | ||||
| 
 | ||||
| // Reads from the CP15 registers. Used with implementation of the MRC instruction.
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue