add unknwon flag

This commit is contained in:
nmzik
2026-07-31 02:33:00 +02:00
parent e87ae56544
commit 4532883b83
2 changed files with 28 additions and 5 deletions
+3 -2
View File
@@ -2176,11 +2176,12 @@ int32_t KYTY_SYSV_ABI KernelMapNamedFlexibleMemory(void** addr_in_out, size_t le
constexpr uint32_t GUEST_MAP_FIXED = 0x10;
constexpr uint32_t GUEST_MAP_NO_OVERWRITE = 0x80;
constexpr uint32_t GUEST_MAP_DMEM_COMPAT = 0x400;
constexpr uint32_t GUEST_MAP_UNKNOWN_8000 = 0x8000;
constexpr uint32_t GUEST_MAP_NO_COALESCE = 0x400000;
constexpr uint32_t GUEST_MAP_ALIGNMENT_MASK = 0xff000000;
constexpr uint32_t SUPPORTED_MAP_BITS = GUEST_MAP_FIXED | GUEST_MAP_NO_OVERWRITE |
GUEST_MAP_DMEM_COMPAT | GUEST_MAP_NO_COALESCE |
GUEST_MAP_ALIGNMENT_MASK;
GUEST_MAP_DMEM_COMPAT | GUEST_MAP_UNKNOWN_8000 |
GUEST_MAP_NO_COALESCE | GUEST_MAP_ALIGNMENT_MASK;
if (len == 0 || (len & (PAGE_SIZE - 1)) != 0) {
return KERNEL_ERROR_EINVAL;
+25 -3
View File
@@ -407,11 +407,33 @@ void TestFlexibleDmemCompatAndAlignmentFlags() {
Check(test, AvailableFlexibleMemory(test) == baseline,
"DMEM_COMPAT cleanup did not restore flexible capacity");
void* invalid = nullptr;
void* opaque = nullptr;
CheckOk(test,
Libs::LibKernel::Memory::KernelMapNamedFlexibleMemory(
&opaque, SceKernelPageSize, SceKernelProtCpuRw, 0x8000, "opaque_runtime_flag"),
"KernelMapNamedFlexibleMemory(opaque runtime flag)");
Check(test, AvailableFlexibleMemory(test) + SceKernelPageSize == baseline,
"opaque runtime flag mapping did not consume boot-time flexible backing");
CheckOk(test,
Libs::LibKernel::Memory::KernelMunmap(reinterpret_cast<uint64_t>(opaque),
SceKernelPageSize),
"KernelMunmap(opaque runtime flag)");
Check(test, AvailableFlexibleMemory(test) == baseline,
"opaque runtime flag cleanup did not restore flexible capacity");
void* invalid_flag = nullptr;
CheckFailed(
test,
Libs::LibKernel::Memory::KernelMapNamedFlexibleMemory(
&invalid_flag, SceKernelPageSize, SceKernelProtCpuRw, 0x10000, "unsupported_flag"),
"KernelMapNamedFlexibleMemory(unsupported flag)");
void* invalid_alignment = nullptr;
CheckFailed(test,
Libs::LibKernel::Memory::KernelMapNamedFlexibleMemory(
&invalid, SceKernelPageSize, SceKernelProtCpuRw, 0x8000, "non_sdk_flag"),
"KernelMapNamedFlexibleMemory(non-SDK flag)");
&invalid_alignment, SceKernelPageSize, SceKernelProtCpuRw, 13 << 24,
"invalid_alignment"),
"KernelMapNamedFlexibleMemory(invalid alignment)");
std::printf("[host] %-48s ok\n", test);
}