core/arm: Remove obsolete Unicorn memory mapping
This was initially necessary when AArch64 JIT emulation was in its infancy and all memory-related instructions weren't implemented. Given the JIT now has all of these facilities implemented, we can remove these functions from the CPU interface.
This commit is contained in:
parent
0b3901bdd0
commit
70624e1c1d
|
@ -44,13 +44,6 @@ public:
|
||||||
/// Step CPU by one instruction
|
/// Step CPU by one instruction
|
||||||
virtual void Step() = 0;
|
virtual void Step() = 0;
|
||||||
|
|
||||||
/// Maps a backing memory region for the CPU
|
|
||||||
virtual void MapBackingMemory(VAddr address, std::size_t size, u8* memory,
|
|
||||||
Kernel::VMAPermission perms) = 0;
|
|
||||||
|
|
||||||
/// Unmaps a region of memory that was previously mapped using MapBackingMemory
|
|
||||||
virtual void UnmapMemory(VAddr address, std::size_t size) = 0;
|
|
||||||
|
|
||||||
/// Clear all instruction cache
|
/// Clear all instruction cache
|
||||||
virtual void ClearInstructionCache() = 0;
|
virtual void ClearInstructionCache() = 0;
|
||||||
|
|
||||||
|
|
|
@ -177,15 +177,6 @@ ARM_Dynarmic::ARM_Dynarmic(System& system, ExclusiveMonitor& exclusive_monitor,
|
||||||
|
|
||||||
ARM_Dynarmic::~ARM_Dynarmic() = default;
|
ARM_Dynarmic::~ARM_Dynarmic() = default;
|
||||||
|
|
||||||
void ARM_Dynarmic::MapBackingMemory(u64 address, std::size_t size, u8* memory,
|
|
||||||
Kernel::VMAPermission perms) {
|
|
||||||
inner_unicorn.MapBackingMemory(address, size, memory, perms);
|
|
||||||
}
|
|
||||||
|
|
||||||
void ARM_Dynarmic::UnmapMemory(u64 address, std::size_t size) {
|
|
||||||
inner_unicorn.UnmapMemory(address, size);
|
|
||||||
}
|
|
||||||
|
|
||||||
void ARM_Dynarmic::SetPC(u64 pc) {
|
void ARM_Dynarmic::SetPC(u64 pc) {
|
||||||
jit->SetPC(pc);
|
jit->SetPC(pc);
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,9 +23,6 @@ public:
|
||||||
ARM_Dynarmic(System& system, ExclusiveMonitor& exclusive_monitor, std::size_t core_index);
|
ARM_Dynarmic(System& system, ExclusiveMonitor& exclusive_monitor, std::size_t core_index);
|
||||||
~ARM_Dynarmic() override;
|
~ARM_Dynarmic() override;
|
||||||
|
|
||||||
void MapBackingMemory(VAddr address, std::size_t size, u8* memory,
|
|
||||||
Kernel::VMAPermission perms) override;
|
|
||||||
void UnmapMemory(u64 address, std::size_t size) override;
|
|
||||||
void SetPC(u64 pc) override;
|
void SetPC(u64 pc) override;
|
||||||
u64 GetPC() const override;
|
u64 GetPC() const override;
|
||||||
u64 GetReg(int index) const override;
|
u64 GetReg(int index) const override;
|
||||||
|
|
|
@ -76,15 +76,6 @@ ARM_Unicorn::~ARM_Unicorn() {
|
||||||
CHECKED(uc_close(uc));
|
CHECKED(uc_close(uc));
|
||||||
}
|
}
|
||||||
|
|
||||||
void ARM_Unicorn::MapBackingMemory(VAddr address, std::size_t size, u8* memory,
|
|
||||||
Kernel::VMAPermission perms) {
|
|
||||||
CHECKED(uc_mem_map_ptr(uc, address, size, static_cast<u32>(perms), memory));
|
|
||||||
}
|
|
||||||
|
|
||||||
void ARM_Unicorn::UnmapMemory(VAddr address, std::size_t size) {
|
|
||||||
CHECKED(uc_mem_unmap(uc, address, size));
|
|
||||||
}
|
|
||||||
|
|
||||||
void ARM_Unicorn::SetPC(u64 pc) {
|
void ARM_Unicorn::SetPC(u64 pc) {
|
||||||
CHECKED(uc_reg_write(uc, UC_ARM64_REG_PC, &pc));
|
CHECKED(uc_reg_write(uc, UC_ARM64_REG_PC, &pc));
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,9 +18,6 @@ public:
|
||||||
explicit ARM_Unicorn(System& system);
|
explicit ARM_Unicorn(System& system);
|
||||||
~ARM_Unicorn() override;
|
~ARM_Unicorn() override;
|
||||||
|
|
||||||
void MapBackingMemory(VAddr address, std::size_t size, u8* memory,
|
|
||||||
Kernel::VMAPermission perms) override;
|
|
||||||
void UnmapMemory(VAddr address, std::size_t size) override;
|
|
||||||
void SetPC(u64 pc) override;
|
void SetPC(u64 pc) override;
|
||||||
u64 GetPC() const override;
|
u64 GetPC() const override;
|
||||||
u64 GetReg(int index) const override;
|
u64 GetReg(int index) const override;
|
||||||
|
|
|
@ -8,7 +8,6 @@
|
||||||
#include "common/assert.h"
|
#include "common/assert.h"
|
||||||
#include "common/logging/log.h"
|
#include "common/logging/log.h"
|
||||||
#include "common/memory_hook.h"
|
#include "common/memory_hook.h"
|
||||||
#include "core/arm/arm_interface.h"
|
|
||||||
#include "core/core.h"
|
#include "core/core.h"
|
||||||
#include "core/file_sys/program_metadata.h"
|
#include "core/file_sys/program_metadata.h"
|
||||||
#include "core/hle/kernel/errors.h"
|
#include "core/hle/kernel/errors.h"
|
||||||
|
@ -109,15 +108,6 @@ ResultVal<VMManager::VMAHandle> VMManager::MapMemoryBlock(VAddr target,
|
||||||
VirtualMemoryArea& final_vma = vma_handle->second;
|
VirtualMemoryArea& final_vma = vma_handle->second;
|
||||||
ASSERT(final_vma.size == size);
|
ASSERT(final_vma.size == size);
|
||||||
|
|
||||||
system.ArmInterface(0).MapBackingMemory(target, size, block->data() + offset,
|
|
||||||
VMAPermission::ReadWriteExecute);
|
|
||||||
system.ArmInterface(1).MapBackingMemory(target, size, block->data() + offset,
|
|
||||||
VMAPermission::ReadWriteExecute);
|
|
||||||
system.ArmInterface(2).MapBackingMemory(target, size, block->data() + offset,
|
|
||||||
VMAPermission::ReadWriteExecute);
|
|
||||||
system.ArmInterface(3).MapBackingMemory(target, size, block->data() + offset,
|
|
||||||
VMAPermission::ReadWriteExecute);
|
|
||||||
|
|
||||||
final_vma.type = VMAType::AllocatedMemoryBlock;
|
final_vma.type = VMAType::AllocatedMemoryBlock;
|
||||||
final_vma.permissions = VMAPermission::ReadWrite;
|
final_vma.permissions = VMAPermission::ReadWrite;
|
||||||
final_vma.state = state;
|
final_vma.state = state;
|
||||||
|
@ -137,11 +127,6 @@ ResultVal<VMManager::VMAHandle> VMManager::MapBackingMemory(VAddr target, u8* me
|
||||||
VirtualMemoryArea& final_vma = vma_handle->second;
|
VirtualMemoryArea& final_vma = vma_handle->second;
|
||||||
ASSERT(final_vma.size == size);
|
ASSERT(final_vma.size == size);
|
||||||
|
|
||||||
system.ArmInterface(0).MapBackingMemory(target, size, memory, VMAPermission::ReadWriteExecute);
|
|
||||||
system.ArmInterface(1).MapBackingMemory(target, size, memory, VMAPermission::ReadWriteExecute);
|
|
||||||
system.ArmInterface(2).MapBackingMemory(target, size, memory, VMAPermission::ReadWriteExecute);
|
|
||||||
system.ArmInterface(3).MapBackingMemory(target, size, memory, VMAPermission::ReadWriteExecute);
|
|
||||||
|
|
||||||
final_vma.type = VMAType::BackingMemory;
|
final_vma.type = VMAType::BackingMemory;
|
||||||
final_vma.permissions = VMAPermission::ReadWrite;
|
final_vma.permissions = VMAPermission::ReadWrite;
|
||||||
final_vma.state = state;
|
final_vma.state = state;
|
||||||
|
@ -230,11 +215,6 @@ ResultCode VMManager::UnmapRange(VAddr target, u64 size) {
|
||||||
|
|
||||||
ASSERT(FindVMA(target)->second.size >= size);
|
ASSERT(FindVMA(target)->second.size >= size);
|
||||||
|
|
||||||
system.ArmInterface(0).UnmapMemory(target, size);
|
|
||||||
system.ArmInterface(1).UnmapMemory(target, size);
|
|
||||||
system.ArmInterface(2).UnmapMemory(target, size);
|
|
||||||
system.ArmInterface(3).UnmapMemory(target, size);
|
|
||||||
|
|
||||||
return RESULT_SUCCESS;
|
return RESULT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Reference in New Issue