Subversion Repositories HelenOS

Rev

Rev 534 | Rev 1264 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 534 Rev 882
Line 27... Line 27...
27
 */
27
 */
28
 
28
 
29
#include <memstr.h>
29
#include <memstr.h>
30
#include <arch/types.h>
30
#include <arch/types.h>
31
 
31
 
32
 
-
 
33
/** Copy block of memory
32
/** Copy block of memory
34
 *
33
 *
35
 * Copy cnt bytes from src address to dst address.
34
 * Copy cnt bytes from src address to dst address.
36
 * The copying is done byte-by-byte. The source
35
 * The copying is done word-by-word and then byte-by-byte.
37
 * and destination memory areas cannot overlap.
36
 * The source and destination memory areas cannot overlap.
38
 *
37
 *
39
 * @param src Origin address to copy from.
38
 * @param src Origin address to copy from.
40
 * @param dst Origin address to copy to.
39
 * @param dst Origin address to copy to.
41
 * @param cnt Number of bytes to copy.
40
 * @param cnt Number of bytes to copy.
42
 *
41
 *
43
 */
42
 */
44
void *_memcpy(void * dst, const void *src, size_t cnt)
43
void *_memcpy(void * dst, const void *src, size_t cnt)
45
{
44
{
46
    int i;
45
    int i, j;
47
   
46
   
48
    for (i=0; i<cnt; i++)
47
    for (i = 0; i < cnt/sizeof(__native); i++)
49
        *((__u8 *) (dst + i)) = *((__u8 *) (src + i));
48
        ((__native *) dst)[i] = ((__native *) src)[i];
-
 
49
       
-
 
50
    for (j = 0; j < cnt%sizeof(__native); j++)
-
 
51
        ((__u8 *)(((__native *) dst) + i))[j] = ((__u8 *)(((__native *) src) + i))[j];
50
       
52
       
51
    return (char *)src;
53
    return (char *)src;
52
}
54
}
53
 
55
 
54
/** Fill block of memory
56
/** Fill block of memory