Home | History | Annotate | Download | only in Ia32
      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   EfiZeroMemRep4.c
     15 
     16 Abstract:
     17 
     18   This is the code that uses rep stosd ZeroMem service
     19 
     20 --*/
     21 
     22 #include "Tiano.h"
     23 
     24 VOID
     25 EfiCommonLibZeroMem (
     26   IN VOID   *Buffer,
     27   IN UINTN  Count
     28   )
     29 /*++
     30 
     31 Input:  VOID   *Buffer - Pointer to buffer to clear
     32         UINTN  Count  - Number of bytes to clear
     33 
     34 Output: None.
     35 
     36 Saves:
     37 
     38 Modifies:
     39 
     40 Description:  This function uses rep stosd to zero memory.
     41 
     42 --*/
     43 {
     44   __asm {
     45     mov         ecx, Count
     46     test        ecx, ecx
     47     je          Exit
     48     xor         eax, eax
     49     mov         edi, Buffer
     50     mov         edx, ecx
     51     shr         ecx, 2
     52     and         edx, 3
     53     rep         stosd
     54     mov         ecx, edx
     55     rep         stosb
     56 Exit:
     57   }
     58 }
     59 
     60