/** @file Provide intrinsics within Oniguruma (C) Copyright 2015 Hewlett Packard Enterprise Development LP
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #include // // From CryptoPkg/IntrinsicLib // /* Copies bytes between buffers */ #pragma function(memcpy) void * memcpy (void *dest, const void *src, unsigned int count) { return CopyMem (dest, src, (UINTN)count); } /* Sets buffers to a specified character */ #pragma function(memset) void * memset (void *dest, char ch, unsigned int count) { // // NOTE: Here we use one base implementation for memset, instead of the direct // optimized SetMem() wrapper. Because the IntrinsicLib has to be built // without whole program optimization option, and there will be some // potential register usage errors when calling other optimized codes. // // // Declare the local variables that actually move the data elements as // volatile to prevent the optimizer from replacing this function with // the intrinsic memset() // volatile UINT8 *Pointer; Pointer = (UINT8 *)dest; while (count-- != 0) { *(Pointer++) = ch; } return dest; }