]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Library/BaseMemoryLibSse2/SetMemWrapper.c
Add SetMemN() and ScanMemN() to the BaseMemoryLib class and all BaseMemoryLib impleme...
[mirror_edk2.git] / MdePkg / Library / BaseMemoryLibSse2 / SetMemWrapper.c
index b6bc1f43871af40b6b7da1ee62d9142d960fdbe8..f60691da406fb2fce8cb3984525821322ae586c6 100644 (file)
@@ -1,5 +1,5 @@
 /** @file\r
-  SetMem() implementation.\r
+  SetMem() and SetMemN() implementation.\r
 \r
   The following BaseMemoryLib instances contain the same copy of this file:\r
 \r
@@ -55,3 +55,36 @@ SetMem (
 \r
   return InternalMemSetMem (Buffer, Length, Value);\r
 }\r
+\r
+/**\r
+  Fills a target buffer with a value that is size UINTN, and returns the target buffer.\r
+\r
+  This function fills Length bytes of Buffer with the UINTN sized value specified by\r
+  Value, and returns Buffer. Value is repeated every sizeof(UINTN) bytes for Length\r
+  bytes of Buffer.\r
+\r
+  If Length > 0 and Buffer is NULL, then ASSERT().\r
+  If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT().\r
+  If Buffer is not aligned on a UINTN boundary, then ASSERT().\r
+  If Length is not aligned on a UINTN boundary, then ASSERT().\r
+\r
+  @param  Buffer  Pointer to the target buffer to fill.\r
+  @param  Length  Number of bytes in Buffer to fill.\r
+  @param  Value   Value with which to fill Length bytes of Buffer.\r
+\r
+  @return Buffer.\r
+\r
+**/\r
+VOID *\r
+EFIAPI\r
+SetMemN (\r
+  OUT VOID  *Buffer,\r
+  IN UINTN  Length,\r
+  IN UINTN  Value\r
+  )\r
+{\r
+  if (sizeof (UINTN) == sizeof (UINT64)) {\r
+    return SetMem64 (Buffer, Length, (UINT64)Value);\r
+  }\r
+  return SetMem32 (Buffer, Length, (UINT32)Value);\r
+}\r