[core] Unstub AliasRegionExtraSize #260
3 changed files with 36 additions and 7 deletions
|
@ -1,3 +1,6 @@
|
||||||
|
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
@ -715,6 +718,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) {
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
@ -410,6 +413,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();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
@ -37,8 +40,8 @@ Result GetInfo(Core::System& system, u64* result, InfoType info_id_type, Handle
|
||||||
case InfoType::TotalNonSystemMemorySize:
|
case InfoType::TotalNonSystemMemorySize:
|
||||||
case InfoType::UsedNonSystemMemorySize:
|
case InfoType::UsedNonSystemMemorySize:
|
||||||
case InfoType::IsApplication:
|
case InfoType::IsApplication:
|
||||||
case InfoType::FreeThreadCount:
|
case InfoType::FreeThreadCount:
|
||||||
case InfoType::AliasRegionExtraSize: {
|
case InfoType::AliasRegionExtraSize: {
|
||||||
R_UNLESS(info_sub_id == 0, ResultInvalidEnumValue);
|
R_UNLESS(info_sub_id == 0, ResultInvalidEnumValue);
|
||||||
|
|
||||||
const auto& handle_table = GetCurrentProcess(system.Kernel()).GetHandleTable();
|
const auto& handle_table = GetCurrentProcess(system.Kernel()).GetHandleTable();
|
||||||
|
@ -61,7 +64,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,10 +137,17 @@ Result GetInfo(Core::System& system, u64* result, InfoType info_id_type, Handle
|
||||||
}
|
}
|
||||||
R_SUCCEED();
|
R_SUCCEED();
|
||||||
|
|
||||||
case InfoType::AliasRegionExtraSize:
|
case InfoType::AliasRegionExtraSize: {
|
||||||
// TODO (jarrodnorwell): do this when KIP's NPDM header is finished
|
if (info_sub_id != 0) {
|
||||||
R_SUCCEED();
|
return ResultInvalidCombination;
|
||||||
|
}
|
||||||
|
|
||||||
|
KProcess* current_process = GetCurrentProcessPointer(system.Kernel());
|
||||||
|
*result = current_process->GetPageTable().GetAliasRegionExtraSize();
|
||||||
|
|
||||||
|
R_SUCCEED();
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue