diff -Naur b/jffi/build.xml a/jffi/build.xml
--- b/jffi/build.xml 2016-10-26 13:57:20.000000000 +0800
+++ a/jffi/build.xml 2016-10-26 17:12:55.645022616 +0800
@@ -34,6 +34,7 @@
+
@@ -103,6 +104,11 @@
+
+
+
+
+
diff -Naur b/jffi/jni/GNUmakefile a/jffi/jni/GNUmakefile
--- b/jffi/jni/GNUmakefile 2016-10-26 13:57:20.000000000 +0800
+++ a/jffi/jni/GNUmakefile 2016-10-26 17:12:55.551225296 +0800
@@ -243,7 +243,7 @@
MODEL=64
endif
-ifneq ($(findstring $(CPU), x86_64 amd64 ppc64 ppc64le powerpc64 s390x aarch64),)
+ifneq ($(findstring $(CPU), x86_64 amd64 ppc64 ppc64le powerpc64 s390x aarch64 mips64el),)
MODEL = 64
endif
diff -Naur b/jffi/jni/jffi/Foreign.c a/jffi/jni/jffi/Foreign.c
--- b/jffi/jni/jffi/Foreign.c 2016-10-26 13:57:20.000000000 +0800
+++ a/jffi/jni/jffi/Foreign.c 2016-10-26 17:12:55.559041740 +0800
@@ -242,6 +242,13 @@
#elif defined(__ppc__) || defined(__powerpc__) || defined(__powerpc)
# define CPU "ppc"
+#elif defined(__mips64)
+# if BYTE_ORDER == LITTLE_ENDIAN
+# define CPU "mips64el"
+# else
+# define CPU "mips64"
+# endif
+
/* Need to check for __sparcv9 first, because __sparc will be defined either way
. */
#elif defined(__sparcv9__) || defined(__sparcv9)
diff -Naur b/jffi/src/main/java/com/kenai/jffi/internal/StubLoader.java a/jffi/src/main/java/com/kenai/jffi/internal/StubLoader.java
--- b/jffi/src/main/java/com/kenai/jffi/internal/StubLoader.java 2016-10-26 13:57:20.000000000 +0800
+++ a/jffi/src/main/java/com/kenai/jffi/internal/StubLoader.java 2016-10-26 17:12:55.738819937 +0800
@@ -122,6 +122,8 @@
ARM,
/** AArch64 */
AARCH64,
+ /** MIPS64EL */
+ MIPS64EL,
/** Unknown CPU */
UNKNOWN;
@@ -169,7 +171,9 @@
return CPU.I386;
} else if (Util.equalsIgnoreCase("x86_64", archString, LOCALE) || Util.equalsIgnoreCase("amd64", archString, LOCALE)) {
return CPU.X86_64;
- } else if (Util.equalsIgnoreCase("ppc", archString, LOCALE) || Util.equalsIgnoreCase("powerpc", archString, LOCALE)) {
+ } else if (Util.equalsIgnoreCase("mips64el", archString, LOCALE)) {
+ return CPU.MIPS64EL;
+ } else if (Util.equalsIgnoreCase("ppc", archString, LOCALE) || Util.equalsIgnoreCase("powerpc", archString, LOCALE)) {
return CPU.PPC;
} else if (Util.equalsIgnoreCase("ppc64", archString, LOCALE) || Util.equalsIgnoreCase("powerpc64", archString, LOCALE)) {
if ("little".equals(System.getProperty("sun.cpu.endian"))) {
diff -Naur b/jffi/src/main/java/com/kenai/jffi/Platform.java a/jffi/src/main/java/com/kenai/jffi/Platform.java
--- b/jffi/src/main/java/com/kenai/jffi/Platform.java 2016-10-26 13:57:20.000000000 +0800
+++ a/jffi/src/main/java/com/kenai/jffi/Platform.java 2016-10-26 17:12:55.742728158 +0800
@@ -100,6 +100,8 @@
ARM(32),
/** AARCH64 */
AARCH64(64),
+ /** MIPS64EL */
+ MIPS64EL(64),
/** Unknown CPU */
UNKNOWN(64);
@@ -213,7 +215,9 @@
} else if (Util.equalsIgnoreCase("x86_64", archString, LOCALE) || Util.equalsIgnoreCase("amd64", archString, LOCALE)) {
return CPU.X86_64;
- } else if (Util.equalsIgnoreCase("ppc", archString, LOCALE) || Util.equalsIgnoreCase("powerpc", archString, LOCALE)) {
+ } else if (Util.equalsIgnoreCase("mips64el", archString, LOCALE)) {
+ return CPU.MIPS64EL;
+ } else if (Util.equalsIgnoreCase("ppc", archString, LOCALE) || Util.equalsIgnoreCase("powerpc", archString, LOCALE)) {
return CPU.PPC;
} else if (Util.equalsIgnoreCase("ppc64", archString, LOCALE) || Util.equalsIgnoreCase("powerpc64", archString, LOCALE)) {