diff options
author | Andy Fiddaman <omnios@citrus-it.co.uk> | 2020-12-27 17:47:37 +0000 |
---|---|---|
committer | Andy Fiddaman <omnios@citrus-it.co.uk> | 2021-01-30 17:13:33 +0000 |
commit | b30d193948be5a7794d7ae3ba0ed9c2f72c88e0f (patch) | |
tree | 6a37e590faffb9bb9af66887de645c546445036c /usr/src/lib/libsum/common/sum-att.c | |
parent | df36e06d12cbf655ddf22339ef8c39fa2b83ebf8 (diff) | |
download | illumos-joyent-b30d193948be5a7794d7ae3ba0ed9c2f72c88e0f.tar.gz |
13405 ksh93 update to 2012-08-01
13434 sh: mishandles backslash as last character of a block of input
11750 ksh mkdir builtin doesn't honor special file permissions
9199 ksh93 builtin *grep -v mishandles blank lines, blows up libgcrypt-config
6756 sh (and ksh) have issues with ${1+"$@"}
6520 ksh: sleep could wait forever
4860 ksh93: core in printf
3791 /bin/sh's builtin 'rm' busted: 'rm -f' without arguments returns error
1047 ksh overwrites child core files
880 ksh93 coredumps on 'unset'
499 "interrupted system call" when using "tee" builtin in ksh
Reviewed by: Robert Mustacchi <rm@fingolfin.org>
Reviewed by: Hans Rosenfeld <rosenfeld@grumpf.hope-2000.org>
Reviewed by: Dominik Hassler <hadfl@omnios.org>
Approved by: Rich Lowe <richlowe@richlowe.net>
Diffstat (limited to 'usr/src/lib/libsum/common/sum-att.c')
-rw-r--r-- | usr/src/lib/libsum/common/sum-att.c | 124 |
1 files changed, 0 insertions, 124 deletions
diff --git a/usr/src/lib/libsum/common/sum-att.c b/usr/src/lib/libsum/common/sum-att.c deleted file mode 100644 index 1dc2ec6214..0000000000 --- a/usr/src/lib/libsum/common/sum-att.c +++ /dev/null @@ -1,124 +0,0 @@ -/*********************************************************************** -* * -* This software is part of the ast package * -* Copyright (c) 1996-2010 AT&T Intellectual Property * -* and is licensed under the * -* Common Public License, Version 1.0 * -* by AT&T Intellectual Property * -* * -* A copy of the License is available at * -* http://www.opensource.org/licenses/cpl1.0.txt * -* (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) * -* * -* Information and Software Systems Research * -* AT&T Research * -* Florham Park NJ * -* * -* Glenn Fowler <gsf@research.att.com> * -* * -***********************************************************************/ -#pragma prototyped - -/* - * att - */ - -#define att_description \ - "The system 5 release 4 checksum. This is the default for \bsum\b \ - when \bgetconf UNIVERSE\b is \batt\b. This is the only true sum; \ - all of the other methods are order dependent." -#define att_options 0 -#define att_match "att|sys5|s5|default" -#define att_open long_open -#define att_init long_init -#define att_print long_print -#define att_data long_data -#define att_scale 512 - -#if defined(__SUNPRO_C) || defined(__GNUC__) - -#if defined(__SUNPRO_C) -# include <sun_prefetch.h> -# define sum_prefetch(addr) sun_prefetch_read_many((void *)(addr)) -#elif defined(__GNUC__) -# define sum_prefetch(addr) __builtin_prefetch((addr), 0, 3) -#else -# error Unknown compiler -#endif - -#define CBLOCK_SIZE (64) -#pragma unroll(16) - -/* Inmos transputer would love this algorithm */ -static int -att_block(register Sum_t* p, const void* s, size_t n) -{ - register uint32_t c = ((Integral_t*)p)->sum; - register const unsigned char* b = (const unsigned char*)s; - register const unsigned char* e = b + n; - register uint32_t s0, s1, s2, s3, s4, s5, s6, s7; - register unsigned int i; - - s0=s1=s2=s3=s4=s5=s6=s7=0U; - - sum_prefetch((void *)b); - - while (n > CBLOCK_SIZE) - { - sum_prefetch((b+CBLOCK_SIZE)); - - /* Compiler will unroll for() loops per #pragma unroll */ - for (i=0 ; i < (CBLOCK_SIZE/8) ; i++) - { - /* - * use s0-s7 to decouple calculations (this improves pipelining) - * because each operation is completely independent from it's - * siblings - */ - s0+=b[0]; - s1+=b[1]; - s2+=b[2]; - s3+=b[3]; - s4+=b[4]; - s5+=b[5]; - s6+=b[6]; - s7+=b[7]; - - b+=8; - n-=8; - } - } - - c+=s0+s1+s2+s3+s4+s5+s6+s7; - - while (b < e) - c += *b++; - ((Integral_t*)p)->sum = c; - return 0; -} - -#else -static int -att_block(register Sum_t* p, const void* s, size_t n) -{ - register uint32_t c = ((Integral_t*)p)->sum; - register unsigned char* b = (unsigned char*)s; - register unsigned char* e = b + n; - - while (b < e) - c += *b++; - ((Integral_t*)p)->sum = c; - return 0; -} -#endif /* defined(__SUNPRO_C) || defined(__GNUC__) */ - -static int -att_done(Sum_t* p) -{ - register uint32_t c = ((Integral_t*)p)->sum; - - c = (c & 0xffff) + ((c >> 16) & 0xffff); - c = (c & 0xffff) + (c >> 16); - ((Integral_t*)p)->sum = c & 0xffff; - return short_done(p); -} |