17b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinney/** @file 27b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinney SetMem32() implementation. 37b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinney 42bfb60098f608dc32ff5d22b0fd087c1636b0881lgao The following BaseMemoryLib instances contain the same copy of this file: 57b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinney BaseMemoryLib 67b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinney BaseMemoryLibMmx 77b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinney BaseMemoryLibSse2 87b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinney BaseMemoryLibRepStr 92bfb60098f608dc32ff5d22b0fd087c1636b0881lgao BaseMemoryLibOptDxe 102bfb60098f608dc32ff5d22b0fd087c1636b0881lgao BaseMemoryLibOptPei 117b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinney PeiMemoryLib 121fef058f4b8fefc455bb171e4908c3e835b1b492qhuang UefiMemoryLib 137b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinney 1484b5877f028a20f4227a26a7b63dc2e57949fc18hhtian Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR> 1584b5877f028a20f4227a26a7b63dc2e57949fc18hhtian This program and the accompanying materials 161fef058f4b8fefc455bb171e4908c3e835b1b492qhuang are licensed and made available under the terms and conditions of the BSD License 171fef058f4b8fefc455bb171e4908c3e835b1b492qhuang which accompanies this distribution. The full text of the license may be found at 182fc59a003ed9104f9feebe0e418f2a04a50f3284myronporter http://opensource.org/licenses/bsd-license.php. 191efcc4ae46f52e3845923ffbab68426e068709d2vanjeff 201fef058f4b8fefc455bb171e4908c3e835b1b492qhuang THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 211fef058f4b8fefc455bb171e4908c3e835b1b492qhuang WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 227b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinney 231fef058f4b8fefc455bb171e4908c3e835b1b492qhuang**/ 247b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinney 257b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinney#include "MemLibInternals.h" 267b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinney 277b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinney/** 287b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinney Fills a target buffer with a 32-bit value, and returns the target buffer. 297b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinney 307b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinney This function fills Length bytes of Buffer with the 32-bit value specified by 317b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinney Value, and returns Buffer. Value is repeated every 32-bits in for Length 327b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinney bytes of Buffer. 337b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinney 347b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinney If Length > 0 and Buffer is NULL, then ASSERT(). 357b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinney If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT(). 367b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinney If Buffer is not aligned on a 32-bit boundary, then ASSERT(). 377b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinney If Length is not aligned on a 32-bit boundary, then ASSERT(). 387b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinney 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. 427b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinney 437b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinney @return Buffer. 447b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinney 457b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinney**/ 467b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinneyVOID * 477b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinneyEFIAPI 487b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinneySetMem32 ( 497b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinney OUT VOID *Buffer, 507b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinney IN UINTN Length, 517b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinney IN UINT32 Value 527b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinney ) 537b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinney{ 542bfb60098f608dc32ff5d22b0fd087c1636b0881lgao if (Length == 0) { 557b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinney return Buffer; 567b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinney } 577b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinney 587b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinney ASSERT (Buffer != NULL); 597b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinney ASSERT ((Length - 1) <= (MAX_ADDRESS - (UINTN)Buffer)); 607b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinney ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0); 617b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinney ASSERT ((Length & (sizeof (Value) - 1)) == 0); 627b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinney 637b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinney return InternalMemSetMem32 (Buffer, Length / sizeof (Value), Value); 647b3b4b2992bf89ee5f1aa3df2e2af9c988c49e69mdkinney} 65