device_memory: Enable direct mapped addresses for nce
This commit is contained in:
parent
2e02efbdd0
commit
4838837620
|
@ -156,8 +156,14 @@ bool IsFastmemEnabled() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool IsNceEnabled(bool is_64bit) {
|
static bool is_nce_enabled = false;
|
||||||
return values.cpu_backend.GetValue() == CpuBackend::Nce && is_64bit;
|
|
||||||
|
void SetNceEnabled(bool is_64bit) {
|
||||||
|
is_nce_enabled = values.cpu_backend.GetValue() == CpuBackend::Nce && is_64bit;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool IsNceEnabled() {
|
||||||
|
return is_nce_enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool IsDockedMode() {
|
bool IsDockedMode() {
|
||||||
|
|
|
@ -573,7 +573,8 @@ bool IsGPULevelExtreme();
|
||||||
bool IsGPULevelHigh();
|
bool IsGPULevelHigh();
|
||||||
|
|
||||||
bool IsFastmemEnabled();
|
bool IsFastmemEnabled();
|
||||||
bool IsNceEnabled(bool is_64bit = true);
|
void SetNceEnabled(bool is_64bit);
|
||||||
|
bool IsNceEnabled();
|
||||||
|
|
||||||
bool IsDockedMode();
|
bool IsDockedMode();
|
||||||
|
|
||||||
|
|
|
@ -136,7 +136,8 @@ struct System::Impl {
|
||||||
}
|
}
|
||||||
|
|
||||||
void Initialize(System& system) {
|
void Initialize(System& system) {
|
||||||
device_memory = std::make_unique<Core::DeviceMemory>();
|
const bool direct_mapped_address = Settings::IsNceEnabled();
|
||||||
|
device_memory = std::make_unique<Core::DeviceMemory>(direct_mapped_address);
|
||||||
|
|
||||||
is_multicore = Settings::values.use_multi_core.GetValue();
|
is_multicore = Settings::values.use_multi_core.GetValue();
|
||||||
extended_memory_layout =
|
extended_memory_layout =
|
||||||
|
|
|
@ -6,15 +6,20 @@
|
||||||
|
|
||||||
namespace Core {
|
namespace Core {
|
||||||
|
|
||||||
#ifdef ANDROID
|
#ifdef ARCHITECTURE_arm64
|
||||||
constexpr size_t VirtualReserveSize = 1ULL << 38;
|
constexpr size_t VirtualReserveSize = 1ULL << 38;
|
||||||
#else
|
#else
|
||||||
constexpr size_t VirtualReserveSize = 1ULL << 39;
|
constexpr size_t VirtualReserveSize = 1ULL << 39;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
DeviceMemory::DeviceMemory()
|
DeviceMemory::DeviceMemory(bool direct_mapped_address)
|
||||||
: buffer{Kernel::Board::Nintendo::Nx::KSystemControl::Init::GetIntendedMemorySize(),
|
: buffer{Kernel::Board::Nintendo::Nx::KSystemControl::Init::GetIntendedMemorySize(),
|
||||||
VirtualReserveSize} {}
|
VirtualReserveSize} {
|
||||||
|
if (direct_mapped_address) {
|
||||||
|
buffer.EnableDirectMappedAddress();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
DeviceMemory::~DeviceMemory() = default;
|
DeviceMemory::~DeviceMemory() = default;
|
||||||
|
|
||||||
} // namespace Core
|
} // namespace Core
|
||||||
|
|
|
@ -18,7 +18,7 @@ enum : u64 {
|
||||||
|
|
||||||
class DeviceMemory {
|
class DeviceMemory {
|
||||||
public:
|
public:
|
||||||
explicit DeviceMemory();
|
explicit DeviceMemory(bool direct_mapped_address);
|
||||||
~DeviceMemory();
|
~DeviceMemory();
|
||||||
|
|
||||||
DeviceMemory& operator=(const DeviceMemory&) = delete;
|
DeviceMemory& operator=(const DeviceMemory&) = delete;
|
||||||
|
|
Reference in New Issue