From e967c8cf8033373427dcfdad6d767ec10e661f6e Mon Sep 17 00:00:00 2001 From: DH Date: Sun, 30 Jul 2023 14:52:34 +0300 Subject: [PATCH] [rpcsx-os] dmem: 0xc0208016 ioctl: return address and size --- rpcsx-os/iodev/dmem.cpp | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/rpcsx-os/iodev/dmem.cpp b/rpcsx-os/iodev/dmem.cpp index c079976b3..7acc97d0f 100644 --- a/rpcsx-os/iodev/dmem.cpp +++ b/rpcsx-os/iodev/dmem.cpp @@ -48,10 +48,22 @@ static orbis::ErrorCode dmem_ioctl(orbis::File *file, std::uint64_t request, *(std::uint64_t *)argp = dmemSize; return {}; - case 0xc0208016: // get avaiable size - ORBIS_LOG_ERROR("dmem getAvaiableSize", device->index, argp); - *(std::uint64_t *)argp = dmemSize - device->nextOffset; + case 0xc0208016: { // get available size + struct Args { + std::uint64_t searchStart; + std::uint64_t searchEnd; + std::uint64_t alignment; + std::uint64_t size; + }; + + auto args = reinterpret_cast(argp); + + ORBIS_LOG_ERROR("dmem getAvaiableSize", device->index, argp, dmemSize, + device->nextOffset, dmemSize - device->nextOffset); + args->searchStart = device->nextOffset; + args->size = dmemSize - device->nextOffset; return {}; + } case 0xc0288001: { // sceKernelAllocateDirectMemory auto args = reinterpret_cast(argp); @@ -86,19 +98,6 @@ static orbis::ErrorCode dmem_ioctl(orbis::File *file, std::uint64_t request, return {}; } - case 0xc020a801: { - struct Args { - std::uint64_t len; - std::uint64_t searchStart; - std::uint64_t searchEnd; - std::uint32_t alignment; - }; - auto args = reinterpret_cast(argp); - ORBIS_LOG_TODO("dmem memory pool expand", device->index, args->len, - args->searchStart, args->searchEnd, args->alignment); - return {}; - } - case 0xc0288011: { auto args = reinterpret_cast(argp); // TODO