\r
;------------------------------------------------------------------------------\r
; VOID *\r
-; _mem_CopyMem (\r
+; EFIAPI\r
+; InternalMemCopyMem (\r
; IN VOID *Destination,\r
; IN VOID *Source,\r
; IN UINTN Count\r
-; )\r
+; );\r
;------------------------------------------------------------------------------\r
InternalMemCopyMem PROC USES rsi rdi\r
mov rsi, rdx ; rsi <- Source\r
mov rdi, rcx ; rdi <- Destination\r
- lea r9, [rdi + r8 - 1] ; r9 <- Last byte of Destination\r
+ lea r9, [rsi + r8 - 1] ; r9 <- Last byte of Source\r
cmp rsi, rdi\r
mov rax, rdi ; rax <- Destination as return value\r
jae @F ; Copy forward if Source > Destination\r
- cmp r9, rsi ; Overlapped?\r
+ cmp r9, rdi ; Overlapped?\r
jae @CopyBackward ; Copy backward if overlapped\r
@@:\r
xor rcx, rcx\r
movdqa xmm0, [rsp + 18h] ; restore xmm0\r
jmp @CopyBytes ; copy remaining bytes\r
@CopyBackward:\r
- mov rdi, r9 ; rdi <- Last byte of Destination\r
- lea rsi, [rsi + r8 - 1] ; rsi <- Last byte of Source\r
+ mov rsi, r9 ; rsi <- Last byte of Source\r
+ lea rdi, [rdi + r8 - 1] ; rdi <- Last byte of Destination\r
std\r
@CopyBytes:\r
mov rcx, r8\r