ScanMem16.S revision 4fd606d1f5abe38e1f42c38de1d2e895166bd0f4
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync#------------------------------------------------------------------------------
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync#
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync# This program and the accompanying materials
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync# are licensed and made available under the terms and conditions of the BSD License
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync# which accompanies this distribution. The full text of the license may be found at
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync# http://opensource.org/licenses/bsd-license.php.
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync#
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync#
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync# Module Name:
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync#
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync# ScanMem16.Asm
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync#
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync# Abstract:
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync#
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync# ScanMem16 function
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync#
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync# Notes:
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync#
b0ad0bbadf3a5b5258acda1bfe16f0ad8bee5ff0vboxsync# The following BaseMemoryLib instances contain the same copy of this file:
b0ad0bbadf3a5b5258acda1bfe16f0ad8bee5ff0vboxsync#
b0ad0bbadf3a5b5258acda1bfe16f0ad8bee5ff0vboxsync# BaseMemoryLibRepStr
b0ad0bbadf3a5b5258acda1bfe16f0ad8bee5ff0vboxsync# BaseMemoryLibMmx
b0ad0bbadf3a5b5258acda1bfe16f0ad8bee5ff0vboxsync# BaseMemoryLibSse2
b0ad0bbadf3a5b5258acda1bfe16f0ad8bee5ff0vboxsync# BaseMemoryLibOptDxe
a55af63ead2dcca370bfc0dfe49771d9dcc61b93vboxsync# BaseMemoryLibOptPei
e0778e583cb4a0bdc9bcc48f5957e00a01108388vboxsync#
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync#------------------------------------------------------------------------------
a55af63ead2dcca370bfc0dfe49771d9dcc61b93vboxsync
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsyncASM_GLOBAL ASM_PFX(InternalMemScanMem16)
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync#------------------------------------------------------------------------------
b0ad0bbadf3a5b5258acda1bfe16f0ad8bee5ff0vboxsync# CONST VOID *
b0ad0bbadf3a5b5258acda1bfe16f0ad8bee5ff0vboxsync# EFIAPI
b0ad0bbadf3a5b5258acda1bfe16f0ad8bee5ff0vboxsync# InternalMemScanMem16 (
b0ad0bbadf3a5b5258acda1bfe16f0ad8bee5ff0vboxsync# IN CONST VOID *Buffer,
b0ad0bbadf3a5b5258acda1bfe16f0ad8bee5ff0vboxsync# IN UINTN Length,
b0ad0bbadf3a5b5258acda1bfe16f0ad8bee5ff0vboxsync# IN UINT16 Value
b0ad0bbadf3a5b5258acda1bfe16f0ad8bee5ff0vboxsync# );
b0ad0bbadf3a5b5258acda1bfe16f0ad8bee5ff0vboxsync#------------------------------------------------------------------------------
57958eb1223628d507daf47ed31ea25c4e8c6da9vboxsyncASM_PFX(InternalMemScanMem16):
b0ad0bbadf3a5b5258acda1bfe16f0ad8bee5ff0vboxsync push %edi
22d7a125fcbe8650770ac700108b6f27ca1f0dfdvboxsync movl 12(%esp), %ecx
b0ad0bbadf3a5b5258acda1bfe16f0ad8bee5ff0vboxsync movl 8(%esp), %edi
b0ad0bbadf3a5b5258acda1bfe16f0ad8bee5ff0vboxsync movl 16(%esp), %eax
b0ad0bbadf3a5b5258acda1bfe16f0ad8bee5ff0vboxsync repne scasw
b0ad0bbadf3a5b5258acda1bfe16f0ad8bee5ff0vboxsync leal -2(%edi), %eax
b0ad0bbadf3a5b5258acda1bfe16f0ad8bee5ff0vboxsync cmovnz %ecx, %eax
b0ad0bbadf3a5b5258acda1bfe16f0ad8bee5ff0vboxsync pop %edi
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync ret
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync