Enhanced support for Alpha Linux. See CHANGES for details.
authorAndy Polyakov <appro@openssl.org>
Sun, 2 Jan 2000 20:46:58 +0000 (20:46 +0000)
committerAndy Polyakov <appro@openssl.org>
Sun, 2 Jan 2000 20:46:58 +0000 (20:46 +0000)
CHANGES
Configure
config

diff --git a/CHANGES b/CHANGES
index 7362056..073e7f9 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -4,6 +4,14 @@
 
  Changes between 0.9.4 and 0.9.5  [xx XXX 1999]
 
+  *) Enhanced support for Alpha Linux is added. Now ./config checks if
+     the host supports BWX extension and if Compaq C is present on the
+     $PATH. Just exploiting of the BWX extention results in 20-30%
+     performance kick for some algorithms, e.g. DES and RC4 to mention
+     a couple. Compaq C in turn generates ~20% faster code for MD5 and
+     SHA1.
+     [Andy Polyakov]
+
   *) Add support for MS "fast SGC". This is arguably a violation of the
      SSL3/TLS protocol. Netscape SGC does two handshakes: the first with
      weak crypto and after checking the certificate is SGC a second one
index fb5a194..6fad77b 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -203,6 +203,12 @@ my %table=(
 "alpha164-cc", "cc:-std1 -tune host -fast -readonly_strings::(unknown)::SIXTY_FOUR_BIT_LONG RC4_CHUNK:asm/alpha.o::",
 "FreeBSD-alpha","gcc:-DTERMIOS -O3 -fomit-frame-pointer::(unknown)::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_PTR DES_RISC2:::",
 
+#### Alpha Linux with GNU C and Compaq C setups
+"linux-alpha-gcc","gcc:-O3 -DL_ENDIAN -DTERMIO::(unknown)::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_UNROLL:asm/alpha.o::",
+"linux-alpha+bwx-gcc","gcc:-O3 -DL_ENDIAN -DTERMIO::(unknown)::SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:asm/alpha.o::",
+"linux-alpha-ccc","ccc:-fast -readonly_strings -DL_ENDIAN -DTERMIO::(unknown)::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL:asm/alpha.o::",
+"linux-alpha+bwx-ccc","ccc:-fast -readonly_strings -DL_ENDIAN -DTERMIO::(unknown)::SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL:asm/alpha.o::",
+
 # assembler versions -- currently defunct:
 ##"OpenBSD-alpha","gcc:-DTERMIOS -O3 -fomit-frame-pointer::(unknown):SIXTY_FOUR_BIT_LONG DES_INT DES_PTR DES_RISC2:asm/alpha.o::",
 
diff --git a/config b/config
index cbc2f87..32ec4a2 100755 (executable)
--- a/config
+++ b/config
@@ -311,7 +311,7 @@ else
 fi
 
 if [ "$SYSTEM" = "SunOS" ]; then
-  # assume output is "blah-blah C x.x"
+  # check for WorkShop C, expected output is "cc: blah-blah C x.x"
   CCVER=`(cc -V 2>&1) 2>/dev/null | \
        egrep -e '^cc: .* C [0-9]\.[0-9]' | \
        sed 's/.* C \([0-9]\)\.\([0-9]\).*/\1\2/'`
@@ -328,6 +328,19 @@ if [ "$SYSTEM" = "SunOS" ]; then
   fi
 fi
 
+if [ "${SYSTEM}-${MACHINE}" = "Linux-alpha" ]; then
+  # check for Compaq C, expected output is "blah-blah C Vx.x"
+  CCCVER=`(ccc -V 2>&1) 2>/dev/null | \
+       egrep -e '.* C V[0-9]\.[0-9]' | \
+       sed 's/.* C V\([0-9]\)\.\([0-9]\).*/\1\2/'`
+  CCCVER=${CCCVER:-0}
+  if [ $CCCVER -gt 60 ]; then
+    CC=ccc     # overrides gcc!!! well, ccc outperforms inoticeably
+               # only on hash routines and des, otherwise gcc (2.95)
+               # keeps along rather tight...
+  fi
+fi
+
 GCCVER=${GCCVER:-0}
 CCVER=${CCVER:-0}
 
@@ -340,9 +353,6 @@ echo Operating system: $GUESSOS
 # script above so we end up with values in vars but that would take
 # more time that I want to waste at the moment
 case "$GUESSOS" in
-  alpha-*-linux2) OUT="alpha-gcc" ;;
-  ppc-*-linux2) OUT="linux-ppc" ;;
-  mips-*-linux?) OUT="linux-mips" ;;
   mips2-sgi-irix)
        CPU=`(hinv -t cpu) 2>/dev/null | sed 's/^CPU:[^R]*R\([0-9]*\).*/\1/'`
        CPU=${CPU:-0}
@@ -369,6 +379,22 @@ case "$GUESSOS" in
        options="$options -mips4"
        OUT="irix-mips3-$CC"
        ;;
+  alpha-*-linux2)
+        ISA=`awk '/cpu model/{print$4}' /proc/cpuinfo`
+       case ${ISA:-generic} in
+       *[67])  OUT="linux-alpha+bwx-$CC" ;;
+       *)      OUT="linux-alpha-$CC" ;;
+       esac
+       if [ "$CC" = "gcc" ]; then
+           case ${ISA:-generic} in
+           EV5|EV45)           options="$options -mcpu=ev5";;
+           EV56|PCA56)         options="$options -mcpu=ev56";;
+           EV6|EV67|PCA57)     options="$options -mcpu=ev6";;
+           esac
+       fi
+       ;;
+  mips-*-linux?) OUT="linux-mips" ;;
+  ppc-*-linux2) OUT="linux-ppc" ;;
   sparc64-*-linux2)
        #Before we can uncomment following lines we have to wait at least
        #till 64-bit glibc for SPARC is operational:-(