/* * This file is subject to the terms and conditions of the GNU General Public * License. See the file "COPYING" in the main directory of this archive * for more details. * * Copyright (c) 1994, 95, 96, 97, 98, 2000, 01 Ralf Baechle * Copyright (c) 2000 by Silicon Graphics, Inc. * Copyright (c) 2001 MIPS Technologies, Inc. */ #ifndef _ASM_STRING_H #define _ASM_STRING_H #define __HAVE_ARCH_MEMSET extern void *memset(void *__s, int __c, size_t __count); #define __HAVE_ARCH_MEMCPY extern void *memcpy(void *__to, __const__ void *__from, size_t __n); #define __HAVE_ARCH_MEMMOVE extern void *memmove(void *__dest, __const__ void *__src, size_t __n); #ifndef __ZBOOT__ #define memset(__s, __c, len) \ ({ \ size_t __len = (len); \ void *__ret; \ if (__builtin_constant_p(len) && __len >= 64) \ __ret = memset((__s), (__c), __len); \ else \ __ret = __builtin_memset((__s), (__c), __len); \ __ret; \ }) #define memcpy(dst, src, len) \ ({ \ size_t __len = (len); \ void *__ret; \ if (__builtin_constant_p(len) && __len >= 64) \ __ret = memcpy((dst), (src), __len); \ else \ __ret = __builtin_memcpy((dst), (src), __len); \ __ret; \ }) #define memmove(dst, src, len) \ ({ \ size_t __len = (len); \ void *__ret; \ if (__builtin_constant_p(len) && __len >= 64) \ __ret = memmove((dst), (src), __len); \ else \ __ret = __builtin_memmove((dst), (src), __len); \ __ret; \ }) #define __HAVE_ARCH_MEMCMP #define memcmp(src1, src2, len) __builtin_memcmp((src1), (src2), (len)) #endif #endif /* _ASM_STRING_H */