]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Library/BaseMemoryLibRepStr/Ia32/CopyMem.S
1. Port X64, IPF and EBC arch for BaseLib
[mirror_edk2.git] / MdePkg / Library / BaseMemoryLibRepStr / Ia32 / CopyMem.S
index cce9836833d48fcd1fa52fd7bd95103da654b4fb..a95b33759c3aced3d898e7263394d2cfa0aa76a1 100644 (file)
 #
 #------------------------------------------------------------------------------
 
-    .386: 
-    .code: 
+.globl _InternalMemCopyMem
 
-.global _InternalMemCopyMem
+#------------------------------------------------------------------------------
+#  VOID *
+#  EFIAPI
+#  InternalMemCopyMem (
+#    IN VOID   *Destination,
+#    IN VOID   *Source,
+#    IN UINTN  Count
+#    );
+#------------------------------------------------------------------------------
 _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
-    cmpl    %edi,%esi
+    movl    16(%esp), %esi              # esi <- Source
+    movl    12(%esp), %edi              # edi <- Destination
+    movl    20(%esp), %edx              # edx <- Count
+    leal    -1(%esi, %edx), %eax        # eax <- End of Source
+    cmpl    %edi, %esi
     jae     L0
-    cmpl    %esi,%eax
-    jae     @CopyBackward               # Copy backward if overlapped
-L0: 
-    movl    %edx,%ecx
-    andl    $3,%edx
-    shrl    $2,%ecx
+    cmpl    %edi, %eax
+    jae     L_CopyBackward              # Copy backward if overlapped
+L0:
+    movl    %edx, %ecx
+    andl    $3, %edx
+    shrl    $2, %ecx
     rep
     movsl                               # Copy as many Dwords as possible
-    jmp     @CopyBytes
-@CopyBackward: 
-    movl    %eax,%edi                   # edi <- End of Destination
-    leal    -1(%esi,%edx),%esi          # esi <- End of Source
+    jmp     L_CopyBytes
+L_CopyBackward:
+    movl    %eax, %esi                  # esi <- End of Source
+    leal    -1(%edi, %edx), %edi        # edi <- End of Destination
     std
-@CopyBytes: 
-    movl    %edx,%ecx
+L_CopyBytes:
+    movl    %edx, %ecx
     rep
     movsb                               # Copy bytes backward
     cld
-    movl    12(%esp),%eax               # eax <- Destination as return value
-    push    %edi
-    push    %esi
+    movl    12(%esp), %eax              # eax <- Destination as return value
+    pop     %edi
+    pop     %esi
     ret