source: soft/giet_vm/libs/libsrl/srl_private_types.c @ 160

Last change on this file since 160 was 160, checked in by karaoui, 12 years ago

giet-vm new version

File size: 1.5 KB
Line 
1#include "srl_private_types.h"
2
3
4////////////////////////////////////////////////////////////////////////////////////////
5//  mempcy()
6// GCC requires this function. Taken from MutekH.
7////////////////////////////////////////////////////////////////////////////////////////
8void *memcpy(void *_dst, const void *_src, unsigned int size)
9{
10    unsigned int *dst = _dst;
11    const unsigned int *src = _src;
12    if ( ! ((unsigned int)dst & 3) && ! ((unsigned int)src & 3) )
13        while (size > 3) {
14            *dst++ = *src++;
15            size -= 4;
16        }
17
18    unsigned char *cdst = (unsigned char*)dst;
19    unsigned char *csrc = (unsigned char*)src;
20
21    while (size--) {
22        *cdst++ = *csrc++;
23    }
24    return _dst;
25}
26
27////////////////////////////////////////////////////////////////////////////////////////
28//  mempcy()
29// GCC requires this function. Taken from MutekH.
30////////////////////////////////////////////////////////////////////////////////////////
31inline void * memset(void *dst, int s, size_t count)
32{
33/*
34  int8_t s = _s;
35  const reg_t v = (uint8_t)s * (reg_t)0x0101010101010101LL;
36  int8_t *a = dst;
37  reg_t *r;
38
39  // align
40  while ( ((uintptr_t *)a & reg_t_log2_m1) && count )
41    count--, *a++ = s;
42
43  size_t ucount = count & reg_t_log2_m1;
44  count &= ~reg_t_log2_m1;
45
46  for (r = (reg_t*)a; count; count -= sizeof(reg_t))
47      *r++ = v;
48
49  for (a = (int8_t*)r; ucount; ucount--)
50      *a++ = s;
51
52*/
53        char *a = (char *) dst;
54        while (count--){
55                *a++ = (char)s;
56        }
57
58        return dst;
59}
Note: See TracBrowser for help on using the repository browser.