#include "setarch.h" | |
#include "defines.h" | |
; dst A0 | |
; src A1 | |
; len A2 | |
.global ___reg_memcpy | |
___reg_memcpy: | |
MOVP A0P,A3P ; keep copy of result | |
ADDP A2P,A0P ; point to end of dst | |
ADDP A2P,A1P ; point to end of src | |
CMPP A0P,A3P ; see if anything to do | |
beq quit | |
loop: | |
#ifdef __NORMAL_MODE__ | |
sub #1,A1P ; point to byte | |
#else | |
subs #1,A1P ; point to byte | |
#endif | |
mov.b @A1P,A2L ; get byte | |
mov.b A2L,@-A0P ; save byte | |
CMPP A0P,A3P ; at the front again ? | |
bne loop | |
; return with A0 pointing to dst | |
quit: rts | |