diff options
author | bk@work.mysql.com <> | 2000-07-31 21:29:14 +0200 |
---|---|---|
committer | bk@work.mysql.com <> | 2000-07-31 21:29:14 +0200 |
commit | f4c589ff6c653d1d2a09c26e46ead3c8a15655d8 (patch) | |
tree | d253a359142dfc1ed247d5d4365d86972ea31109 /strings/bzero.c | |
parent | 7eec25e393727b16bb916b50d82b0aa3084e065c (diff) | |
download | mariadb-git-f4c589ff6c653d1d2a09c26e46ead3c8a15655d8.tar.gz |
Import changeset
Diffstat (limited to 'strings/bzero.c')
-rw-r--r-- | strings/bzero.c | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/strings/bzero.c b/strings/bzero.c new file mode 100644 index 00000000000..cc628e05277 --- /dev/null +++ b/strings/bzero.c @@ -0,0 +1,67 @@ +/* File : bzero.c + Author : Richard A. O'Keefe. + Michael Widenius; ifdef MC68000 + Updated: 23 April 1984 + Defines: bzero() + + bzero(dst, len) moves "len" 0 bytes to "dst". + Thus to clear a disc buffer to 0s do bzero(buffer, BUFSIZ). + + Note: the "b" routines are there to exploit certain VAX order codes, + The asm code is presented for your interest and amusement. +*/ + +#ifndef BSD_FUNCS +#include "strings.h" + +#ifdef bzero +#undef bzero /* remove macro */ +#endif + +#if VaxAsm + +static void _bzero64 _A((char *dst,int len)); + +void bzero(dst, len) +char *dst; +uint len; +{ + while ((int) len >= 64*K) + { + _bzero64(dst, 64*K-1); + dst += 64*K-1; + len -= 64*K-1; + } + _bzero64(dst, len); +} + +_bzero64(dst, len) +char *dst; +int len; +{ + asm("movc5 $0,*4(ap),$0,8(ap),*4(ap)"); +} + +#else + +#if defined(MC68000) && defined(DS90) + +void bzero(dst, len) +char *dst; +uint len; +{ + bfill(dst,len,0); /* This is very optimized ! */ +} /* bzero */ + +#else + +void bzero(dst, len) +register char *dst; +register uint len; +{ + while (len-- != 0) *dst++ = 0; +} /* bzero */ + +#endif +#endif +#endif /* BSD_FUNCS */ |