From 02fec4701cee79f875c1d02b8b4aee09380dbcb8 Mon Sep 17 00:00:00 2001 From: Guillaume Cottenceau Date: Thu, 4 Jan 2001 20:04:45 +0000 Subject: integrate dietlibc/stdio per default for cdrom and disk only installs --- mdk-stage1/dietlibc/alpha/strlen.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 mdk-stage1/dietlibc/alpha/strlen.c (limited to 'mdk-stage1/dietlibc/alpha/strlen.c') diff --git a/mdk-stage1/dietlibc/alpha/strlen.c b/mdk-stage1/dietlibc/alpha/strlen.c new file mode 100644 index 000000000..ac532254a --- /dev/null +++ b/mdk-stage1/dietlibc/alpha/strlen.c @@ -0,0 +1,32 @@ +#include + +static const unsigned long long magic = 0x0101010101010101LL; + +size_t strlen(const char *s) +{ + const char *t = s; + unsigned long long word; + + if (!s) return 0; + + /* Byte compare up until 64 bit word boundary */ + for (; ((unsigned long long) t & 7); t++) + if (!*t) return t - s; + + /* Word compare */ + do { + word = *((unsigned long long *) t); t += 8; + word = (word - magic) &~ word; + word &= (magic << 7); + } while (word == 0); + + /* word & 0x8080808080808080 == word */ + word = (word - 1) & (magic << 8); + word += (word << 32); + word += (word << 16); + word += (word << 8); + t += word >> 56; + return ((const char *) t) - 8 - s; +} + + -- cgit v1.2.1