From 5815d90eb408da51ee7d1a5bdbe88c5f3b780d9e Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Mon, 27 Jul 2015 17:59:21 +0300 Subject: [PATCH] Minor formatting fix, cellRudp fix --- rpcs3/Emu/SysCalls/Modules/cellCamera.cpp | 14 +++- rpcs3/Emu/SysCalls/Modules/cellCamera.h | 4 +- rpcs3/Emu/SysCalls/Modules/cellPamf.cpp | 2 +- rpcs3/Emu/SysCalls/Modules/cellRudp.cpp | 86 ++++++++++++-------- rpcs3/Emu/SysCalls/Modules/cellRudp.h | 6 +- rpcs3/Emu/SysCalls/Modules/cellSail.cpp | 54 ++++++------ rpcs3/Emu/SysCalls/Modules/cellSail.h | 17 ++-- rpcs3/Emu/SysCalls/Modules/sceNp.cpp | 36 ++++---- rpcs3/Emu/SysCalls/Modules/sceNp2.cpp | 2 +- rpcs3/Emu/SysCalls/Modules/sysPrxForUser.cpp | 6 +- rpcs3/Emu/SysCalls/Modules/sys_net.cpp | 3 +- rpcs3/Emu/SysCalls/Modules/sys_net.h | 6 +- rpcs3/Emu/SysCalls/SC_FUNC.h | 22 ----- rpcs3/Emu/SysCalls/lv2/sys_process.cpp | 6 +- rpcs3/Emu/SysCalls/lv2/sys_spu.cpp | 2 +- rpcs3/Emu/SysCalls/lv2/sys_tty.cpp | 26 +++--- rpcs3/Emu/SysCalls/lv2/sys_tty.h | 4 +- 17 files changed, 150 insertions(+), 146 deletions(-) diff --git a/rpcs3/Emu/SysCalls/Modules/cellCamera.cpp b/rpcs3/Emu/SysCalls/Modules/cellCamera.cpp index 73b41413ab..bb3ca59368 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellCamera.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellCamera.cpp @@ -18,7 +18,7 @@ s32 cellCameraInit() return CELL_CAMERA_ERROR_DEVICE_NOT_FOUND; } - if (g_camera->init.exchange(true)) + if (g_camera->init) { return CELL_CAMERA_ERROR_ALREADY_INIT; } @@ -60,6 +60,11 @@ s32 cellCameraInit() } // TODO: Some other default attributes? Need to check the actual behaviour on a real PS3. + if (g_camera->init.exchange(true)) + { + throw EXCEPTION("Unexpected"); + } + return CELL_OK; } @@ -67,11 +72,16 @@ s32 cellCameraEnd() { cellCamera.Warning("cellCameraEnd()"); - if (!g_camera->init.exchange(false)) + if (!g_camera->init) { return CELL_CAMERA_ERROR_NOT_INIT; } + if (!g_camera->init.exchange(false)) + { + throw EXCEPTION("Unexpected"); + } + return CELL_OK; } diff --git a/rpcs3/Emu/SysCalls/Modules/cellCamera.h b/rpcs3/Emu/SysCalls/Modules/cellCamera.h index 4a82a0b5b8..2718516e6d 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellCamera.h +++ b/rpcs3/Emu/SysCalls/Modules/cellCamera.h @@ -315,13 +315,13 @@ struct CellCameraReadEx // Custom struct to keep track of cameras struct camera_t { + std::atomic init{ false }; + struct attr_t { u32 v1, v2; }; - std::atomic init{ false }; - attr_t attr[500]{}; static const char* get_attr_name(s32 value) diff --git a/rpcs3/Emu/SysCalls/Modules/cellPamf.cpp b/rpcs3/Emu/SysCalls/Modules/cellPamf.cpp index b08b31ccc5..b954f0ad0b 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellPamf.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellPamf.cpp @@ -458,7 +458,7 @@ s32 cellPamfReaderGetEsFilterId(vm::ptr pSelf, vm::ptr pSelf, vm::ptr pInfo, u32 size) { - cellPamf.Warning("cellPamfReaderGetStreamInfo(pSelf=*0x%x, pInfo_addr=0x%x, size=%d)", pSelf, pInfo, size); + cellPamf.Warning("cellPamfReaderGetStreamInfo(pSelf=*0x%x, pInfo=*0x%x, size=%d)", pSelf, pInfo, size); assert((u32)pSelf->stream < (u32)pSelf->pAddr->stream_count); auto& header = pSelf->pAddr->stream_headers[pSelf->stream]; diff --git a/rpcs3/Emu/SysCalls/Modules/cellRudp.cpp b/rpcs3/Emu/SysCalls/Modules/cellRudp.cpp index de1eb2cee1..9bd3f84131 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellRudp.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellRudp.cpp @@ -8,52 +8,71 @@ extern Module cellRudp; -struct cellRudpInternal +struct RudpInternal { - bool m_bInitialized; - CellRudpAllocator allocator; + std::atomic init; + + // allocator functions + std::function(PPUThread& ppu, u32 size)> malloc; + std::function ptr)> free; + + // event handler function vm::ptr handler; - u32 argument; - - cellRudpInternal() - : m_bInitialized(false) - { - } -}; - -cellRudpInternal cellRudpInstance; + vm::ptr handler_arg; +} +g_rudp; s32 cellRudpInit(vm::ptr allocator) { - cellRudp.Warning("cellRudpInit(allocator_addr=0x%x)", allocator.addr()); + cellRudp.Warning("cellRudpInit(allocator=*0x%x)", allocator); - if (cellRudpInstance.m_bInitialized) + if (g_rudp.init.load()) { - cellRudp.Error("cellRudpInit(): cellRudp has already been initialized."); return CELL_RUDP_ERROR_ALREADY_INITIALIZED; } if (allocator) { - cellRudpInstance.allocator = *allocator.get_ptr(); + g_rudp.malloc = allocator->app_malloc; + g_rudp.free = allocator->app_free; + } + else + { + g_rudp.malloc = [](PPUThread& ppu, u32 size) + { + return vm::ptr::make(vm::alloc(size, vm::main)); + }; + + g_rudp.free = [](PPUThread& ppu, vm::ptr ptr) + { + if (!vm::dealloc(ptr.addr(), vm::main)) + { + throw EXCEPTION("Memory deallocation failed (ptr=0x%x)", ptr); + } + }; } - cellRudpInstance.m_bInitialized = true; + if (g_rudp.init.exchange(true)) + { + throw EXCEPTION("Unexpected"); + } return CELL_OK; } s32 cellRudpEnd() { - cellRudp.Log("cellRudpEnd()"); + cellRudp.Warning("cellRudpEnd()"); - if (!cellRudpInstance.m_bInitialized) + if (!g_rudp.init.load()) { - cellRudp.Error("cellRudpEnd(): cellRudp has not been initialized."); return CELL_RUDP_ERROR_NOT_INITIALIZED; } - cellRudpInstance.m_bInitialized = false; + if (!g_rudp.init.exchange(false)) + { + throw EXCEPTION("Unexpected"); + } return CELL_OK; } @@ -64,22 +83,17 @@ s32 cellRudpEnableInternalIOThread() return CELL_OK; } -s32 cellRudpSetEventHandler(vm::ptr handler, vm::ptr arg) +s32 cellRudpSetEventHandler(vm::ptr handler, vm::ptr arg) { - cellRudp.Todo("cellRudpSetEventHandler(handler=0x%x, arg_addr=0x%x)", handler, arg.addr()); + cellRudp.Todo("cellRudpSetEventHandler(handler=*0x%x, arg=*0x%x)", handler, arg); - if (!cellRudpInstance.m_bInitialized) + if (!g_rudp.init.load()) { - cellRudp.Error("cellRudpInit(): cellRudp has not been initialized."); return CELL_RUDP_ERROR_NOT_INITIALIZED; } - if (arg) - { - cellRudpInstance.argument = *arg.get_ptr(); - } - - cellRudpInstance.handler = handler; + g_rudp.handler = handler; + g_rudp.handler_arg = arg; return CELL_OK; } @@ -216,6 +230,12 @@ s32 cellRudpPollWait() return CELL_OK; } +s32 cellRudpPollCancel() +{ + UNIMPLEMENTED_FUNC(cellRudp); + return CELL_OK; +} + s32 cellRudpNetReceived() { UNIMPLEMENTED_FUNC(cellRudp); @@ -230,7 +250,7 @@ s32 cellRudpProcessEvents() Module cellRudp("cellRudp", []() { - cellRudpInstance.m_bInitialized = false; + g_rudp.init = false; REG_FUNC(cellRudp, cellRudpInit); REG_FUNC(cellRudp, cellRudpEnd); @@ -263,7 +283,7 @@ Module cellRudp("cellRudp", []() REG_FUNC(cellRudp, cellRudpPollDestroy); REG_FUNC(cellRudp, cellRudpPollControl); REG_FUNC(cellRudp, cellRudpPollWait); - //REG_FUNC(cellRudp, cellRudpPollCancel); + REG_FUNC(cellRudp, cellRudpPollCancel); REG_FUNC(cellRudp, cellRudpNetReceived); REG_FUNC(cellRudp, cellRudpProcessEvents); diff --git a/rpcs3/Emu/SysCalls/Modules/cellRudp.h b/rpcs3/Emu/SysCalls/Modules/cellRudp.h index 6b59f74e8f..8eddf2eb27 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellRudp.h +++ b/rpcs3/Emu/SysCalls/Modules/cellRudp.h @@ -77,10 +77,10 @@ enum CELL_RUDP_POLL_EV_ERROR = 0x0008, }; -typedef s32(CellRudpEventHandler)(s32 event_id, s32 soc, vm::cptr data, u32 datalen, vm::cptr addr, u32 addrlen, vm::ptr arg); +using CellRudpEventHandler = s32(s32 event_id, s32 soc, vm::cptr data, u32 datalen, vm::cptr addr, u32 addrlen, vm::ptr arg); -using CellRudpAllocatorFuncAlloc = vm::ptr(u32 size); -using CellRudpAllocatorFuncFree = u32(vm::ptr ptr); +using CellRudpAllocatorFuncAlloc = vm::ptr(u32 size); +using CellRudpAllocatorFuncFree = void(vm::ptr ptr); struct CellRudpAllocator { diff --git a/rpcs3/Emu/SysCalls/Modules/cellSail.cpp b/rpcs3/Emu/SysCalls/Modules/cellSail.cpp index 95014c0638..59e5398f34 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellSail.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellSail.cpp @@ -12,7 +12,7 @@ extern Module cellSail; s32 cellSailMemAllocatorInitialize(vm::ptr pSelf, vm::ptr pCallbacks) { - cellSail.Warning("cellSailMemAllocatorInitialize(pSelf_addr=0x%x, pCallbacks_addr=0x%x)", pSelf.addr(), pCallbacks.addr()); + cellSail.Warning("cellSailMemAllocatorInitialize(pSelf=*0x%x, pCallbacks=*0x%x)", pSelf, pCallbacks); pSelf->callbacks = pCallbacks; @@ -75,7 +75,7 @@ s32 cellSailDescriptorGetMediaInfo() s32 cellSailDescriptorSetAutoSelection(vm::ptr pSelf, b8 autoSelection) { - cellSail.Warning("cellSailDescriptorSetAutoSelection(pSelf_addr=0x%x, autoSelection=%s)", pSelf.addr(), autoSelection ? "true" : "false"); + cellSail.Warning("cellSailDescriptorSetAutoSelection(pSelf=*0x%x, autoSelection=%d)", pSelf, autoSelection); if (pSelf) { pSelf->autoSelection = autoSelection; @@ -87,7 +87,7 @@ s32 cellSailDescriptorSetAutoSelection(vm::ptr pSelf, b8 aut s32 cellSailDescriptorIsAutoSelection(vm::ptr pSelf) { - cellSail.Warning("cellSailDescriptorIsAutoSelection(pSelf_addr=0x%x)", pSelf.addr()); + cellSail.Warning("cellSailDescriptorIsAutoSelection(pSelf=*0x%x)", pSelf); if (pSelf) return pSelf->autoSelection; @@ -97,7 +97,7 @@ s32 cellSailDescriptorIsAutoSelection(vm::ptr pSelf) s32 cellSailDescriptorCreateDatabase(vm::ptr pSelf, vm::ptr pDatabase, u32 size, u64 arg) { - cellSail.Warning("cellSailDescriptorCreateDatabase(pSelf=0x%x, pDatabase=0x%x, size=0x%x, arg=0x%x", pSelf.addr(), pDatabase.addr(), size, arg); + cellSail.Warning("cellSailDescriptorCreateDatabase(pSelf=*0x%x, pDatabase=*0x%x, size=0x%x, arg=0x%x", pSelf, pDatabase, size, arg); switch ((s32)pSelf->streamType) { case CELL_SAIL_STREAM_PAMF: @@ -516,17 +516,23 @@ s32 cellSailPlayerInitialize() return CELL_OK; } -s32 cellSailPlayerInitialize2(vm::ptr pSelf, vm::ptr pAllocator, vm::ptr pCallback, u64 callbackArg, - vm::ptr pAttribute, vm::ptr pResource) +s32 cellSailPlayerInitialize2( + vm::ptr pSelf, + vm::ptr pAllocator, + vm::ptr pCallback, + vm::ptr callbackArg, + vm::ptr pAttribute, + vm::ptr pResource) { - cellSail.Warning("cellSailPlayerInitialize2(pSelf_addr=0x%x, pAllocator_addr=0x%x, pCallback=0x%x, callbackArg=%d, pAttribute_addr=0x%x, pResource=0x%x)", pSelf.addr(), - pAllocator.addr(), pCallback.addr(), callbackArg, pAttribute.addr(), pResource.addr()); + cellSail.Warning("cellSailPlayerInitialize2(pSelf=*0x%x, pAllocator=*0x%x, pCallback=*0x%x, callbackArg=*0x%x, pAttribute=*0x%x, pResource=*0x%x)", + pSelf, pAllocator, pCallback, callbackArg, pAttribute, pResource); - pSelf->allocator = pAllocator; + pSelf->allocator = *pAllocator; pSelf->callback = pCallback; - pSelf->callbackArgument = callbackArg; - pSelf->attribute = pAttribute; - pSelf->resource = pResource; + pSelf->callbackArg = callbackArg; + pSelf->attribute = *pAttribute; + pSelf->resource = *pResource; + pSelf->paused = true; return CELL_OK; } @@ -617,7 +623,7 @@ s32 cellSailPlayerBoot() s32 cellSailPlayerAddDescriptor(vm::ptr pSelf, vm::ptr pDesc) { - cellSail.Warning("cellSailPlayerAddDescriptor(pSelf_addr=0x%x, pDesc_addr=0x%x)", pSelf.addr(), pDesc.addr()); + cellSail.Warning("cellSailPlayerAddDescriptor(pSelf=*0x%x, pDesc=*0x%x)", pSelf, pDesc); if (pSelf && pSelf->descriptors < 3 && pDesc) { @@ -633,14 +639,13 @@ s32 cellSailPlayerAddDescriptor(vm::ptr pSelf, vm::ptr pSelf, s32 streamType, vm::ptr pMediaInfo, vm::cptr pUri, vm::ptr ppDesc) +s32 cellSailPlayerCreateDescriptor(vm::ptr pSelf, s32 streamType, vm::ptr pMediaInfo, vm::cptr pUri, vm::pptr ppDesc) { - cellSail.Warning("cellSailPlayerCreateDescriptor(pSelf_addr=0x%x, streamType=%d, pMediaInfo_addr=0x%x, pUri_addr=0x%x, ppDesc_addr=0x%x)", pSelf.addr(), streamType, - pMediaInfo.addr(), pUri.addr(), ppDesc.addr()); + cellSail.Warning("cellSailPlayerCreateDescriptor(pSelf=*0x%x, streamType=%d, pMediaInfo=*0x%x, pUri=*0x%x, ppDesc=**0x%x)", pSelf, streamType, pMediaInfo, pUri, ppDesc); u32 descriptorAddress = vm::alloc(sizeof(CellSailDescriptor), vm::main); auto descriptor = vm::ptr::make(descriptorAddress); - *ppDesc = descriptorAddress; + *ppDesc = descriptor; descriptor->streamType = streamType; descriptor->registered = false; @@ -680,7 +685,6 @@ s32 cellSailPlayerCreateDescriptor(vm::ptr pSelf, s32 streamType cellSail.Error("Unhandled stream type: %d", streamType); } - //cellSail.Todo("pSelf_addr=0x%x, pDesc_addr=0x%x", pSelf.addr(), descriptor.addr()); //cellSailPlayerAddDescriptor(pSelf, ppDesc); return CELL_OK; @@ -688,7 +692,7 @@ s32 cellSailPlayerCreateDescriptor(vm::ptr pSelf, s32 streamType s32 cellSailPlayerDestroyDescriptor(vm::ptr pSelf, vm::ptr pDesc) { - cellSail.Todo("cellSailPlayerAddDescriptor(pSelf_addr=0x%x, pDesc_addr=0x%x)", pSelf.addr(), pDesc.addr()); + cellSail.Todo("cellSailPlayerAddDescriptor(pSelf=*0x%x, pDesc=*0x%x)", pSelf, pDesc); if (pDesc->registered) return CELL_SAIL_ERROR_INVALID_STATE; @@ -698,7 +702,7 @@ s32 cellSailPlayerDestroyDescriptor(vm::ptr pSelf, vm::ptr pSelf, vm::ptr ppDesc) { - cellSail.Warning("cellSailPlayerAddDescriptor(pSelf_addr=0x%x, pDesc_addr=0x%x)", pSelf.addr(), ppDesc.addr()); + cellSail.Warning("cellSailPlayerAddDescriptor(pSelf=*0x%x, pDesc=*0x%x)", pSelf, ppDesc); if (pSelf->descriptors > 0) { @@ -712,7 +716,7 @@ s32 cellSailPlayerRemoveDescriptor(vm::ptr pSelf, vm::ptr pSelf) { - cellSail.Warning("cellSailPlayerGetDescriptorCount(pSelf_addr=0x%x)", pSelf.addr()); + cellSail.Warning("cellSailPlayerGetDescriptorCount(pSelf=*0x%x)", pSelf); return pSelf->descriptors; } @@ -814,19 +818,19 @@ s32 cellSailPlayerCancel() s32 cellSailPlayerSetPaused(vm::ptr pSelf, b8 paused) { - cellSail.Todo("cellSailPlayerSetPaused(pSelf_addr=0x%x, paused=%d)", pSelf.addr(), paused); + cellSail.Todo("cellSailPlayerSetPaused(pSelf=*0x%x, paused=%d)", pSelf, paused); return CELL_OK; } s32 cellSailPlayerIsPaused(vm::ptr pSelf) { - cellSail.Warning("cellSailPlayerIsPaused(pSelf_addr=0x%x)", pSelf.addr()); + cellSail.Warning("cellSailPlayerIsPaused(pSelf=*0x%x)", pSelf); return pSelf->paused; } s32 cellSailPlayerSetRepeatMode(vm::ptr pSelf, s32 repeatMode, vm::ptr pCommand) { - cellSail.Warning("cellSailPlayerSetRepeatMode(pSelf_addr=0x%x, repeatMode=%d, pCommand_addr=0x%x)", pSelf.addr(), repeatMode, pCommand.addr()); + cellSail.Warning("cellSailPlayerSetRepeatMode(pSelf=*0x%x, repeatMode=%d, pCommand=*0x%x)", pSelf, repeatMode, pCommand); pSelf->repeatMode = repeatMode; pSelf->playbackCommand = pCommand; @@ -836,7 +840,7 @@ s32 cellSailPlayerSetRepeatMode(vm::ptr pSelf, s32 repeatMode, v s32 cellSailPlayerGetRepeatMode(vm::ptr pSelf, vm::ptr pCommand) { - cellSail.Warning("cellSailPlayerGetRepeatMode(pSelf_addr=0x%x, pCommand_addr=0x%x)", pSelf.addr(), pCommand.addr()); + cellSail.Warning("cellSailPlayerGetRepeatMode(pSelf=*0x%x, pCommand=*0x%x)", pSelf, pCommand); pCommand = pSelf->playbackCommand; diff --git a/rpcs3/Emu/SysCalls/Modules/cellSail.h b/rpcs3/Emu/SysCalls/Modules/cellSail.h index ec66b2a85d..182bf00cd4 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellSail.h +++ b/rpcs3/Emu/SysCalls/Modules/cellSail.h @@ -1097,17 +1097,16 @@ struct CellSailPlayerResource struct CellSailPlayer { - vm::ptr allocator; + CellSailMemAllocator allocator; vm::ptr callback; - be_t callbackArgument; - vm::ptr attribute; - vm::ptr resource; + vm::ptr callbackArg; + CellSailPlayerAttribute attribute; + CellSailPlayerResource resource; vm::ptr playbackCommand; - be_t repeatMode; - be_t descriptors; + s32 repeatMode; + s32 descriptors; vm::ptr registeredDescriptors[2]; - bool paused = true; - be_t internalData[26]; + bool paused; }; -CHECK_SIZE(CellSailPlayer, 0x100); +CHECK_MAX_SIZE(CellSailPlayer, 0x100); diff --git a/rpcs3/Emu/SysCalls/Modules/sceNp.cpp b/rpcs3/Emu/SysCalls/Modules/sceNp.cpp index c556bc8ea0..46c5612707 100644 --- a/rpcs3/Emu/SysCalls/Modules/sceNp.cpp +++ b/rpcs3/Emu/SysCalls/Modules/sceNp.cpp @@ -129,28 +129,28 @@ s32 npDrmIsAvailable(u32 k_licensee_addr, vm::cptr drm_path) s32 sceNpDrmIsAvailable(u32 k_licensee_addr, vm::cptr drm_path) { - sceNp.Warning("sceNpDrmIsAvailable(k_licensee_addr=0x%x, drm_path_addr=0x%x('%s'))", k_licensee_addr, drm_path.addr(), drm_path.get_ptr()); + sceNp.Warning("sceNpDrmIsAvailable(k_licensee=*0x%x, drm_path=*0x%x)", k_licensee_addr, drm_path); return npDrmIsAvailable(k_licensee_addr, drm_path); } s32 sceNpDrmIsAvailable2(u32 k_licensee_addr, vm::cptr drm_path) { - sceNp.Warning("sceNpDrmIsAvailable2(k_licensee_addr=0x%x, drm_path_addr=0x%x('%s'))", k_licensee_addr, drm_path.addr(), drm_path.get_ptr()); + sceNp.Warning("sceNpDrmIsAvailable2(k_licensee=*0x%x, drm_path=*0x%x)", k_licensee_addr, drm_path); return npDrmIsAvailable(k_licensee_addr, drm_path); } s32 sceNpDrmVerifyUpgradeLicense(vm::cptr content_id) { - sceNp.Todo("sceNpDrmVerifyUpgradeLicense(content_id_addr=0x%x)", content_id.addr()); + sceNp.Todo("sceNpDrmVerifyUpgradeLicense(content_id=*0x%x)", content_id); return CELL_OK; } s32 sceNpDrmVerifyUpgradeLicense2(vm::cptr content_id) { - sceNp.Todo("sceNpDrmVerifyUpgradeLicense2(content_id_addr=0x%x)", content_id.addr()); + sceNp.Todo("sceNpDrmVerifyUpgradeLicense2(content_id=*0x%x)", content_id); return CELL_OK; } @@ -163,7 +163,7 @@ s32 sceNpDrmExecuteGamePurchase() s32 sceNpDrmGetTimelimit(vm::ptr path, vm::ptr time_remain) { - sceNp.Warning("sceNpDrmGetTimelimit(path_addr=0x%x, time_remain=0x%x)", path.addr(), time_remain.addr()); + sceNp.Warning("sceNpDrmGetTimelimit(path=*0x%x, time_remain=*0x%x)", path, time_remain); *time_remain = 0x7FFFFFFFFFFFFFFFULL; @@ -280,7 +280,7 @@ s32 sceNpBasicAddFriend() s32 sceNpBasicGetFriendListEntryCount(vm::ptr count) { - sceNp.Warning("sceNpBasicGetFriendListEntryCount(count_addr=0x%x)", count.addr()); + sceNp.Warning("sceNpBasicGetFriendListEntryCount(count=*0x%x)", count); if (!g_sceNp->m_bSceNpInitialized) { @@ -337,7 +337,7 @@ s32 sceNpBasicAddPlayersHistoryAsync() s32 sceNpBasicGetPlayersHistoryEntryCount(u32 options, vm::ptr count) { - sceNp.Todo("sceNpBasicGetPlayersHistoryEntryCount(options=%d, count_addr=0x%x)", options, count.addr()); + sceNp.Todo("sceNpBasicGetPlayersHistoryEntryCount(options=%d, count=*0x%x)", options, count); if (!g_sceNp->m_bSceNpInitialized) { @@ -379,7 +379,7 @@ s32 sceNpBasicGetBlockListEntry() s32 sceNpBasicGetMessageAttachmentEntryCount(vm::ptr count) { - sceNp.Todo("sceNpBasicGetMessageAttachmentEntryCount(count_addr=0x%x)", count.addr()); + sceNp.Todo("sceNpBasicGetMessageAttachmentEntryCount(count=*0x%x)", count); if (!g_sceNp->m_bSceNpInitialized) { @@ -391,7 +391,7 @@ s32 sceNpBasicGetMessageAttachmentEntryCount(vm::ptr count) s32 sceNpBasicGetMessageAttachmentEntry(u32 index, vm::ptr from) { - sceNp.Todo("sceNpBasicGetMessageAttachmentEntry(index=%d, from_addr=0x%x)", index, from.addr()); + sceNp.Todo("sceNpBasicGetMessageAttachmentEntry(index=%d, from=*0x%x)", index, from); if (!g_sceNp->m_bSceNpInitialized) { @@ -415,7 +415,7 @@ s32 sceNpBasicGetCustomInvitationEntry() s32 sceNpBasicGetMatchingInvitationEntryCount(vm::ptr count) { - sceNp.Todo("sceNpBasicGetMatchingInvitationEntryCount(count_addr=0x%x)", count.addr()); + sceNp.Todo("sceNpBasicGetMatchingInvitationEntryCount(count=*0x%x)", count); if (!g_sceNp->m_bSceNpInitialized) { @@ -427,7 +427,7 @@ s32 sceNpBasicGetMatchingInvitationEntryCount(vm::ptr count) s32 sceNpBasicGetMatchingInvitationEntry(u32 index, vm::ptr from) { - sceNp.Todo("sceNpBasicGetMatchingInvitationEntry(index=%d, from_addr=0x%x)", index, from.addr()); + sceNp.Todo("sceNpBasicGetMatchingInvitationEntry(index=%d, from=*0x%x)", index, from); if (!g_sceNp->m_bSceNpInitialized) { @@ -439,7 +439,7 @@ s32 sceNpBasicGetMatchingInvitationEntry(u32 index, vm::ptr from) s32 sceNpBasicGetClanMessageEntryCount(vm::ptr count) { - sceNp.Todo("sceNpBasicGetClanMessageEntryCount(count_addr=0x%x)", count.addr()); + sceNp.Todo("sceNpBasicGetClanMessageEntryCount(count=*0x%x)", count); if (!g_sceNp->m_bSceNpInitialized) { @@ -451,7 +451,7 @@ s32 sceNpBasicGetClanMessageEntryCount(vm::ptr count) s32 sceNpBasicGetClanMessageEntry(u32 index, vm::ptr from) { - sceNp.Todo("sceNpBasicGetClanMessageEntry(index=%d, from_addr=0x%x)", index, from.addr()); + sceNp.Todo("sceNpBasicGetClanMessageEntry(index=%d, from=*0x%x)", index, from); if (!g_sceNp->m_bSceNpInitialized) { @@ -463,7 +463,7 @@ s32 sceNpBasicGetClanMessageEntry(u32 index, vm::ptr from) s32 sceNpBasicGetMessageEntryCount(u32 type, vm::ptr count) { - sceNp.Warning("sceNpBasicGetMessageEntryCount(type=%d, count_addr=0x%x)", type, count.addr()); + sceNp.Warning("sceNpBasicGetMessageEntryCount(type=%d, count=*0x%x)", type, count); if (!g_sceNp->m_bSceNpInitialized) { @@ -478,7 +478,7 @@ s32 sceNpBasicGetMessageEntryCount(u32 type, vm::ptr count) s32 sceNpBasicGetMessageEntry(u32 type, u32 index, vm::ptr from) { - sceNp.Todo("sceNpBasicGetMessageEntry(type=%d, index=%d, from_addr=0x%x)", type, index, from.addr()); + sceNp.Todo("sceNpBasicGetMessageEntry(type=%d, index=%d, from=*0x%x)", type, index, from); if (!g_sceNp->m_bSceNpInitialized) { @@ -490,7 +490,7 @@ s32 sceNpBasicGetMessageEntry(u32 type, u32 index, vm::ptr from) s32 sceNpBasicGetEvent(vm::ptr event, vm::ptr from, vm::ptr data, vm::ptr size) { - sceNp.Warning("sceNpBasicGetEvent(event_addr=0x%x, from_addr=0x%x, data_addr=0x%x, size_addr=0x%x)", event.addr(), from.addr(), data.addr(), size.addr()); + sceNp.Warning("sceNpBasicGetEvent(event=*0x%x, from=*0x%x, data=*0x%x, size=*0x%x)", event, from, data, size); if (!g_sceNp->m_bSceNpInitialized) { @@ -920,7 +920,7 @@ s32 sceNpManagerUnregisterCallback() s32 sceNpManagerGetStatus(vm::ptr status) { - sceNp.Warning("sceNpManagerGetStatus(status_addr=0x%x)", status.addr()); + sceNp.Warning("sceNpManagerGetStatus(status=*0x%x)", status); if (!g_sceNp->m_bSceNpInitialized) { @@ -983,7 +983,7 @@ s32 sceNpManagerGetAccountAge() s32 sceNpManagerGetContentRatingFlag(vm::ptr isRestricted, vm::ptr age) { - sceNp.Warning("sceNpManagerGetContentRatingFlag(isRestricted_addr=0x%x, age_addr=0x%x)", isRestricted.addr(), age.addr()); + sceNp.Warning("sceNpManagerGetContentRatingFlag(isRestricted=*0x%x, age=*0x%x)", isRestricted, age); if (!g_sceNp->m_bSceNpInitialized) { diff --git a/rpcs3/Emu/SysCalls/Modules/sceNp2.cpp b/rpcs3/Emu/SysCalls/Modules/sceNp2.cpp index 471bf1c236..d848c52f50 100644 --- a/rpcs3/Emu/SysCalls/Modules/sceNp2.cpp +++ b/rpcs3/Emu/SysCalls/Modules/sceNp2.cpp @@ -64,7 +64,7 @@ s32 sceNpMatching2Init(u32 poolsize, s32 priority) s32 sceNpMatching2Init2(u32 poolsize, s32 priority, vm::ptr param) { - sceNp2.Todo("sceNpMatching2Init2(poolsize=%d, priority=%d, param_addr=0x%x)", poolsize, priority, param.addr()); + sceNp2.Todo("sceNpMatching2Init2(poolsize=%d, priority=%d, param=*0x%x)", poolsize, priority, param); if (!g_sceNp2->m_bSceNp2Initialized) { diff --git a/rpcs3/Emu/SysCalls/Modules/sysPrxForUser.cpp b/rpcs3/Emu/SysCalls/Modules/sysPrxForUser.cpp index 556bb0d6c4..cfc84ab00e 100644 --- a/rpcs3/Emu/SysCalls/Modules/sysPrxForUser.cpp +++ b/rpcs3/Emu/SysCalls/Modules/sysPrxForUser.cpp @@ -838,15 +838,15 @@ s64 sys_prx_exitspawn_with_level() return CELL_OK; } -s32 sys_spu_elf_get_information(u32 elf_img, vm::ptr entry, vm::ptr nseg) +s32 sys_spu_elf_get_information(u32 elf_img, vm::ptr entry, vm::ptr nseg) { - sysPrxForUser.Todo("sys_spu_elf_get_information(elf_img=0x%x, entry_addr=0x%x, nseg_addr=0x%x)", elf_img, entry.addr(), nseg.addr()); + sysPrxForUser.Todo("sys_spu_elf_get_information(elf_img=0x%x, entry=*0x%x, nseg=*0x%x)", elf_img, entry, nseg); return CELL_OK; } s32 sys_spu_elf_get_segments(u32 elf_img, vm::ptr segments, s32 nseg) { - sysPrxForUser.Todo("sys_spu_elf_get_segments(elf_img=0x%x, segments_addr=0x%x, nseg=0x%x)", elf_img, segments.addr(), nseg); + sysPrxForUser.Todo("sys_spu_elf_get_segments(elf_img=0x%x, segments=*0x%x, nseg=0x%x)", elf_img, segments, nseg); return CELL_OK; } diff --git a/rpcs3/Emu/SysCalls/Modules/sys_net.cpp b/rpcs3/Emu/SysCalls/Modules/sys_net.cpp index eb01d24b88..0d039d8b73 100644 --- a/rpcs3/Emu/SysCalls/Modules/sys_net.cpp +++ b/rpcs3/Emu/SysCalls/Modules/sys_net.cpp @@ -364,8 +364,7 @@ namespace sys_net_func s32 socketselect(s32 nfds, vm::ptr readfds, vm::ptr writefds, vm::ptr exceptfds, vm::ptr timeout) { - sys_net.Warning("socketselect(nfds=%d, readfds_addr=0x%x, writefds_addr=0x%x, exceptfds_addr=0x%x, timeout_addr=0x%x)", - nfds, readfds.addr(), writefds.addr(), exceptfds.addr(), timeout.addr()); + sys_net.Warning("socketselect(nfds=%d, readfds=*0x%x, writefds=*0x%x, exceptfds=*0x%x, timeout=*0x%x)", nfds, readfds, writefds, exceptfds, timeout); timeval _timeout; diff --git a/rpcs3/Emu/SysCalls/Modules/sys_net.h b/rpcs3/Emu/SysCalls/Modules/sys_net.h index b42ac38e3e..070f161d1b 100644 --- a/rpcs3/Emu/SysCalls/Modules/sys_net.h +++ b/rpcs3/Emu/SysCalls/Modules/sys_net.h @@ -38,6 +38,6 @@ struct sys_net_fd_set struct sys_net_timeval { - be_t tv_sec; - be_t tv_usec; -}; \ No newline at end of file + be_t tv_sec; + be_t tv_usec; +}; diff --git a/rpcs3/Emu/SysCalls/SC_FUNC.h b/rpcs3/Emu/SysCalls/SC_FUNC.h index 64b22680d2..489257aa41 100644 --- a/rpcs3/Emu/SysCalls/SC_FUNC.h +++ b/rpcs3/Emu/SysCalls/SC_FUNC.h @@ -218,28 +218,6 @@ namespace ppu_func_detail } }; - template<> - struct func_binder // redundant specialization to bypass internal compiler error in MSVC - { - using func_t = void(*)(); - - static force_inline void do_call(PPUThread& CPU, func_t func) - { - func(); - } - }; - - template - struct func_binder // redundant specialization to bypass internal compiler error in MSVC - { - using func_t = RT(*)(); - - static force_inline void do_call(PPUThread& CPU, func_t func) - { - bind_result::value>::put_result(CPU, func()); - } - }; - template struct func_binder { diff --git a/rpcs3/Emu/SysCalls/lv2/sys_process.cpp b/rpcs3/Emu/SysCalls/lv2/sys_process.cpp index 186c943626..94dc1c2c1f 100644 --- a/rpcs3/Emu/SysCalls/lv2/sys_process.cpp +++ b/rpcs3/Emu/SysCalls/lv2/sys_process.cpp @@ -324,7 +324,7 @@ s32 process_get_sdk_version(u32 pid, s32& ver) s32 sys_process_get_sdk_version(u32 pid, vm::ptr version) { - sys_process.Warning("sys_process_get_sdk_version(pid=0x%x, version_addr=0x%x)", pid, version.addr()); + sys_process.Warning("sys_process_get_sdk_version(pid=0x%x, version=*0x%x)", pid, version); s32 sdk_ver; s32 ret = process_get_sdk_version(pid, sdk_ver); @@ -347,8 +347,8 @@ s32 sys_process_kill(u32 pid) s32 sys_process_wait_for_child(u32 pid, vm::ptr status, u64 unk) { - sys_process.Todo("sys_process_wait_for_child(pid=0x%x, status_addr=0x%x, unk=0x%llx", - pid, status.addr(), unk); + sys_process.Todo("sys_process_wait_for_child(pid=0x%x, status=*0x%x, unk=0x%llx", pid, status, unk); + return CELL_OK; } diff --git a/rpcs3/Emu/SysCalls/lv2/sys_spu.cpp b/rpcs3/Emu/SysCalls/lv2/sys_spu.cpp index 3c25aff897..3bba13e75d 100644 --- a/rpcs3/Emu/SysCalls/lv2/sys_spu.cpp +++ b/rpcs3/Emu/SysCalls/lv2/sys_spu.cpp @@ -61,7 +61,7 @@ s32 sys_spu_initialize(u32 max_usable_spu, u32 max_raw_spu) s32 sys_spu_image_open(vm::ptr img, vm::cptr path) { - sys_spu.Warning("sys_spu_image_open(img_addr=0x%x, path_addr=0x%x [%s])", img.addr(), path.addr(), path.get_ptr()); + sys_spu.Warning("sys_spu_image_open(img=*0x%x, path=*0x%x)", img, path); vfsFile f(path.get_ptr()); if(!f.IsOpened()) diff --git a/rpcs3/Emu/SysCalls/lv2/sys_tty.cpp b/rpcs3/Emu/SysCalls/lv2/sys_tty.cpp index 0c63d21500..1460056046 100644 --- a/rpcs3/Emu/SysCalls/lv2/sys_tty.cpp +++ b/rpcs3/Emu/SysCalls/lv2/sys_tty.cpp @@ -8,9 +8,9 @@ SysCallBase sys_tty("sys_tty"); -s32 sys_tty_read(s32 ch, vm::ptr buf, u32 len, vm::ptr preadlen) +s32 sys_tty_read(s32 ch, vm::ptr buf, u32 len, vm::ptr preadlen) { - sys_tty.Error("sys_tty_read(ch=%d, buf_addr=0x%x, len=%d, preadlen_addr=0x%x)", ch, buf.addr(), len, preadlen.addr()); + sys_tty.Error("sys_tty_read(ch=%d, buf=*0x%x, len=%d, preadlen=*0x%x)", ch, buf, len, preadlen); // We currently do not support reading from the Console *preadlen = 0; @@ -18,31 +18,25 @@ s32 sys_tty_read(s32 ch, vm::ptr buf, u32 len, vm::ptr preadlen) return CELL_OK; } -s32 sys_tty_write(s32 ch, vm::cptr buf, u32 len, vm::ptr pwritelen) +s32 sys_tty_write(s32 ch, vm::cptr buf, u32 len, vm::ptr pwritelen) { - sys_tty.Log("sys_tty_write(ch=%d, buf_addr=0x%x, len=%d, preadlen_addr=0x%x)", ch, buf.addr(), len, pwritelen.addr()); + sys_tty.Log("sys_tty_write(ch=%d, buf=*0x%x, len=%d, pwritelen=*0x%x)", ch, buf, len, pwritelen); if (ch > 15) { - sys_tty.Error("sys_tty_write(): specified channel was higher than 15."); return CELL_EINVAL; } - if ((s32) len <= 0) + if ((s32)len <= 0) { - sys_tty.Error("sys_tty_write(): specified length was 0."); + *pwritelen = 0; + return CELL_OK; } - const std::string data((const char*)buf.get_ptr(), len); - - if (ch == SYS_TTYP_PPU_STDOUT || ch == SYS_TTYP_SPU_STDOUT || (ch >= SYS_TTYP_USER1 && ch <= SYS_TTYP_USER13)) { - LOG_NOTICE(TTY, "%s", data.c_str()); - } - if (ch == SYS_TTYP_PPU_STDERR) { - LOG_ERROR(TTY, "%s", data.c_str()); - } + log_message(Log::LogType::TTY, ch == SYS_TTYP_PPU_STDERR ? Log::Severity::Error : Log::Severity::Notice, { buf.get_ptr(), len }); - *pwritelen = (u32)data.size(); + *pwritelen = len; + return CELL_OK; } diff --git a/rpcs3/Emu/SysCalls/lv2/sys_tty.h b/rpcs3/Emu/SysCalls/lv2/sys_tty.h index 244d4d2d8c..7c7f7ddba0 100644 --- a/rpcs3/Emu/SysCalls/lv2/sys_tty.h +++ b/rpcs3/Emu/SysCalls/lv2/sys_tty.h @@ -25,5 +25,5 @@ enum }; // SysCalls -s32 sys_tty_read(s32 ch, vm::ptr buf, u32 len, vm::ptr preadlen); -s32 sys_tty_write(s32 ch, vm::cptr buf, u32 len, vm::ptr pwritelen); +s32 sys_tty_read(s32 ch, vm::ptr buf, u32 len, vm::ptr preadlen); +s32 sys_tty_write(s32 ch, vm::cptr buf, u32 len, vm::ptr pwritelen);