]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Library/BaseMemoryLibSse2/x64/SetMem64.asm
1. Added '#pragma pack' directive in BaseLib.h for the structure IA32_DESCRIPTOR
[mirror_edk2.git] / MdePkg / Library / BaseMemoryLibSse2 / x64 / SetMem64.asm
index 8b33386ad0bfbd90fd33bed224653f283574c8f6..ef94c562b5d017f053cd46e5676c8de59d835651 100644 (file)
 \r
 ;------------------------------------------------------------------------------\r
 ;  VOID *\r
-;  _mem_SetMem64 (\r
+;  InternalMemSetMem64 (\r
 ;    IN VOID   *Buffer,\r
 ;    IN UINTN  Count,\r
-;    IN UINT Value\r
+;    IN UINT64 Value\r
 ;    )\r
 ;------------------------------------------------------------------------------\r
-InternalMemSetMem64 PROC    USES    rdi\r
-    mov     rdi, rcx\r
-    mov     r9, rcx\r
-    test    cl, 8\r
+InternalMemSetMem64 PROC\r
+    mov     rax, rcx\r
+    test    dl, 8\r
+    xchg    rcx, rdx\r
     jz      @F\r
-    mov     [rdi], r8\r
-    add     rdi, 8\r
-    dec     rdx\r
+    mov     [rdx], r8\r
+    add     rdx, 8\r
+    dec     rcx\r
 @@:\r
-    mov     rcx, rdx\r
     shr     rcx, 1\r
     jz      @SetQwords\r
     movd    xmm0, r8\r
     movlhps xmm0, xmm0\r
 @@:\r
-    movntdq [rdi], xmm0\r
-    add     rdi, 16\r
+    movntdq [rdx], xmm0\r
+    lea     rdx, [rdx + 16]\r
     loop    @B\r
     mfence\r
 @SetQwords:\r
-    test    dl, 1\r
-    jz      @F\r
-    mov     [rdi], r8\r
+    jnc     @F\r
+    mov     [rdx], r8\r
 @@:\r
     ret\r
 InternalMemSetMem64 ENDP\r