diff --git a/libffi/ChangeLog b/libffi/ChangeLog
index b106384baf642b99be83fcf1f4b6f7fd6a628ae9..feb43c5efc9c7b472c51b57dee23eef9e3fb7fb3 100644
--- a/libffi/ChangeLog
+++ b/libffi/ChangeLog
@@ -49,6 +49,11 @@
 	* src/arm/sysv.S (__ARM_ARCH__): Define for processor
 	__ARM_ARCH_7EM__.
 
+2010-01-15  Oliver Kiddle  <okiddle@yahoo.co.uk>
+
+	* src/x86/ffitarget.h (ffi_abi): Check for __i386 and __amd64 for
+	Sun Studio compiler compatibility. 
+
 2010-01-12  Conrad Irwin <conrad.irwin@gmail.com>
 
 	* doc/libffi.texi: Add closure example.
diff --git a/libffi/src/x86/ffitarget.h b/libffi/src/x86/ffitarget.h
index b1d3df88f14afdf03a1035f87a166200662124cf..89a8983da9a422e55ab112ce9c010025a472254b 100644
--- a/libffi/src/x86/ffitarget.h
+++ b/libffi/src/x86/ffitarget.h
@@ -1,5 +1,5 @@
 /* -----------------------------------------------------------------*-C-*-
-   ffitarget.h - Copyright (c) 1996-2003  Red Hat, Inc.
+   ffitarget.h - Copyright (c) 1996-2003, 2010  Red Hat, Inc.
    Copyright (C) 2008  Free Software Foundation, Inc.
 
    Target configuration macros for x86 and x86-64.
@@ -74,10 +74,10 @@ typedef enum ffi_abi {
 #else
 
   /* ---- Intel x86 and AMD x86-64 - */
-#if !defined(X86_WIN32) && (defined(__i386__) || defined(__x86_64__))
+#if !defined(X86_WIN32) && (defined(__i386__) || defined(__x86_64__) || defined(__i386) || defined(__amd64))
   FFI_SYSV,
   FFI_UNIX64,   /* Unix variants all use the same ABI for x86-64  */
-#ifdef __i386__
+#if defined(__i386__) || defined(__i386)
   FFI_DEFAULT_ABI = FFI_SYSV,
 #else
   FFI_DEFAULT_ABI = FFI_UNIX64,