33 lines
394 B
ArmAsm
33 lines
394 B
ArmAsm
.global memcpy
|
|
.global __memcpy_fwd
|
|
.hidden __memcpy_fwd
|
|
.type memcpy,@function
|
|
memcpy:
|
|
__memcpy_fwd:
|
|
push %esi
|
|
push %edi
|
|
mov 12(%esp),%edi
|
|
mov 16(%esp),%esi
|
|
mov 20(%esp),%ecx
|
|
mov %edi,%eax
|
|
cmp $4,%ecx
|
|
jc 1f
|
|
test $3,%edi
|
|
jz 1f
|
|
2: movsb
|
|
dec %ecx
|
|
test $3,%edi
|
|
jnz 2b
|
|
1: mov %ecx,%edx
|
|
shr $2,%ecx
|
|
rep
|
|
movsl
|
|
and $3,%edx
|
|
jz 1f
|
|
2: movsb
|
|
dec %edx
|
|
jnz 2b
|
|
1: pop %edi
|
|
pop %esi
|
|
ret
|