mirror of
https://github.com/KytyPS5/KytyPS5.git
synced 2026-08-03 11:23:49 +00:00
add unknwon flag
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user