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