+\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 The pointer to the target buffer to fill.\r
+ @param Length The number of bytes in Buffer to fill.\r
+ @param Value The 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
+ } else {\r
+ return SetMem32 (Buffer, Length, (UINT32)Value);\r
+ }\r
+}\r