diff --git a/config/ChangeLog b/config/ChangeLog
index 22a36414fc3..af069550312 100644
--- a/config/ChangeLog
+++ b/config/ChangeLog
@@ -1,3 +1,7 @@
+2010-09-03  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
+
+	* dfp.m4: New file.
+
 2010-08-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
 
 	PR target/45084
diff --git a/config/dfp.m4 b/config/dfp.m4
new file mode 100644
index 00000000000..4cace763fa4
--- /dev/null
+++ b/config/dfp.m4
@@ -0,0 +1,53 @@
+dnl @synopsis GCC_AC_ENABLE_DECIMAL_FLOAT([target triplet])
+dnl
+dnl Enable C extension for decimal float if target supports it.
+dnl
+dnl @author Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
+
+AC_DEFUN([GCC_AC_ENABLE_DECIMAL_FLOAT],
+[
+AC_ARG_ENABLE(decimal-float,
+[  --enable-decimal-float={no,yes,bid,dpd}
+			enable decimal float extension to C.  Selecting 'bid'
+			or 'dpd' choses which decimal floating point format
+			to use],
+[
+  case $enable_decimal_float in
+    yes | no | bid | dpd) ;;
+    *) AC_MSG_ERROR(['$enable_decimal_float' is an invalid value for --enable-decimal-float.
+Valid choices are 'yes', 'bid', 'dpd', and 'no'.]) ;;
+  esac
+],
+[
+  case $1 in
+    powerpc*-*-linux* | i?86*-*-linux* | x86_64*-*-linux* | s390*-*-linux*)
+      enable_decimal_float=yes
+      ;;
+    *)
+      AC_MSG_WARN(decimal float is not supported for this target, ignored)
+      enable_decimal_float=no
+      ;;
+  esac
+])
+
+# x86's use BID format instead of DPD
+case x$enable_decimal_float in
+  xyes)
+    case $1 in
+      i?86*-*-* | x86_64*-*-*)
+	enable_decimal_float=bid
+	;;
+      *)
+	enable_decimal_float=dpd
+	;;
+    esac
+    ;;
+  xno)
+    # ENABLE_DECIMAL_FLOAT is set to 0. But we have to have proper
+    # dependency on libdecnumber.
+    enable_decimal_float=dpd
+    ;;
+esac
+AC_SUBST(enable_decimal_float)
+
+])
\ No newline at end of file
diff --git a/libdecnumber/ChangeLog b/libdecnumber/ChangeLog
index 9ea1ed70c4e..b7952d08968 100644
--- a/libdecnumber/ChangeLog
+++ b/libdecnumber/ChangeLog
@@ -1,3 +1,10 @@
+2010-09-03  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
+
+	* configure.ac: Use the GCC_AC_ENABLE_DECIMAL_FLOAT macro.
+	* Makefile.in: Add aclocal.m4 dependency to dfp.m4.
+	* configure: Regenerate.
+	* aclocal.m4: Regenerate.
+
 2010-08-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
 
 	* configure: Regenerate.
diff --git a/libdecnumber/Makefile.in b/libdecnumber/Makefile.in
index de91f6f614b..6424c3857de 100644
--- a/libdecnumber/Makefile.in
+++ b/libdecnumber/Makefile.in
@@ -98,6 +98,7 @@ aclocal_deps = \
 	$(srcdir)/../config/stdint.m4 \
 	$(srcdir)/../config/warnings.m4 \
 	$(srcdir)/../config/override.m4 \
+	$(srcdir)/../config/dfp.m4 \
 	$(srcdir)/configure.ac
 
 $(srcdir)/aclocal.m4: @MAINT@ $(aclocal_deps)
diff --git a/libdecnumber/aclocal.m4 b/libdecnumber/aclocal.m4
index 7dc0312687f..fda021e817f 100644
--- a/libdecnumber/aclocal.m4
+++ b/libdecnumber/aclocal.m4
@@ -11,6 +11,7 @@
 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 # PARTICULAR PURPOSE.
 
+m4_include([../config/dfp.m4])
 m4_include([../config/override.m4])
 m4_include([../config/stdint.m4])
 m4_include([../config/warnings.m4])
