// ------------------------------------------------------------------------------ // // Copyright (c) 2016, Linaro Ltd. All rights reserved.
// Copyright (c) 2021, Arm Limited. All rights reserved.
// // SPDX-License-Identifier: BSD-2-Clause-Patent // // ------------------------------------------------------------------------------ typedef __SIZE_TYPE__ size_t; static __attribute__ ((__used__)) void * __memset ( void *s, int c, size_t n ) { unsigned char *d; d = s; while (n-- != 0) { *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