rpcsx/ps3fw/cellSpudll.cpp
DH 62ad27d1e2 split rpcs3 and hle libraries
merge rpcs3 utilities
2025-04-08 19:46:57 +03:00

69 lines
1.6 KiB
C++

#include "stdafx.h"
#include "Emu/Cell/PPUModule.h"
#include "cellSpudll.h"
LOG_CHANNEL(cellSpudll);
template <>
void fmt_class_string<CellSpudllError>::format(std::string& out, u64 arg)
{
format_enum(out, arg, [](auto error)
{
switch (error)
{
STR_CASE(CELL_SPUDLL_ERROR_INVAL);
STR_CASE(CELL_SPUDLL_ERROR_STAT);
STR_CASE(CELL_SPUDLL_ERROR_ALIGN);
STR_CASE(CELL_SPUDLL_ERROR_NULL_POINTER);
STR_CASE(CELL_SPUDLL_ERROR_SRCH);
STR_CASE(CELL_SPUDLL_ERROR_UNDEF);
STR_CASE(CELL_SPUDLL_ERROR_FATAL);
}
return unknown;
});
}
error_code cellSpudllGetImageSize(vm::ptr<u32> psize, vm::cptr<void> so_elf, vm::cptr<CellSpudllHandleConfig> config)
{
cellSpudll.todo("cellSpudllGetImageSize(psize=*0x%x, so_elf=*0x%x, config=*0x%x)", psize, so_elf, config);
if (!psize || !so_elf)
{
return CELL_SPUDLL_ERROR_NULL_POINTER;
}
// todo
return CELL_OK;
}
error_code cellSpudllHandleConfigSetDefaultValues(vm::ptr<CellSpudllHandleConfig> config)
{
cellSpudll.trace("cellSpudllHandleConfigSetDefaultValues(config=*0x%x)", config);
if (!config)
{
return CELL_SPUDLL_ERROR_NULL_POINTER;
}
config->mode = 0;
config->dmaTag = 0;
config->numMaxReferred = 16;
config->numMaxDepend = 16;
config->unresolvedSymbolValueForFunc = vm::null;
config->unresolvedSymbolValueForObject = vm::null;
config->unresolvedSymbolValueForOther = vm::null;
std::memset(config->__reserved__, 0, sizeof(config->__reserved__));
return CELL_OK;
}
DECLARE(ppu_module_manager::cellSpudll)("cellSpudll", []()
{
REG_FUNC(cellSpudll, cellSpudllGetImageSize);
REG_FUNC(cellSpudll, cellSpudllHandleConfigSetDefaultValues).flag(MFF_PERFECT);
});