//------------------------------------------------------------------------------ // // Copyright (c) 2016, Linaro Ltd. All rights reserved.
// // This program and the accompanying materials are licensed and made // available under the terms and conditions of the BSD License which // accompanies this distribution. The full text of the license may be // found at http://opensource.org/licenses/bsd-license.php // // THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, // WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR // IMPLIED. // //------------------------------------------------------------------------------ typedef __SIZE_TYPE__ size_t; static __attribute__((__used__)) void *__memset(void *s, int c, size_t n) { unsigned char *d = s; while (n--) *d++ = c; return s; } // // Other modules (such as CryptoPkg/IntrinsicLib) may provide another // implementation of memset(), which may conflict with this one if this // object was pulled into the link due to the definitions below. So make // our memset() 'weak' to let the other implementation take precedence. // __attribute__((__weak__, __alias__("__memset"))) void *memset(void *dest, int c, size_t n); #ifdef __arm__ void __aeabi_memset(void *dest, size_t n, int c) { __memset(dest, c, n); } __attribute__((__alias__("__aeabi_memset"))) void __aeabi_memset4(void *dest, size_t n, int c); __attribute__((__alias__("__aeabi_memset"))) void __aeabi_memset8(void *dest, size_t n, int c); void __aeabi_memclr(void *dest, size_t n) { __memset(dest, 0, n); } __attribute__((__alias__("__aeabi_memclr"))) void __aeabi_memclr4(void *dest, size_t n); __attribute__((__alias__("__aeabi_memclr"))) void __aeabi_memclr8(void *dest, size_t n); #endif