• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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  ;EfiSetMemRep4.c
15;
16;Abstract:
17;
18  ;This is the code that uses rep stosd SetMem service
19;
20;--*/
21;
22;---------------------------------------------------------------------------
23    .686
24    .model  flat,C
25    .code
26
27;---------------------------------------------------------------------------
28;#include "Tiano.h"
29;
30;VOID
31;EfiCommonLibSetMem (
32  ;IN VOID   *Buffer,
33  ;IN UINTN  Count,
34  ;IN UINT8  Value
35  ;)
36;/*++
37;
38;Input:  VOID   *Buffer - Pointer to buffer to write
39        ;UINTN  Count   - Number of bytes to write
40        ;UINT8  Value   - Value to write
41;
42;Output: None.
43;
44;Saves:
45;
46;Modifies:
47;
48;Description:  This function uses rep stosd to set memory.
49;
50;--*/
51EfiCommonLibSetMem PROC
52    push        ebp
53    mov         ebp,esp
54    push        edi
55    mov         ecx,dword ptr [ebp+0Ch]
56    test        ecx, ecx
57    je          Exit
58    mov         al,byte ptr [ebp+10h]
59    mov         ah,  al
60    shrd        edx, eax, 16
61    shld        eax, edx, 16
62    mov         edx, ecx
63    mov         edi,dword ptr [ebp+8]
64    shr         ecx, 2
65    rep stosd
66    mov         ecx, edx
67    and         ecx, 3
68    rep stosb
69Exit:
70    pop         edi
71    pop         ebp
72    ret
73
74EfiCommonLibSetMem ENDP
75	END
76