]> git.proxmox.com Git - mirror_edk2.git/blob - EdkCompatibilityPkg/Foundation/Library/EfiCommonLib/Ia32/EfiCopyMemRep1.asm
Update the copyright notice format
[mirror_edk2.git] / EdkCompatibilityPkg / Foundation / Library / EfiCommonLib / Ia32 / EfiCopyMemRep1.asm
1 ;/*++
2 ;
3 ;Copyright (c) 2007, Intel Corporation. All rights reserved.<BR>
4 ;This program and the accompanying materials
5 ;are licensed and made available under the terms and conditions of the BSD License
6 ;which accompanies this distribution. The full text of the license may be found at
7 ;http://opensource.org/licenses/bsd-license.php
8 ;
9 ;THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 ;WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
11 ;
12 ;Module Name:
13 ;
14 ; EfiCopyMemRep1.asm
15 ;
16 ;Abstract:
17 ;
18 ; This is the code that uses rep movsb CopyMem service
19 ;
20 ;--*/
21 ;
22 ;---------------------------------------------------------------------------
23 .686
24 .model flat,C
25 .code
26
27 ;---------------------------------------------------------------------------
28 ;#include "Tiano.h"
29 ;
30 ;VOID
31 ;EfiCommonLibCopyMem (
32 ; IN VOID *Destination,
33 ; IN VOID *Source,
34 ; IN UINTN Count
35 ; )
36 ;/*++
37 ;
38 ;Routine Description:
39 ;
40 ; Copy Length bytes from Source to Destination.
41 ;
42 ;Arguments:
43 ;
44 ; Destination - Target of copy
45 ;
46 ; Source - Place to copy from
47 ;
48 ; Length - Number of bytes to copy
49 ;
50 ;Returns:
51 ;
52 ; None
53 ;
54 ;--*/
55 EfiCommonLibCopyMem PROC
56 push ebp
57 mov ebp, esp
58 push esi
59 push edi
60 mov esi, dword ptr[ebp + 0Ch] ; esi <- Source
61 mov edi, dword ptr[ebp + 8] ; edi <- Destination
62 mov edx, dword ptr[ebp + 10h] ; edx <- Count
63 cmp esi, edi
64 je _CopyDone
65 cmp edx, 0
66 je _CopyDone
67 lea eax, [esi + edx - 1] ; eax <- End of Source
68 cmp esi, edi
69 jae _CopyBytes
70 cmp eax, edi
71 jb _CopyBytes ; Copy backward if overlapped
72 mov esi, eax ; esi <- End of Source
73 lea edi, [edi + edx - 1] ; edi <- End of Destination
74 std
75 _CopyBytes:
76 mov ecx, edx
77 rep movsb ; Copy bytes backward
78 cld
79 _CopyDone:
80 pop edi
81 pop esi
82 pop ebp
83 ret
84 EfiCommonLibCopyMem ENDP
85 END
86