]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - MdePkg/Library/BaseMemoryLibRepStr/Ia32/ScanMem16.S
Move down to required dist directory for vendor tracking.
[FreeBSD/FreeBSD.git] / MdePkg / Library / BaseMemoryLibRepStr / Ia32 / ScanMem16.S
1 #------------------------------------------------------------------------------
2 #
3 # Copyright (c) 2006 - 2015, 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 #   ScanMem16.Asm
15 #
16 # Abstract:
17 #
18 #   ScanMem16 function
19 #
20 # Notes:
21 #
22 #   The following BaseMemoryLib instances contain the same copy of this file:
23 #
24 #       BaseMemoryLibRepStr
25 #       BaseMemoryLibMmx
26 #       BaseMemoryLibSse2
27 #       BaseMemoryLibOptDxe
28 #       BaseMemoryLibOptPei
29 #
30 #------------------------------------------------------------------------------
31
32 ASM_GLOBAL ASM_PFX(InternalMemScanMem16)
33
34 #------------------------------------------------------------------------------
35 # CONST VOID *
36 # EFIAPI
37 # InternalMemScanMem16 (
38 #   IN      CONST VOID                *Buffer,
39 #   IN      UINTN                     Length,
40 #   IN      UINT16                    Value
41 #   );
42 #------------------------------------------------------------------------------
43 ASM_PFX(InternalMemScanMem16):
44     push    %edi
45     movl    12(%esp), %ecx
46     movl    8(%esp), %edi
47     movl    16(%esp), %eax
48     repne   scasw
49     leal    -2(%edi), %eax
50     jz      L0
51     movl    %ecx, %eax
52 L0:    
53     pop     %edi
54     ret