X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=MdePkg%2FLibrary%2FBaseMemoryLibRepStr%2Fx64%2FCopyMem.asm;h=a2e04056fdf0be542dbe47926465122f1903084a;hp=43630715cb58e0b46d77bbf4b50c8cf009b9e52c;hb=eb227e96bd06a5b0f2f933187a679e7fb3382cd9;hpb=27169a56e67556796ab0410c8917436dc9aa2abf diff --git a/MdePkg/Library/BaseMemoryLibRepStr/x64/CopyMem.asm b/MdePkg/Library/BaseMemoryLibRepStr/x64/CopyMem.asm index 43630715cb..a2e04056fd 100644 --- a/MdePkg/Library/BaseMemoryLibRepStr/x64/CopyMem.asm +++ b/MdePkg/Library/BaseMemoryLibRepStr/x64/CopyMem.asm @@ -23,10 +23,19 @@ .code +;------------------------------------------------------------------------------ +; VOID * +; EFIAPI +; InternalMemCopyMem ( +; IN VOID *Destination, +; IN VOID *Source, +; IN UINTN Count +; ) +;------------------------------------------------------------------------------ InternalMemCopyMem PROC USES rsi rdi mov rsi, rdx ; rsi <- Source mov rdi, rcx ; rdi <- Destination - lea r9, [rdi + r8 - 1] ; r9 <- End of Destination + lea r9, [rsi + r8 - 1] ; r9 <- End of Source cmp rsi, rdi mov rax, rdi ; rax <- Destination as return value jae @F @@ -39,8 +48,8 @@ InternalMemCopyMem PROC USES rsi rdi rep movsq ; Copy as many Qwords as possible jmp @CopyBytes @CopyBackward: - mov rdi, r9 ; rdi <- End of Destination - lea rsi, [rsi + r8 - 1] ; esi <- End of Source + mov rsi, r9 ; rsi <- End of Source + lea rdi, [rdi + r8 - 1] ; esi <- End of Destination std ; set direction flag @CopyBytes: mov rcx, r8