diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index cc5d46d896669e292b802ae3f475ff60ca4c5dec..6491a8194bfb40cc685b61d3c3517e3b3e5f4701 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2001-09-27  Aldy Hernandez  <aldyh@redhat.com>
+
+	* config/rs6000/rs6000.h (FUNCTION_VALUE): Change hardcoded 33 and 3 
+	to macros.
+	(LIBCALL_VALUE): Likewise.
+
 2001-09-27  Neil Booth  <neil@daikokuya.demon.co.uk>
 
 	* cpphash.h: Update comment.
diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h
index a1103a7b01fff38c45a43d24d45cd367e4e9c341..3e8780da69a5e982e5200e8af19eb8bd2dd65902 100644
--- a/gcc/config/rs6000/rs6000.h
+++ b/gcc/config/rs6000/rs6000.h
@@ -1292,14 +1292,16 @@ typedef struct rs6000_stack {
 		&& TYPE_PRECISION (VALTYPE) < BITS_PER_WORD)	\
 	       || POINTER_TYPE_P (VALTYPE)			\
 	       ? word_mode : TYPE_MODE (VALTYPE),		\
-	       TREE_CODE (VALTYPE) == REAL_TYPE && TARGET_HARD_FLOAT ? 33 : 3)
+	       TREE_CODE (VALTYPE) == REAL_TYPE && TARGET_HARD_FLOAT \
+               ? FP_ARG_RETURN : GP_ARG_RETURN)
 
 /* Define how to find the value returned by a library function
    assuming the value has mode MODE.  */
 
-#define LIBCALL_VALUE(MODE)		\
-  gen_rtx_REG (MODE, (GET_MODE_CLASS (MODE) == MODE_FLOAT	 \
-		      && TARGET_HARD_FLOAT ? 33 : 3))
+#define LIBCALL_VALUE(MODE)					\
+  gen_rtx_REG (MODE, (GET_MODE_CLASS (MODE) == MODE_FLOAT	\
+		      && TARGET_HARD_FLOAT			\
+		      ? FP_ARG_RETURN : GP_ARG_RETURN))
 
 /* The definition of this macro implies that there are cases where
    a scalar value cannot be returned in registers.