diff --git a/libffi/ChangeLog b/libffi/ChangeLog
index 3fef2f8a3faeefb6fc0fa0f54296962d800d4920..74c6b74c602c515801e10fd26eaba5e1d7422bfb 100644
--- a/libffi/ChangeLog
+++ b/libffi/ChangeLog
@@ -1,3 +1,8 @@
+2003-10-22  David Daney  <ddaney@avtrex.com>
+
+	* src/mips/ffitarget.h: Replace undefined UINT32 and friends with
+	__attribute__((__mode__(__SI__))) and friends.
+
 2003-10-22  Andreas Schwab  <schwab@suse.de>
 
 	* src/ia64/ffi.c: Replace FALSE/TRUE with false/true.
diff --git a/libffi/src/mips/ffitarget.h b/libffi/src/mips/ffitarget.h
index f6b414313f1102ed111bf9a3be049b1a0bf9e68d..9378ed0da483ac2cbd518100b281c16715bcb7f1 100644
--- a/libffi/src/mips/ffitarget.h
+++ b/libffi/src/mips/ffitarget.h
@@ -125,12 +125,12 @@
 #else /* !LIBFFI_ASM */
 #ifdef FFI_MIPS_O32
 /* O32 stack frames have 32bit integer args */
-typedef UINT32                 ffi_arg;
-typedef SINT32                 ffi_sarg;
+typedef unsigned int     ffi_arg __attribute__((__mode__(__SI__)));
+typedef signed   int     ffi_sarg __attribute__((__mode__(__SI__)));
 #else
 /* N32 and N64 frames have 64bit integer args */
-typedef UINT64                 ffi_arg;
-typedef SINT64                 ffi_sarg;
+typedef unsigned int     ffi_arg __attribute__((__mode__(__DI__)));
+typedef signed   int     ffi_sarg __attribute__((__mode__(__DI__)));
 #endif
 
 typedef enum ffi_abi {