summaryrefslogtreecommitdiffstats
path: root/src/arch/e1/include/bits/string.h
blob: b6df2fcbc8e9b6e0e6ffc3f3f7b76e3ec78cfe2f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#ifndef ETHERBOOT_BITS_STRING_H
#define ETHERBOOT_BITS_STRING_H

/* define inline optimized string functions here */

#define	__HAVE_ARCH_MEMCPY
//extern void * memcpy(const void *d, const void *s, size_t count);

#define __HAVE_ARCH_MEMCMP
//extern int memcmp(const void * s ,const void * d ,size_t );

#define __HAVE_ARCH_MEMSET
//extern void * memset(const void * s, int c, size_t count);

#define __HAVE_ARCH_MEMMOVE
static inline void *memmove(void *s1, const void *s2, size_t n) {

   unsigned int i;
   char *tmp = s1;
   char *cs2 = (char *) s2;

   if (tmp < cs2) {
      for(i=0; i<n; ++i, ++tmp, ++cs2)
           *tmp =  *cs2;
   }
   else {
      tmp += n - 1;
      cs2 += n - 1;
      for(i=0; i<n; ++i, --tmp, --cs2)
              *tmp = *cs2;
   }
   return(s1);
}

#endif /* ETHERBOOT_BITS_STRING_H */