/** @file SetMem64() implementation. The following BaseMemoryLib instances contain the same copy of this file: BaseMemoryLib BaseMemoryLibMmx BaseMemoryLibSse2 BaseMemoryLibRepStr BaseMemoryLibOptDxe BaseMemoryLibOptPei PeiMemoryLib UefiMemoryLib Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #include "MemLibInternals.h" /** Fills a target buffer with a 64-bit value, and returns the target buffer. This function fills Length bytes of Buffer with the 64-bit value specified by Value, and returns Buffer. Value is repeated every 64-bits in for Length bytes of Buffer. If Length > 0 and Buffer is NULL, then ASSERT(). If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT(). If Buffer is not aligned on a 64-bit boundary, then ASSERT(). If Length is not aligned on a 64-bit boundary, then ASSERT(). @param Buffer The pointer to the target buffer to fill. @param Length The number of bytes in Buffer to fill. @param Value The value with which to fill Length bytes of Buffer. @return Buffer. **/ VOID * EFIAPI SetMem64 ( OUT VOID *Buffer, IN UINTN Length, IN UINT64 Value ) { if (Length == 0) { return Buffer; } ASSERT (Buffer != NULL); ASSERT ((Length - 1) <= (MAX_ADDRESS - (UINTN)Buffer)); ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0); ASSERT ((Length & (sizeof (Value) - 1)) == 0); return InternalMemSetMem64 (Buffer, Length / sizeof (Value), Value); }