forked from Bananymous/banan-os
48 lines
707 B
ArmAsm
48 lines
707 B
ArmAsm
.align 16
|
|
.global memcpy
|
|
memcpy:
|
|
xchgl 4(%esp), %edi
|
|
xchgl 8(%esp), %esi
|
|
movl 12(%esp), %ecx
|
|
movl %edi, %edx
|
|
rep movsb
|
|
movl 4(%esp), %edi
|
|
movl 8(%esp), %esi
|
|
movl %edx, %eax
|
|
ret
|
|
|
|
.align 16
|
|
.global memmove
|
|
memmove:
|
|
xchgl 4(%esp), %edi
|
|
xchgl 8(%esp), %esi
|
|
movl 12(%esp), %ecx
|
|
movl %edi, %edx
|
|
cmpl %edi, %esi
|
|
jb .Lmemmove_slow
|
|
rep movsb
|
|
.Lmemmove_done:
|
|
movl 4(%esp), %edi
|
|
movl 8(%esp), %esi
|
|
movl %edx, %eax
|
|
ret
|
|
.Lmemmove_slow:
|
|
leal -1(%edi, %ecx), %edi
|
|
leal -1(%esi, %ecx), %esi
|
|
std
|
|
rep movsb
|
|
cld
|
|
jmp .Lmemmove_done
|
|
|
|
.align 16
|
|
.global memset
|
|
memset:
|
|
xchgl 4(%esp), %edi
|
|
movl 8(%esp), %eax
|
|
movl 12(%esp), %ecx
|
|
movl %edi, %edx
|
|
rep stosb
|
|
movl 4(%esp), %edi
|
|
movl %edx, %eax
|
|
ret
|