tizen 2.4 release
[kernel/u-boot-tm1.git] / nand_fdl / common / src / fdl_stdio.c
1 #include <asm/arch/fdl_stdio.h>
2
3 void *FDL_memcpy (void *dst, const void *src, unsigned int count)
4 {
5     void *ret = dst;
6     unsigned int *tmp_dst = (unsigned int *) dst;
7     unsigned int word_num, i;
8     unsigned int value;
9
10     
11 #if ((defined(SC8800S_LITTLE_ENDIAN) && defined(_BIG_ENDIAN))) || (defined(FDL_ENDIAN_SWITCH))//temp for data swap in fdl1
12     count =  count / 4;
13
14     while (count-->0)
15     {
16         value = * (unsigned int *) src;
17         *tmp_dst = ( (value & 0x000000ff) <<24) | ( (value & 0xff000000) >>24) | ( (value & 0x0000ff00) <<8) | ( (value & 0x00ff0000) >>8);
18         tmp_dst = (unsigned int *) tmp_dst + 1;
19         src = (unsigned int *) src + 1;
20     }
21
22 #else
23
24     while (count-->0)
25     {
26         * (char *) dst = * (char *) src;
27         dst = (char *) dst + 1;
28         src = (char *) src + 1;
29     }
30
31 #endif
32
33
34     return ret;
35 }
36
37 void *FDL_memset (void *dst, int c, unsigned int count)
38 {
39     void *ret = dst;
40
41     while (count--)
42     {
43         * (char *) dst = (char) c;
44         dst = (char *) dst + 1;
45     }
46
47     return ret;
48 }
49
50 /*****************************************************************************/
51 //  Description:
52 //  Global resource dependence:
53 //  Author:         Daniel.Ding
54 //  Note:
55 /*****************************************************************************/
56 unsigned short EndianConv_16 (unsigned short value)
57 {
58 #ifdef _LITTLE_ENDIAN
59     return (value >> 8 | value << 8);
60 #else
61     return value;
62 #endif
63 }
64
65 unsigned int EndianConv_32 (unsigned int value)
66 {
67 #ifdef _LITTLE_ENDIAN
68     unsigned int nTmp = 0;
69         nTmp = (value >> 24 | value << 24);
70
71     nTmp |= ( (value >> 8) & 0x0000FF00);
72     nTmp |= ( (value << 8) & 0x00FF0000);
73     return nTmp;
74 #else
75     return value;
76 #endif
77 }
78