diff --git a/Makefile b/Makefile
index dd6f71ee2badbba2354201575edcccdc209b1d76..c5cbeb7343e2be1064e8c597c041408be6d28d2f 100644
--- a/Makefile
+++ b/Makefile
@@ -128,9 +128,11 @@ endif
 ifneq ($(SRPUTILLIB),)
 MODULES      += srputils
 endif
+ifneq ($(KRB5INCDIR),)
 ifneq ($(KRB5LIB),)
 MODULES      += krb5auth
 endif
+endif
 ifneq ($(LDAPINCDIR),)
 ifneq ($(LDAPCLILIB),)
 MODULES      += ldap
diff --git a/base/inc/RConfig.h b/base/inc/RConfig.h
index f409d40d9506a3c0e946d45cdfc11bdaf3fb0102..a1e17ef8855ce87f7bed098e43c66cf9ea09ae54 100644
--- a/base/inc/RConfig.h
+++ b/base/inc/RConfig.h
@@ -1,4 +1,4 @@
-/* @(#)root/base:$Name:  $:$Id: RConfig.h,v 1.54 2003/04/11 11:48:10 rdm Exp $ */
+/* @(#)root/base:$Name:  $:$Id: RConfig.h,v 1.55 2003/04/11 18:21:27 rdm Exp $ */
 
 /*************************************************************************
  * Copyright (C) 1995-2002, Rene Brun and Fons Rademakers.               *
@@ -172,6 +172,14 @@
 #   define NEED_SIGJMP
 #endif
 
+#if defined(linux) && defined(__x86_64__)
+#   define R__LINUX
+#   define R__UNIX
+#   define R__BYTESWAP
+#   define R__B64
+#   define NEED_SIGJMP
+#endif
+
 #if defined(linux) && defined(__alpha__)
 #   define R__LINUX
 #   define R__UNIX
diff --git a/cint/iosenum/iosenum.linuxx8664gcc3 b/cint/iosenum/iosenum.linuxx8664gcc3
new file mode 100644
index 0000000000000000000000000000000000000000..ee97bc7feb0d4efae126ef748aa34970f587143f
--- /dev/null
+++ b/cint/iosenum/iosenum.linuxx8664gcc3
@@ -0,0 +1,69 @@
+/* include/platform/iosenum.h
+ *  This file contains platform dependent ios enum value.
+ *  Run 'cint iosenum.cxx' to create this file. It is done
+ *  only once at installation. */
+#pragma ifndef G__TMPLTIOS
+static int ios::goodbit=0;
+static int ios::eofbit=2;
+static int ios::failbit=4;
+static int ios::badbit=1;
+static int ios::in=8;
+static int ios::out=16;
+static int ios::ate=2;
+static int ios::app=1;
+static int ios::trunc=32;
+static int ios::binary=4;
+static int ios::beg=0;
+static int ios::cur=1;
+static int ios::end=2;
+static int ios::boolalpha=1;
+static int ios::adjustfield=176;
+static int ios::basefield=74;
+static int ios::floatfield=260;
+static int ios::skipws=4096;
+static int ios::left=32;
+static int ios::right=128;
+static int ios::internal=16;
+static int ios::dec=2;
+static int ios::oct=64;
+static int ios::hex=8;
+static int ios::showbase=512;
+static int ios::showpoint=1024;
+static int ios::uppercase=16384;
+static int ios::showpos=2048;
+static int ios::scientific=256;
+static int ios::fixed=4;
+static int ios::unitbuf=8192;
+#pragma else
+static ios_base::fmtflags ios_base::boolalpha=1;
+static ios_base::fmtflags ios_base::dec=2;
+static ios_base::fmtflags ios_base::fixed=4;
+static ios_base::fmtflags ios_base::hex=8;
+static ios_base::fmtflags ios_base::internal=16;
+static ios_base::fmtflags ios_base::left=32;
+static ios_base::fmtflags ios_base::oct=64;
+static ios_base::fmtflags ios_base::right=128;
+static ios_base::fmtflags ios_base::scientific=256;
+static ios_base::fmtflags ios_base::showbase=512;
+static ios_base::fmtflags ios_base::showpoint=1024;
+static ios_base::fmtflags ios_base::showpos=2048;
+static ios_base::fmtflags ios_base::skipws=4096;
+static ios_base::fmtflags ios_base::unitbuf=8192;
+static ios_base::fmtflags ios_base::uppercase=16384;
+static ios_base::fmtflags ios_base::adjustfield=176;
+static ios_base::fmtflags ios_base::basefield=74;
+static ios_base::fmtflags ios_base::floatfield=260;
+static ios_base::fmtflags ios_base::badbit=1;
+static ios_base::fmtflags ios_base::eofbit=2;
+static ios_base::fmtflags ios_base::failbit=4;
+static ios_base::fmtflags ios_base::goodbit=0;
+static ios_base::fmtflags ios_base::app=1;
+static ios_base::fmtflags ios_base::ate=2;
+static ios_base::fmtflags ios_base::binary=4;
+static ios_base::fmtflags ios_base::in=8;
+static ios_base::fmtflags ios_base::out=16;
+static ios_base::fmtflags ios_base::trunc=32;
+static ios_base::fmtflags ios_base::beg=0;
+static ios_base::fmtflags ios_base::cur=1;
+static ios_base::fmtflags ios_base::end=2;
+#pragma endif
diff --git a/config/ARCHS b/config/ARCHS
index d88c2a163724b7f8f3701e25a6aef3928008ae68..9073e63457482f70a6752c4e7843b5f995c1c8a4 100644
--- a/config/ARCHS
+++ b/config/ARCHS
@@ -28,6 +28,7 @@ linuxppcegcs         for PPC Linux egcs and glibc
 linuxrh42            for Linux gcc 2.7.x.x and libc5
 linuxrh51            for Linux gcc 2.7.x.x and glibc
 linuxsuse6           for Linux (SuSE v6.0) egcs and glibc
