1e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff/** @file 2e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff SetMem32() implementation. 3e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff 42bfb60098f608dc32ff5d22b0fd087c1636b0881lgao The following BaseMemoryLib instances contain the same copy of this file: 5e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff BaseMemoryLib 6e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff BaseMemoryLibMmx 7e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff BaseMemoryLibSse2 8e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff BaseMemoryLibRepStr 92bfb60098f608dc32ff5d22b0fd087c1636b0881lgao BaseMemoryLibOptDxe 102bfb60098f608dc32ff5d22b0fd087c1636b0881lgao BaseMemoryLibOptPei 11e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff PeiMemoryLib 121fef058f4b8fefc455bb171e4908c3e835b1b492qhuang UefiMemoryLib 13e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff 142fc59a003ed9104f9feebe0e418f2a04a50f3284myronporter Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR> 15c33c6476ca8156ddf3c32dbf95048c32f30dc84ahhtian This program and the accompanying materials 16d531bfee01a957038d7ac1a16748558a62165fb2eric_tian are licensed and made available under the terms and conditions of the BSD License 17d531bfee01a957038d7ac1a16748558a62165fb2eric_tian which accompanies this distribution. The full text of the license may be found at 182fc59a003ed9104f9feebe0e418f2a04a50f3284myronporter http://opensource.org/licenses/bsd-license.php. 19d531bfee01a957038d7ac1a16748558a62165fb2eric_tian 20d531bfee01a957038d7ac1a16748558a62165fb2eric_tian THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 21d531bfee01a957038d7ac1a16748558a62165fb2eric_tian WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 22d531bfee01a957038d7ac1a16748558a62165fb2eric_tian 23e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff**/ 24e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff 25e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff#include "MemLibInternals.h" 26e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff 27e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff/** 28e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff Fills a target buffer with a 32-bit value, and returns the target buffer. 29e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff 30e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff This function fills Length bytes of Buffer with the 32-bit value specified by 31e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff Value, and returns Buffer. Value is repeated every 32-bits in for Length 32e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff bytes of Buffer. 33e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff 34e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff If Length > 0 and Buffer is NULL, then ASSERT(). 35e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT(). 36e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff If Buffer is not aligned on a 32-bit boundary, then ASSERT(). 37e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff If Length is not aligned on a 32-bit boundary, then ASSERT(). 38e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff 392fc59a003ed9104f9feebe0e418f2a04a50f3284myronporter @param Buffer The pointer to the target buffer to fill. 402fc59a003ed9104f9feebe0e418f2a04a50f3284myronporter @param Length The number of bytes in Buffer to fill. 412fc59a003ed9104f9feebe0e418f2a04a50f3284myronporter @param Value The value with which to fill Length bytes of Buffer. 42e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff 43e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff @return Buffer. 44e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff 45e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff**/ 46e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeffVOID * 47e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeffEFIAPI 48e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeffSetMem32 ( 49e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff OUT VOID *Buffer, 50e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff IN UINTN Length, 51e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff IN UINT32 Value 52e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff ) 53e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff{ 542bfb60098f608dc32ff5d22b0fd087c1636b0881lgao if (Length == 0) { 55e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff return Buffer; 56e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff } 57e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff 58e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff ASSERT (Buffer != NULL); 59e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff ASSERT ((Length - 1) <= (MAX_ADDRESS - (UINTN)Buffer)); 60e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0); 61e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff ASSERT ((Length & (sizeof (Value) - 1)) == 0); 62e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff 63e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff return InternalMemSetMem32 (Buffer, Length / sizeof (Value), Value); 64e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff} 65