]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Library/BaseMemoryLibMmx/Ia32/CopyMem.S
1. Updated function headers for all assembly function
[mirror_edk2.git] / MdePkg / Library / BaseMemoryLibMmx / Ia32 / CopyMem.S
index fff8bde5ea9d60eb04a3ea16701e0857ec65cf43..d644b34675856a9845eb1542a977b5751a24ce83 100644 (file)
 #
 #------------------------------------------------------------------------------
 
-    .686: 
-    #.MODEL flat,C
-    .xmm: 
-    .code: 
+.global _InternalMemCopyMem
 
 #------------------------------------------------------------------------------
 #  VOID *
-#  _mem_CopyMem (
+#  EFIAPI
+#  InternalMemCopyMem (
 #    IN VOID   *Destination,
 #    IN VOID   *Source,
 #    IN UINTN  Count
-#    )
+#    );
 #------------------------------------------------------------------------------
-.global _InternalMemCopyMem
 _InternalMemCopyMem:
     push    %esi
     push    %edi
     movl    16(%esp), %esi              # esi <- Source
     movl    12(%esp), %edi              # edi <- Destination
     movl    20(%esp), %edx              # edx <- Count
-    leal    -1(%edi,%edx,), %eax        # eax <- End of Destination
+    leal    -1(%esi,%edx,), %eax        # eax <- End of Source
     cmpl    %edi, %esi
     jae     L0
-    cmpl    %esi, %eax                  # Overlapped?
+    cmpl    %edi, %eax                  # Overlapped?
     jae     @CopyBackward               # Copy backward if overlapped
-L0: 
+L0:
     xorl    %ecx, %ecx
     subl    %esi, %ecx
     andl    $7, %ecx                    # ecx + esi aligns on 8-byte boundary
@@ -56,7 +53,7 @@ L0:
     subl    %ecx, %edx                  # edx <- remaining bytes to copy
     rep
     movsb
-L1: 
+L1:
     movl    %edx, %ecx
     andl    $7, %edx
     shrl    $3, %ecx                    # ecx <- # of Qwords to copy
@@ -64,22 +61,21 @@ L1:
     pushl   %eax
     pushl   %eax
     movq    %mm0, (%esp)                # save mm0
-L2: 
+L2:
     movq    (%esi), %mm0
-    movntq  %mm0, (%edi)
+    movq    %mm0, (%edi)
     addl    $8, %esi
     addl    $8, %edi
     loop    L2
-    mfence
     movq    (%esp), %mm0                # restore mm0
     popl    %ecx                        # stack cleanup
     popl    %ecx                        # stack cleanup
     jmp     @CopyBytes
-@CopyBackward: 
-    movl    %eax, %edi                  # edi <- Last byte in Destination
-    leal    -1(%esi,%edx,), %esi        # esi <- Last byte in Source
+@CopyBackward:
+    movl    %eax, %esi                  # esi <- Last byte in Source
+    leal    -1(%edi,%edx,), %edi        # edi <- Last byte in Destination
     std
-@CopyBytes: 
+@CopyBytes:
     movl    %edx, %ecx
     rep
     movsb