From ddcf6798d35beca3c4eec80ea448b57fd45558f4 Mon Sep 17 00:00:00 2001 From: Wilco Dijkstra Date: Fri, 27 Feb 2015 14:41:46 +0000 Subject: [PATCH] Rather than using a C implementation of memset, directly call memset, which typically has a much faster optimized implementation. --- ChangeLog | 4 ++++ string/bzero.c | 57 ++------------------------------------------------------- 2 files changed, 6 insertions(+), 55 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3b5caa5..6eb5290 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2015-02-27 Wilco Dijkstra wdijkstr@arm.com + + * string/bzero.c (__bzero): Call memset for performance. + 2015-02-27 John David Anglin * sysdeps/unix/sysv/linux/hppa/bits/fcntl.h (__O_SYNC): Change diff --git a/string/bzero.c b/string/bzero.c index a0e738e..43e2b38 100644 --- a/string/bzero.c +++ b/string/bzero.c @@ -17,66 +17,13 @@ . */ #include -#include #undef __bzero /* Set N bytes of S to 0. */ void -__bzero (s, len) - void *s; - size_t len; +__bzero (void *s, size_t len) { - long int dstp = (long int) s; - const op_t zero = 0; - - if (len >= 8) - { - size_t xlen; - - /* There are at least some bytes to zero. No need to test - for LEN == 0 in this alignment loop. */ - while (dstp % OPSIZ != 0) - { - ((byte *) dstp)[0] = 0; - dstp += 1; - len -= 1; - } - - /* Write 8 op_t per iteration until less than 8 op_t remain. */ - xlen = len / (OPSIZ * 8); - while (xlen != 0) - { - ((op_t *) dstp)[0] = zero; - ((op_t *) dstp)[1] = zero; - ((op_t *) dstp)[2] = zero; - ((op_t *) dstp)[3] = zero; - ((op_t *) dstp)[4] = zero; - ((op_t *) dstp)[5] = zero; - ((op_t *) dstp)[6] = zero; - ((op_t *) dstp)[7] = zero; - dstp += 8 * OPSIZ; - xlen -= 1; - } - len %= OPSIZ * 8; - - /* Write 1 op_t per iteration until less than op_t remain. */ - xlen = len / OPSIZ; - while (xlen != 0) - { - ((op_t *) dstp)[0] = zero; - dstp += OPSIZ; - xlen -= 1; - } - len %= OPSIZ; - } - - /* Write the last few bytes. */ - while (len != 0) - { - ((byte *) dstp)[0] = 0; - dstp += 1; - len -= 1; - } + memset (s, '\0', len); } weak_alias (__bzero, bzero) -- 2.7.4