2020-12-05 13:08:24 +01:00
|
|
|
#include "stdafx.h"
|
2016-03-21 20:42:14 +01:00
|
|
|
#include "Emu/Cell/PPUModule.h"
|
2016-08-19 23:14:10 +02:00
|
|
|
|
2018-08-25 14:39:00 +02:00
|
|
|
LOG_CHANNEL(sys_libc);
|
2016-03-21 20:42:14 +01:00
|
|
|
|
2018-10-26 12:08:45 +02:00
|
|
|
vm::ptr<void> sys_libc_memcpy(vm::ptr<void> dst, vm::cptr<void> src, u32 size)
|
2016-03-21 20:42:14 +01:00
|
|
|
{
|
2017-04-26 22:38:24 +02:00
|
|
|
sys_libc.trace("memcpy(dst=*0x%x, src=*0x%x, size=0x%x)", dst, src, size);
|
2016-03-21 20:42:14 +01:00
|
|
|
|
2017-04-26 22:38:24 +02:00
|
|
|
::memcpy(dst.get_ptr(), src.get_ptr(), size);
|
2018-10-26 12:08:45 +02:00
|
|
|
return dst;
|
|
|
|
|
}
|
|
|
|
|
vm::ptr<void> sys_libc_memset(vm::ptr<void> dst, s32 value, u32 size)
|
|
|
|
|
{
|
|
|
|
|
sys_libc.trace("memset(dst=*0x%x, value=0x%x, size=0x%x)", dst, value, size);
|
|
|
|
|
|
|
|
|
|
::memset(dst.get_ptr(), value, size);
|
|
|
|
|
return dst;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
vm::ptr<void> sys_libc_memmove(vm::ptr<void> dst, vm::ptr<void> src, u32 size)
|
|
|
|
|
{
|
|
|
|
|
sys_libc.trace("memmove(dst=*0x%x, src=*0x%x, size=0x%x)", dst, src, size);
|
|
|
|
|
|
|
|
|
|
::memmove(dst.get_ptr(), src.get_ptr(), size);
|
|
|
|
|
return dst;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
u32 sys_libc_memcmp(vm::ptr<void> buf1, vm::ptr<void> buf2, u32 size)
|
|
|
|
|
{
|
|
|
|
|
sys_libc.trace("memcmp(buf1=*0x%x, buf2=*0x%x, size=0x%x)", buf1, buf2, size);
|
|
|
|
|
|
|
|
|
|
return ::memcmp(buf1.get_ptr(), buf2.get_ptr(), size);
|
2016-03-21 20:42:14 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
DECLARE(ppu_module_manager::sys_libc)("sys_libc", []()
|
2025-04-05 21:50:45 +02:00
|
|
|
{
|
|
|
|
|
REG_FNID(sys_libc, "memcpy", sys_libc_memcpy)
|
|
|
|
|
/*.flag(MFF_FORCED_HLE)*/;
|
|
|
|
|
REG_FNID(sys_libc, "memset", sys_libc_memset);
|
|
|
|
|
REG_FNID(sys_libc, "memmove", sys_libc_memmove);
|
|
|
|
|
REG_FNID(sys_libc, "memcmp", sys_libc_memcmp);
|
|
|
|
|
});
|