diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 317bdd0b991..51e38dbd847 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,13 @@
+Fri Feb  6 16:17:30 1998  Jeffrey A Law  (law@cygnus.com)
+
+        * config/mips/tm-mips64.h (TARGET_LONG_BIT): Allow final target to
+        override.
+        (TARGET_LONG_LONG_BIT): Likewise.
+        (TARGET_PTR_BIT): Likewise.
+start-sanitize-r5900
+        * config/mips/tm-r5900.h (TARGET_PTR_BIT): Define to 32 bits.
+end-sanitize-r5900
+
 start-sanitize-sky
 Fri Feb  6 14:33:34 1998  Doug Evans  <devans@canuck.cygnus.com>
 
diff --git a/gdb/config/mips/tm-mips64.h b/gdb/config/mips/tm-mips64.h
index c1595e1d150..4dc35e2d816 100644
--- a/gdb/config/mips/tm-mips64.h
+++ b/gdb/config/mips/tm-mips64.h
@@ -33,10 +33,19 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 #define OP_LDGPR 067	/* ld */
 
 #if defined(MIPS_EABI) && (MIPS_EABI != 0)
-/* define sizes for 64-bit data types */
+/* Define sizes for 64-bit data types, allow specific targets to override
+   these values.  Doing so may violate the strict EABI, but it's necessary
+   for some MIPS III and MIPS IV machines that want 64bit longs, but 32bit
+   pointers.  */
+#ifndef TARGET_LONG_BIT
 #define TARGET_LONG_BIT      64
+#endif
+#ifndef TARGET_LONG_LONG_BIT
 #define TARGET_LONG_LONG_BIT 64
+#endif
+#ifndef TARGET_PTR_BIT
 #define TARGET_PTR_BIT       64
+#endif
 #endif /* MIPS_EABI */
 
 /* Get the basic MIPS definitions.  */