00001 #ifndef _MEMSET_H_ 00002 #define _MEMSET_H_ 00003 00004 #include <nlibc.h> 00005 #include <inttypes.h> 00006 00007 #define memset(DEST, C, BYTES) wmemset((DEST),(C),(((BYTES)+15)>>4)) 00008 00009 #ifndef __HAS_MAIN 00010 extern void *wmemset(void *dest, int c, size_t words); 00011 #else 00012 #if !defined(__cflow_processed) || defined(_uses_wmemset_memset_h) 00013 #define _BLEN 8 00014 void *wmemset(void *dest, int c, size_t words) { 00015 typedef struct { int c[_BLEN]; } bursttype; 00016 register int i, n, ileft; 00017 register bursttype burst, *bdest; 00018 00019 burst.c[0] = c; 00020 burst.c[1] = c; 00021 burst.c[2] = c; 00022 burst.c[3] = c; 00023 burst.c[4] = c; 00024 burst.c[5] = c; 00025 burst.c[6] = c; 00026 burst.c[7] = c; 00027 00028 n = words / _BLEN; 00029 bdest = (bursttype *) dest; 00030 for (i = 0; i < n; i++) { 00031 bdest[i] = burst; 00032 } 00033 00034 for (i = i*_BLEN; i < words; i++) { 00035 *(((int *) dest) + i) = c; 00036 } 00037 00038 return dest; 00039 00040 } 00041 #undef _BLEN 00042 #endif // _uses_wmemset_memset_h 00043 #endif // Has Main 00044 00045 #endif // _MEMSET_H_