;/*++ ; ;Copyright (c) 2007, Intel Corporation ;All rights reserved. This program and the accompanying materials ;are licensed and made available under the terms and conditions of the BSD License ;which accompanies this distribution. The full text of the license may be found at ;http://opensource.org/licenses/bsd-license.php ; ;THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, ;WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. ; ;Module Name: ; ;EfiSetMemRep4.c ; ;Abstract: ; ;This is the code that uses rep stosd SetMem service ; ;--*/ ; ;--------------------------------------------------------------------------- .686 .model flat,C .code ;--------------------------------------------------------------------------- ;#include "Tiano.h" ; ;VOID ;EfiCommonLibSetMem ( ;IN VOID *Buffer, ;IN UINTN Count, ;IN UINT8 Value ;) ;/*++ ; ;Input: VOID *Buffer - Pointer to buffer to write ;UINTN Count - Number of bytes to write ;UINT8 Value - Value to write ; ;Output: None. ; ;Saves: ; ;Modifies: ; ;Description: This function uses rep stosd to set memory. ; ;--*/ EfiCommonLibSetMem PROC push ebp mov ebp,esp push edi mov ecx,dword ptr [ebp+0Ch] test ecx, ecx je Exit mov al,byte ptr [ebp+10h] mov ah, al shrd edx, eax, 16 shld eax, edx, 16 mov edx, ecx mov edi,dword ptr [ebp+8] shr ecx, 2 rep stosd mov ecx, edx and ecx, 3 rep stosb Exit: pop edi pop ebp ret EfiCommonLibSetMem ENDP END