Browse Source

[core] Unstub AliasRegionExtraSize

pull/260/head
SDK Chan 7 months ago
committed by crueter
parent
commit
38eca05c6d
  1. 11
      src/core/hle/kernel/k_page_table_base.h
  2. 3
      src/core/hle/kernel/k_process_page_table.h
  3. 12
      src/core/hle/kernel/svc/svc_info.cpp

11
src/core/hle/kernel/k_page_table_base.h

@ -715,6 +715,17 @@ public:
return m_address_space_width; return m_address_space_width;
} }
size_t CalculateAliasRegionExtraSize() const {
const size_t baseline = 64ull << 30; // Mostly appropriate for DRAM values <= 8GB
const size_t region = GetAliasRegionSize();
if (region > baseline) {
return region - baseline;
}
return 0;
}
public: public:
// Linear mapped // Linear mapped
static u8* GetLinearMappedVirtualPointer(KernelCore& kernel, KPhysicalAddress addr) { static u8* GetLinearMappedVirtualPointer(KernelCore& kernel, KPhysicalAddress addr) {

3
src/core/hle/kernel/k_process_page_table.h

@ -410,6 +410,9 @@ public:
size_t GetAliasRegionSize() const { size_t GetAliasRegionSize() const {
return m_page_table.GetAliasRegionSize(); return m_page_table.GetAliasRegionSize();
} }
size_t GetAliasRegionExtraSize() const {
return m_page_table.CalculateAliasRegionExtraSize();
}
size_t GetStackRegionSize() const { size_t GetStackRegionSize() const {
return m_page_table.GetStackRegionSize(); return m_page_table.GetStackRegionSize();
} }

12
src/core/hle/kernel/svc/svc_info.cpp

@ -61,7 +61,6 @@ Result GetInfo(Core::System& system, u64* result, InfoType info_id_type, Handle
case InfoType::AliasRegionSize: case InfoType::AliasRegionSize:
*result = process->GetPageTable().GetAliasRegionSize(); *result = process->GetPageTable().GetAliasRegionSize();
R_SUCCEED(); R_SUCCEED();
case InfoType::HeapRegionAddress: case InfoType::HeapRegionAddress:
*result = GetInteger(process->GetPageTable().GetHeapRegionStart()); *result = GetInteger(process->GetPageTable().GetHeapRegionStart());
R_SUCCEED(); R_SUCCEED();
@ -135,9 +134,16 @@ Result GetInfo(Core::System& system, u64* result, InfoType info_id_type, Handle
} }
R_SUCCEED(); R_SUCCEED();
case InfoType::AliasRegionExtraSize:
// TODO (jarrodnorwell): do this when KIP's NPDM header is finished
case InfoType::AliasRegionExtraSize: {
if (info_sub_id != 0) {
return ResultInvalidCombination;
}
KProcess* current_process = GetCurrentProcessPointer(system.Kernel());
*result = current_process->GetPageTable().GetAliasRegionExtraSize();
R_SUCCEED(); R_SUCCEED();
}
default: default:
break; break;

Loading…
Cancel
Save