+linuxx8664gcc        for AMD Opteron (64 bit mode) Linux gcc 3.x and glibc
 lynxos               for LynxOS with gcc
 macosx               for MacOS X with cc
 mklinux              for MkLinux gcc and glibc
diff --git a/config/Makefile.linuxx8664gcc b/config/Makefile.linuxx8664gcc
new file mode 100644
index 0000000000000000000000000000000000000000..709a086a28c3f84f421a3a6a140cccdc5abee17c
--- /dev/null
+++ b/config/Makefile.linuxx8664gcc
@@ -0,0 +1,48 @@
+# -*- mode: makefile -*-
+#
+# Makefile of ROOT for AMD Opteron (64 bit mode) Linux with gcc
+
+PLATFORM      = linux
+
+DEBUGFLAGS    = -g
+OPTFLAGS      = -O2
+ifeq (debug,$(findstring debug,$(ROOTBUILD)))
+OPT           = $(DEBUGFLAGS)
+NOOPT         =
+else
+OPT           = $(OPTFLAGS)
+NOOPT         =
+endif
+
+# Compiler:
+CXX           = g++
+CC            = gcc
+CXXFLAGS      = -pipe -Wall -fPIC $(EXTRA_CXXFLAGS)
+CFLAGS        = -pipe -Wall -fPIC $(EXTRA_CFLAGS)
+CINTCXXFLAGS  = -pipe -Wall -fPIC $(EXTRA_CXXFLAGS) \
+                -DG__REGEXP -DG__UNIX -DG__SHAREDLIB \
+                -DG__OSFDLL -DG__ROOT -DG__REDIRECTIO -DG__64BIT
+CINTCFLAGS    = -pipe -Wall -fPIC $(EXTRA_CFLAGS) \
+                -DG__REGEXP -DG__UNIX -DG__SHAREDLIB \
+                -DG__OSFDLL -DG__ROOT -DG__REDIRECTIO -DG__64BIT
+COMPILER      = gnu
+
+# Linker:
+LD            = g++
+LDFLAGS       = $(OPT) $(EXTRA_LDFLAGS)
+SOFLAGS       = -shared -Wl,-soname,
+SOEXT         = so
+
+# System libraries:
+SYSLIBS       = -lm -ldl $(OSTHREADLIBDIR) $(OSTHREADLIB) -rdynamic
+XLIBS         = $(XPMLIBDIR) $(XPMLIB) $(X11LIBDIR) -lX11
+CILIBS        = -lm -ldl -rdynamic
+CRYPTLIBS     = -lcrypt
+
+# Fortran:
+F77           = g77
+F77FLAGS      =
+F77LIBS       = -lg2c -lnsl
+
+# Extras
+
diff --git a/config/root-config.in b/config/root-config.in
index f6cfe976153b4c2a83a6a1eb7967510183e84d1e..5af24240a1a9525a30eb3b3f9df5daea8f2279a3 100755
--- a/config/root-config.in
+++ b/config/root-config.in
@@ -220,6 +220,12 @@ linuxia64ecc)
    auxlibs="-lm -ldl"
    auxglibs=${auxlibs}
    ;;
