Home | History | Annotate | Download | only in Ebc
      1 /*++
      2 
      3 Copyright (c) 2004 - 2006, 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 
     13 Module Name:
     14 
     15   SetMem.c
     16 
     17 Abstract:
     18 
     19   Internal SetMem
     20 
     21 --*/
     22 
     23 #include "BaseMemoryLibInternal.h"
     24 
     25 /**
     26   Set Buffer to Value for Size bytes.
     27 
     28   @param  Buffer Memory to set.
     29   @param  Size Number of bytes to set
     30   @param  Value Value of the set operation.
     31 
     32   @return Buffer
     33 
     34 **/
     35 VOID *
     36 EFIAPI
     37 InternalMemSetMem (
     38   IN      VOID                      *Buffer,
     39   IN      UINTN                     Size,
     40   IN      UINT8                     Value
     41   )
     42 {
     43   //
     44   // Declare the local variables that actually move the data elements as
     45   // volatile to prevent the optimizer from replacing this function with
     46   // the intrinsic memset()
     47   //
     48   volatile UINT8                    *Pointer;
     49 
     50   Pointer = (UINT8*)Buffer;
     51   while (Size-- != 0) {
     52     *(Pointer++) = Value;
     53   }
     54   return Buffer;
     55 }
     56