Line 54... |
Line 54... |
unsigned long value;
|
unsigned long value;
|
asm("l.mfspr\t\t%0,%1,0" : "=r" (value) : "r" (spr));
|
asm("l.mfspr\t\t%0,%1,0" : "=r" (value) : "r" (spr));
|
return value;
|
return value;
|
}
|
}
|
|
|
void *memcpy (void *dstv, const void *srcv, unsigned long length)
|
|
{
|
|
char *dst = dstv;
|
|
const char *src = (const char *) srcv;
|
|
|
|
while (length--)
|
|
*dst++ = *src++;
|
|
return dst;
|
|
}
|
|
|
|
void *memmove (void *dstv, const void *srcv, unsigned long length)
|
|
{
|
|
char *dst = dstv;
|
|
const char *src = srcv;
|
|
|
|
/* Copy backwards? */
|
|
if (src < dst && dst < src + length) {
|
|
src += length;
|
|
dst += length;
|
|
while (length--) *--dst = *--src;
|
|
return dstv;
|
|
} else return memcpy (dstv, srcv, length);
|
|
}
|
|
|
|
int memcmp (void *dstv, const void *srcv, unsigned long length)
|
|
{
|
|
char *dst = dstv;
|
|
const char *src = (const char *) srcv;
|
|
|
|
while (length--)
|
|
if(*dst++ != *src++) {
|
|
if(*(--dst) > *(--src))
|
|
return 1;
|
|
else
|
|
return -1;
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
void *memset (void *dstvoid, const char data, unsigned long length)
|
|
{
|
|
char *dst = dstvoid;
|
|
while (length--) *dst++ = data;
|
|
return dst;
|
|
}
|
|
|
|
void *memchr(const void *s, int c, unsigned long n)
|
|
{
|
|
char *sc = (char *)s;
|
|
int i;
|
|
for (i = 0; i < n; i++)
|
|
if (*sc == c) return sc;
|
|
else sc++;
|
|
return sc;
|
|
}
|
|
|
|
int strlen (const char *src)
|
|
{
|
|
int len = 0;
|
|
while (*src++) len++;
|
|
return len;
|
|
}
|
|
|
|
int strcmp (const char *s1, const char *s2)
|
|
{
|
|
while (*s1 != '\0' && *s1 == *s2) {
|
|
s1++;
|
|
s2++;
|
|
}
|
|
return (*(unsigned char *) s1) - (*(unsigned char *) s2);
|
|
}
|
|
|
|
char *strcpy (char *dst0, char *src0)
|
|
{
|
|
char *s = dst0;
|
|
while ((*dst0++ = *src0++));
|
|
return s;
|
|
}
|
|
|
|
void reset_timer (void)
|
|
{
|
|
timestamp = 0;
|
|
}
|
|
|
|
/* Parses hex or decimal number */
|
/* Parses hex or decimal number */
|
unsigned long strtoul (const char *str, char **endptr, int base)
|
unsigned long strtoul (const char *str, char **endptr, int base)
|
{
|
{
|
unsigned long number = 0;
|
unsigned long number = 0;
|