1e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff/** @file
2e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff  ZeroMem() implementation.
3e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff
42bfb60098f608dc32ff5d22b0fd087c1636b0881lgao  The following BaseMemoryLib instances contain the same copy of this file:
5eb1c78dbb988654f46cc111d5b4a9dabd5578c1fgikidy
6e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff    BaseMemoryLib
7e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff    BaseMemoryLibMmx
8e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff    BaseMemoryLibSse2
9e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff    BaseMemoryLibRepStr
102bfb60098f608dc32ff5d22b0fd087c1636b0881lgao    BaseMemoryLibOptDxe
112bfb60098f608dc32ff5d22b0fd087c1636b0881lgao    BaseMemoryLibOptPei
12e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff    PeiMemoryLib
131fef058f4b8fefc455bb171e4908c3e835b1b492qhuang    UefiMemoryLib
14eb1c78dbb988654f46cc111d5b4a9dabd5578c1fgikidy
152fc59a003ed9104f9feebe0e418f2a04a50f3284myronporter  Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
16c33c6476ca8156ddf3c32dbf95048c32f30dc84ahhtian  This program and the accompanying materials
17d531bfee01a957038d7ac1a16748558a62165fb2eric_tian  are licensed and made available under the terms and conditions of the BSD License
18d531bfee01a957038d7ac1a16748558a62165fb2eric_tian  which accompanies this distribution.  The full text of the license may be found at
192fc59a003ed9104f9feebe0e418f2a04a50f3284myronporter  http://opensource.org/licenses/bsd-license.php.
20d531bfee01a957038d7ac1a16748558a62165fb2eric_tian
21d531bfee01a957038d7ac1a16748558a62165fb2eric_tian  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
22d531bfee01a957038d7ac1a16748558a62165fb2eric_tian  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
23d531bfee01a957038d7ac1a16748558a62165fb2eric_tian
24e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff**/
25e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff
26e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff#include "MemLibInternals.h"
27e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff
28e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff/**
29e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff  Fills a target buffer with zeros, and returns the target buffer.
30e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff
31e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff  This function fills Length bytes of Buffer with zeros, and returns Buffer.
32eb1c78dbb988654f46cc111d5b4a9dabd5578c1fgikidy
33e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff  If Length > 0 and Buffer is NULL, then ASSERT().
34cc4e0485045285042ad088736ef278459b139d54lgao  If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT().
35e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff
362fc59a003ed9104f9feebe0e418f2a04a50f3284myronporter  @param  Buffer      The pointer to the target buffer to fill with zeros.
372fc59a003ed9104f9feebe0e418f2a04a50f3284myronporter  @param  Length      The number of bytes in Buffer to fill with zeros.
38e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff
39e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff  @return Buffer.
40e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff
41e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff**/
42e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeffVOID *
43e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeffEFIAPI
44e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeffZeroMem (
45e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff  OUT VOID  *Buffer,
46e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff  IN UINTN  Length
47e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff  )
48e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff{
492bfb60098f608dc32ff5d22b0fd087c1636b0881lgao  ASSERT (!(Buffer == NULL && Length > 0));
50e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff  ASSERT (Length <= (MAX_ADDRESS - (UINTN)Buffer + 1));
51e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff  return InternalMemZeroMem (Buffer, Length);
52e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff}
53