+linuxx8664gcc)
+   # AMD Opteron (64 bit mode) Linux with gcc 3.x
+   auxcflags=
+   auxlibs="-lm -ldl -rdynamic"
+   auxglibs=${auxlibs}
+   ;;
 linuxalphaegcs)
    # Alpha Linux with egcs
    auxcflags=
diff --git a/configure b/configure
index eb672e6ca6b68c1842beea8f21049a0b0796ca81..a0faf14793022f618694682928e223772f552844 100755
--- a/configure
+++ b/configure
@@ -137,19 +137,26 @@ check_library() {
 
     # Loop over the list of possible directories, and see if we can
     # find any of the library files as determind above.
-    for i in $libdirs; do
-        for j in ${libs} ; do
-	    # if we found the file (it's readable by user), we set the
-	    # logical variables an be on our way, otherwise we continue
-            if test  -r $i/$j ; then
-                found_dir=$i
-                found_lib=$j
-                break 2
-            fi
+    for i in $libdirs ; do
+        # look first in the lib64 directories
+        if test "x$checklib64" = "xyes" ; then
+            i64=`echo $i | sed 's|lib|lib64|'`
+            i="$i64 $i"
+        fi
+        for l in $i ; do
+            for j in ${libs} ; do
+	        # if we found the file (it's readable by user), we set the
+	        # logical variables and are on our way, otherwise we continue
+                if test  -r $l/$j ; then
+                    found_dir=$l
+                    found_lib=$j
+                    break 3
+                fi
+            done
         done
     done
 
-    # skip cygwin  libraries when in pure Win32 mode
+    # skip cygwin libraries when in pure Win32 mode
     if test "x$platform" = "xwin32"; then
         case $found_dir in
            /lib|/usr/*) found_dir="no" ;;
@@ -461,6 +468,9 @@ else
       else
          platform=$arch
       fi
+      if test "x$arch" = "xlinuxx8664gcc" ; then
+         checklib64="yes"
+      fi
       ;;
    esac
 fi
diff --git a/rootd/Module.mk b/rootd/Module.mk
index 08f7e9bb0314cd41fc1cfe6beb0cb5a9d5731bcf..95ccb4820f308bcae77b9737eefee1140b30a6b4 100644
--- a/rootd/Module.mk
+++ b/rootd/Module.mk
@@ -36,10 +36,12 @@ SRPLIBS      := $(SRPLIBDIR) $(SRPLIB)
 endif
 
 ##### use krb5 for authentication #####
+ifneq ($(KRB5INCDIR),)
 ifneq ($(KRB5LIB),)
 KRB5FLAGS     := -DR__KRB5 -I$(KRB5INCDIR)
 KRB5LIBS      := $(KRB5LIBDIR) $(KRB5LIB)
 endif
+endif
 
 AUTHFLAGS    := $(SHADOWFLAGS) $(AFSFLAGS) $(SRPFLAGS) $(KRB5FLAGS) \
                 $(EXTRA_AUTHFLAGS)
diff --git a/test/Makefile b/test/Makefile
index cbd5ce24a2ff419de7bacab5bbf4aeaf203ee108..d31a8291dbe4ee3e14621260e7e24db9b34e7cfc 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -366,6 +366,15 @@ LDFLAGS       = -O -i_dynamic
 SOFLAGS       = -shared
 endif
 
+ifeq ($(ARCH),linuxx8664gcc)
+# AMD Opteron (64 bit mode) Linux with gcc 3.x
+CXX           = g++
+CXXFLAGS      = -O -Wall -fPIC
+LD            = g++
+LDFLAGS       = -O
+SOFLAGS       = -shared
+endif
+
 ifeq ($(ARCH),linuxalphaegcs)
 # Alpha Linux with egcs
 CXX           = g++