OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [orpmon/] [common/] [support.c] - Diff between revs 878 and 921

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 878 Rev 921
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;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.