diff --git a/libdecnumber/configure b/libdecnumber/configure
index ce319763ba4..636839cf369 100755
--- a/libdecnumber/configure
+++ b/libdecnumber/configure
@@ -4588,6 +4588,8 @@ test -n "$target_alias" &&
 # If you change the defaults here, be sure to change them in the GCC directory also
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for decimal floating point" >&5
 $as_echo_n "checking for decimal floating point... " >&6; }
+
+
 # Check whether --enable-decimal-float was given.
 if test "${enable_decimal_float+set}" = set; then :
   enableval=$enable_decimal_float;
@@ -4600,10 +4602,12 @@ Valid choices are 'yes', 'bid', 'dpd', and 'no'." "$LINENO" 5 ;;
 else
 
   case $target in
-    powerpc*-*-linux* | i?86*-*-linux* | x86_64*-*-linux*)
+    powerpc*-*-linux* | i?86*-*-linux* | x86_64*-*-linux* | s390*-*-linux*)
       enable_decimal_float=yes
       ;;
     *)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: decimal float is not supported for this target" >&5
+$as_echo "$as_me: WARNING: decimal float is not supported for this target" >&2;}
       enable_decimal_float=no
       ;;
   esac
@@ -4612,18 +4616,26 @@ fi
 
 
 # x86's use BID format instead of DPD
-# In theory --enable-decimal-float=no should not compile anything
-# For the sake of simplicity, just use the default format in this directory
-if test x$enable_decimal_float = xyes -o x$enable_decimal_float = xno; then
-  case $target in
-    i?86*-*-linux* | x86_64*-*-linux*)
-      enable_decimal_float=bid
-      ;;
-    *)
-      enable_decimal_float=dpd
-      ;;
-  esac
-fi
+case x$enable_decimal_float in
+  xyes)
+    case $target in
+      i?86*-*-* | x86_64*-*-*)
+	enable_decimal_float=bid
+	;;
+      *)
+	enable_decimal_float=dpd
+	;;
+    esac
+    ;;
+  xno)
+    # ENABLE_DECIMAL_FLOAT is set to 0. But we have to have proper
+    # dependency on libdecnumber.
+    enable_decimal_float=dpd
+    ;;
+esac
+
+
+
 
 # If BID is being used, additional objects should be linked in.
 if test x$enable_decimal_float = xbid; then
diff --git a/libdecnumber/configure.ac b/libdecnumber/configure.ac
index 4d9060f5cd5..a4cbf55f1a4 100644
--- a/libdecnumber/configure.ac
+++ b/libdecnumber/configure.ac
@@ -75,42 +75,8 @@ AC_CANONICAL_TARGET
 # Default decimal format
 # If you change the defaults here, be sure to change them in the GCC directory also
 AC_MSG_CHECKING([for decimal floating point])
-AC_ARG_ENABLE(decimal-float,
-[  --enable-decimal-float={no,yes,bid,dpd}
-			enable decimal float extension to C.  Selecting 'bid'
-			or 'dpd' choses which decimal floating point format
-			to use],
-[
-  case $enable_decimal_float in
-    yes | no | bid | dpd) ;;
-    *) AC_MSG_ERROR(['$enable_decimal_float' is an invalid value for --enable-decimal-float.
-Valid choices are 'yes', 'bid', 'dpd', and 'no'.]) ;;
-  esac
-],
-[
-  case $target in
-    powerpc*-*-linux* | i?86*-*-linux* | x86_64*-*-linux*)
-      enable_decimal_float=yes
-      ;;
-    *)
-      enable_decimal_float=no
-      ;;
-  esac
-])
 
-# x86's use BID format instead of DPD
-# In theory --enable-decimal-float=no should not compile anything
-# For the sake of simplicity, just use the default format in this directory
-if test x$enable_decimal_float = xyes -o x$enable_decimal_float = xno; then
-  case $target in
-    i?86*-*-linux* | x86_64*-*-linux*)
-      enable_decimal_float=bid
-      ;;
-    *)
-      enable_decimal_float=dpd
-      ;;
-  esac
-fi
+GCC_AC_ENABLE_DECIMAL_FLOAT([$target])
 
 # If BID is being used, additional objects should be linked in.
 if test x$enable_decimal_float = xbid; then