summaryrefslogtreecommitdiff
path: root/src/boot/O2/__osMemcpy.c
blob: 2e25b23f087143d66dd9aaefd52b61b17cbc9b08 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "global.h"

void* __osMemcpy(void* dst, void* src, size_t size) {
    u8* _dst = dst;
    u8* _src = src;
    register s32 rem;

    if (_dst == _src) {
        return dst;
    }
    if (_dst < _src) {
        for (rem = size--; rem != 0; rem = size--) {
            *_dst++ = *_src++;
        }
    } else {
        _dst += size - 1;
        _src += size - 1;
        for (rem = size--; rem != 0; rem = size--) {
            *_dst-- = *_src--;
        }
    }
    return dst;
}