* AcessOS Microkernel Version
* lib.c
*/
-#include <common.h>
+#include <acess.h>
// === CODE ===
void Spinlock(int *lock)
}
/**
- * \fn void *memset(void *Dest, int Val, Uint Num)
+ * \fn void *memset(void *Dest, int Val, size_t Num)
* \brief Do a byte granuality set of Dest
*/
-void *memset(void *Dest, int Val, Uint Num)
+void *memset(void *Dest, int Val, size_t Num)
{
__asm__ __volatile__ (
"rep stosl;\n\t"
return Dest;
}
/**
- * \fn void *memsetd(void *Dest, Uint Val, Uint Num)
+ * \brief Set double words
*/
-void *memsetd(void *Dest, Uint Val, Uint Num)
+void *memsetd(void *Dest, Uint32 Val, size_t Num)
{
__asm__ __volatile__ ("rep stosl" :: "D" (Dest), "a" (Val), "c" (Num));
return Dest;
}
/**
- * \fn int memcmp(const void *m1, const void *m2, Uint Num)
+ * \fn int memcmp(const void *m1, const void *m2, size_t Num)
* \brief Compare two pieces of memory
*/
-int memcmp(const void *m1, const void *m2, Uint Num)
+int memcmp(const void *m1, const void *m2, size_t Num)
{
while(Num--)
{
}
/**
- * \fn void *memcpy(void *Dest, void *Src, Uint Num)
+ * \fn void *memcpy(void *Dest, const void *Src, size_t Num)
+ * \brief Copy \a Num bytes from \a Src to \a Dest
*/
-void *memcpy(void *Dest, const void *Src, Uint Num)
+void *memcpy(void *Dest, const void *Src, size_t Num)
{
if((Uint)Dest & 3 || (Uint)Src & 3)
__asm__ __volatile__ ("rep movsb" :: "D" (Dest), "S" (Src), "c" (Num));
return Dest;
}
/**
- * \fn void *memcpyd(void *Dest, void *Src, Uint Num)
+ * \fn void *memcpyd(void *Dest, const void *Src, size_t Num)
+ * \brief Copy \a Num DWORDs from \a Src to \a Dest
*/
-void *memcpyd(void *Dest, const void *Src, Uint Num)
+void *memcpyd(void *Dest, const void *Src, size_t Num)
{
__asm__ __volatile__ ("rep movsl" :: "D" (Dest), "S" (Src), "c" (Num));
return Dest;
{
return ((Val&0xFF)<<8) | ((Val>>8)&0xFF);
}
+Uint32 LittleEndian32(Uint32 Val)
+{
+ return Val;
+}
+Uint32 BigEndian32(Uint32 Val)
+{
+ return ((Val&0xFF)<<24) | ((Val&0xFF00)<<8) | ((Val>>8)&0xFF00) | ((Val>>24)&0xFF);
+}
// --- EXPORTS ---
EXPORT(memcpy); EXPORT(memset);
+EXPORT(memcmp);
//EXPORT(memcpyw); EXPORT(memsetw);
EXPORT(memcpyd); EXPORT(memsetd);
EXPORT(inb); EXPORT(inw); EXPORT(ind);
EXPORT(outb); EXPORT(outw); EXPORT(outd);
EXPORT(__udivdi3); EXPORT(__umoddi3);
+
+EXPORT(LittleEndian16); EXPORT(BigEndian16);
+EXPORT(LittleEndian32); EXPORT(BigEndian32);