37 lines
698 B
C
37 lines
698 B
C
#include "memory.h"
|
|
|
|
#if !CRTLIB
|
|
|
|
__attribute((section(".text.memcpy")))
|
|
void *memcpy(void *__restrict dst, const void *__restrict src, u64 n)
|
|
{
|
|
for (u64 i = 0; i < n; ++i) {
|
|
((u8 *)dst)[i] = ((u8 *)src)[i];
|
|
}
|
|
return dst;
|
|
}
|
|
|
|
__attribute((section(".text.memset")))
|
|
void *memset(void *dst, i32 c, u64 n)
|
|
{
|
|
for (u64 i = 0; i < n; ++i) {
|
|
((u8 *)dst)[i] = c;
|
|
}
|
|
return dst;
|
|
}
|
|
|
|
__attribute((section(".text.memcmp")))
|
|
i32 memcmp(const void *p1, const void *p2, u64 n)
|
|
{
|
|
i32 res = 0;
|
|
for (u64 i = 0; i < n; ++i) {
|
|
res = ((u8 *)p1)[i] - ((u8 *)p2)[i];
|
|
if (res != 0) {
|
|
break;
|
|
}
|
|
}
|
|
return res;
|
|
}
|
|
|
|
#endif /* !CRTLIB */
|