power_play/src/base/base_memory.c

50 lines
997 B
C

////////////////////////////////////////////////////////////
//~ Crtlib mem op stubs
#if !IsCrtlibEnabled
//- memcpy
__attribute((section(".text.memcpy")))
void *memcpy(void *__restrict dst, const void *__restrict src, u64 count)
{
char *dst_pchar = dst;
char *src_pchar = src;
for (u64 i = 0; i < count; ++i)
{
dst_pchar[i] = src_pchar[i];
}
return dst;
}
//- memset
__attribute((section(".text.memset")))
void *memset(void *dst, i32 c, u64 count)
{
char *dst_pchar = dst;
for (u64 i = 0; i < count; ++i)
{
dst_pchar[i] = (char)c;
}
return dst;
}
//- memcmp
__attribute((section(".text.memcmp")))
i32 memcmp(const void *p1, const void *p2, u64 count)
{
i32 result = 0;
char *p1_pchar = p1;
char *p2_pchar = p2;
for (u64 i = 0; i < count; ++i)
{
result = p1_pchar[i] - p2_pchar[i];
if (result != 0)
{
break;
}
}
return result;
}
#endif /* !IsCrtlibEnabled */