mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2025-05-25 21:03:18 +00:00
core: Add support for Neo mode memory size. (#1196)
This commit is contained in:
parent
f139762c64
commit
20915eb5b8
4 changed files with 10 additions and 2 deletions
|
@ -25,7 +25,7 @@ asm(".zerofill GUEST_SYSTEM,GUEST_SYSTEM,__guest_system,0xFBFC00000");
|
||||||
|
|
||||||
namespace Core {
|
namespace Core {
|
||||||
|
|
||||||
static constexpr size_t BackingSize = SCE_KERNEL_MAIN_DMEM_SIZE;
|
static constexpr size_t BackingSize = SCE_KERNEL_MAIN_DMEM_SIZE_PRO;
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,8 @@
|
||||||
#include "common/types.h"
|
#include "common/types.h"
|
||||||
|
|
||||||
constexpr u64 SCE_KERNEL_MAIN_DMEM_SIZE = 5056_MB; // ~ 5GB
|
constexpr u64 SCE_KERNEL_MAIN_DMEM_SIZE = 5056_MB; // ~ 5GB
|
||||||
|
// TODO: Confirm this value on hardware.
|
||||||
|
constexpr u64 SCE_KERNEL_MAIN_DMEM_SIZE_PRO = 5568_MB; // ~ 5.5GB
|
||||||
|
|
||||||
namespace Libraries::Kernel {
|
namespace Libraries::Kernel {
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
#include "common/alignment.h"
|
#include "common/alignment.h"
|
||||||
#include "common/assert.h"
|
#include "common/assert.h"
|
||||||
|
#include "common/config.h"
|
||||||
#include "common/debug.h"
|
#include "common/debug.h"
|
||||||
#include "core/libraries/error_codes.h"
|
#include "core/libraries/error_codes.h"
|
||||||
#include "core/libraries/kernel/memory_management.h"
|
#include "core/libraries/kernel/memory_management.h"
|
||||||
|
@ -39,8 +40,10 @@ MemoryManager::MemoryManager() {
|
||||||
MemoryManager::~MemoryManager() = default;
|
MemoryManager::~MemoryManager() = default;
|
||||||
|
|
||||||
void MemoryManager::SetupMemoryRegions(u64 flexible_size) {
|
void MemoryManager::SetupMemoryRegions(u64 flexible_size) {
|
||||||
|
const auto total_size =
|
||||||
|
Config::isNeoMode() ? SCE_KERNEL_MAIN_DMEM_SIZE_PRO : SCE_KERNEL_MAIN_DMEM_SIZE;
|
||||||
total_flexible_size = flexible_size;
|
total_flexible_size = flexible_size;
|
||||||
total_direct_size = SCE_KERNEL_MAIN_DMEM_SIZE - flexible_size;
|
total_direct_size = total_size - flexible_size;
|
||||||
|
|
||||||
// Insert an area that covers direct memory physical block.
|
// Insert an area that covers direct memory physical block.
|
||||||
// Note that this should never be called after direct memory allocations have been made.
|
// Note that this should never be called after direct memory allocations have been made.
|
||||||
|
|
|
@ -142,6 +142,9 @@ struct PageManager::Impl {
|
||||||
}
|
}
|
||||||
|
|
||||||
void Protect(VAddr address, size_t size, bool allow_write) {
|
void Protect(VAddr address, size_t size, bool allow_write) {
|
||||||
|
ASSERT_MSG(owned_ranges.find(address) != owned_ranges.end(),
|
||||||
|
"Attempted to track non-GPU memory at address {:#x}, size {:#x}.", address,
|
||||||
|
size);
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
DWORD prot = allow_write ? PAGE_READWRITE : PAGE_READONLY;
|
DWORD prot = allow_write ? PAGE_READWRITE : PAGE_READONLY;
|
||||||
DWORD old_prot{};
|
DWORD old_prot{};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue