diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index eb8865e4130a52f7c23df635998d0ffbd4d76757..74c0c9bd382eb440b80bc7d97c4ba14ff8a05601 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2002-01-30  Alexandre Oliva  <aoliva@redhat.com>
+
+	* config/mips/mips.h (PARM_BOUNDARY): Guarantee alignment of
+	arguments to 64-bit boundaries on 64-bit ABIs.
+
 2002-01-30  Steve Ellcey  <sje@cup.hp.com>
 
 	* loop.c (loop_invariant_p): Special case pic_offset_table_rtx.
diff --git a/gcc/config/mips/mips.h b/gcc/config/mips/mips.h
index 58fba77ceb5383a0430dd8f4246020cacaf5dc95..898f9f79ed7906cf5cf04cb46f5408cc10357708 100644
--- a/gcc/config/mips/mips.h
+++ b/gcc/config/mips/mips.h
@@ -1646,7 +1646,9 @@ do {							\
 #define POINTER_BOUNDARY (Pmode == DImode ? 64 : 32)
 
 /* Allocation boundary (in *bits*) for storing arguments in argument list.  */
-#define PARM_BOUNDARY (TARGET_64BIT ? 64 : 32)
+#define PARM_BOUNDARY ((mips_abi == ABI_O64 || mips_abi == ABI_N32 \
+			|| mips_abi == ABI_64 \
+			|| (mips_abi == ABI_EABI && TARGET_64BIT)) ? 64 : 32)
 
 /* Allocation boundary (in *bits*) for the code of a function.  */
 #define FUNCTION_BOUNDARY 32