Merge "[MIPS] Add MIPS Support"
diff --git a/Android.mk b/Android.mk
index 112891c..5274280 100644
--- a/Android.mk
+++ b/Android.mk
@@ -73,7 +73,6 @@
 	-DHAVE_STRUCT_STAT_ST_BLOCKS=1 \
 	-DHAVE_STRUCT_STAT_ST_RDEV=1 \
 	-DHAVE_STRUCT_USER_DESC=1 \
-	-DHAVE_STRUCT___OLD_KERNEL_STAT=1 \
 	-DHAVE_SYS_EPOLL_H=1 \
 	-DHAVE_SYS_IOCTL_H=1 \
 	-DHAVE_SYS_POLL_H=1 \
@@ -109,13 +108,17 @@
 arch := $(TARGET_ARCH)
 ifeq ($(TARGET_ARCH),arm)
 	LOCAL_CFLAGS += -DARM=1 -DHAVE_LITTLE_ENDIAN_LONG_LONG=1
+	LOCAL_CFLAGS += -DHAVE_STRUCT___OLD_KERNEL_STAT=1
 else ifeq ($(TARGET_ARCH),x86)
 	LOCAL_CFLAGS += -DI386=1 -DHAVE_LITTLE_ENDIAN_LONG_LONG=1
+        LOCAL_CFLAGS += -DHAVE_STRUCT___OLD_KERNEL_STAT=1
 	arch := i386
 else ifeq ($(TARGET_ARCH),sh)
 	LOCAL_CFLAGS += -DSH=1 -DHAVE_LITTLE_ENDIAN_LONG_LONG=1
+        LOCAL_CFLAGS += -DHAVE_STRUCT___OLD_KERNEL_STAT=1
 else ifeq ($(TARGET_ARCH),mips)
 	LOCAL_CFLAGS += -DMIPS=1 -DHAVE_LITTLE_ENDIAN_LONG_LONG=1
+#	Mips does not use STRUCT__OLD_KERNEL_STAT type
 endif
 
 LOCAL_CFLAGS += -Wno-missing-field-initializers
diff --git a/defs.h b/defs.h
index 8be668a..6aa7611 100644
--- a/defs.h
+++ b/defs.h
@@ -33,10 +33,6 @@
 #include "config.h"
 #endif
 
-#ifdef MIPS
-#include <sgidefs.h>
-#endif
-
 #ifdef linux
 #include <features.h>
 #endif
diff --git a/file.c b/file.c
index 92efcfe..7bad76b 100644
--- a/file.c
+++ b/file.c
@@ -60,6 +60,7 @@
 
 // ANDROID: From kernel_headers/asm/statfs.h
 
+#if !defined(MIPS)
 /*
  * With EABI there is 4 bytes of padding added to this structure.
  * Let's pack it so the padding goes away to simplify dual ABI support.
@@ -78,6 +79,24 @@
         __u32 f_frsize;
         __u32 f_spare[5];
 } __attribute__ ((packed,aligned(4)));
+#else
+struct statfs64 {
+	__u32 f_type;
+	__u32 f_bsize;
+	__u32 f_frsize;
+	__u32 __pad;
+	__u64 f_blocks;
+	__u64 f_bfree;
+	__u64 f_files;
+	__u64 f_ffree;
+	__u64 f_bavail;
+	__kernel_fsid_t f_fsid;
+	__u32 f_namelen;
+	__u32 f_spare[6];
+};
+#endif
+
+
 #endif /* HAVE_ANDROID_OS */
 
 #ifdef LINUX
@@ -1767,11 +1786,19 @@
 		(unsigned long)statbuf.f_bsize,
 		(unsigned long)statbuf.f_blocks,
 		(unsigned long)statbuf.f_bfree);
+#ifdef MIPS
+	tprintf("f_bavail=%lu, f_files=%lu, f_ffree=%lu, f_fsid={%ld, %ld}",
+		(unsigned long)statbuf.f_bavail,
+		(unsigned long)statbuf.f_files,
+		(unsigned long)statbuf.f_ffree,
+		statbuf.f_fsid.val[0], statbuf.f_fsid.val[1]);
+#else
 	tprintf("f_bavail=%lu, f_files=%lu, f_ffree=%lu, f_fsid={%d, %d}",
 		(unsigned long)statbuf.f_bavail,
 		(unsigned long)statbuf.f_files,
 		(unsigned long)statbuf.f_ffree,
 		statbuf.f_fsid.__val[0], statbuf.f_fsid.__val[1]);
+#endif
 #ifdef LINUX
 	tprintf(", f_namelen=%lu", (unsigned long)statbuf.f_namelen);
 #endif /* LINUX */
@@ -1825,11 +1852,19 @@
 		(unsigned long long)statbuf.f_bsize,
 		(unsigned long long)statbuf.f_blocks,
 		(unsigned long long)statbuf.f_bfree);
+#ifdef MIPS
+	tprintf("f_bavail=%llu, f_files=%llu, f_ffree=%llu, f_fsid={%ld, %ld}",
+		(unsigned long long)statbuf.f_bavail,
+		(unsigned long long)statbuf.f_files,
+		(unsigned long long)statbuf.f_ffree,
+		statbuf.f_fsid.val[0], statbuf.f_fsid.val[1]);
+#else
 	tprintf("f_bavail=%llu, f_files=%llu, f_ffree=%llu, f_fsid={%d, %d}",
 		(unsigned long long)statbuf.f_bavail,
 		(unsigned long long)statbuf.f_files,
 		(unsigned long long)statbuf.f_ffree,
 		statbuf.f_fsid.__val[0], statbuf.f_fsid.__val[1]);
+#endif
 	tprintf(", f_namelen=%lu", (unsigned long)statbuf.f_namelen);
 #ifdef _STATFS_F_FRSIZE
 	tprintf(", f_frsize=%llu", (unsigned long long)statbuf.f_frsize);
diff --git a/syscall-android.h b/syscall-android.h
index 3964b14..ec2671d 100644
--- a/syscall-android.h
+++ b/syscall-android.h
@@ -280,7 +280,9 @@
 #define SYS_ustat __NR_ustat
 #define SYS_utime __NR_utime
 #define SYS_utimes __NR_utimes
+#ifdef __NR_vfork
 #define SYS_vfork __NR_vfork
+#endif
 #define SYS_vhangup __NR_vhangup
 #define SYS_vm86 __NR_vm86
 #define SYS_vm86old __NR_vm86old
diff --git a/system.c b/system.c
index 01bd995..c0d300e 100644
--- a/system.c
+++ b/system.c
@@ -88,7 +88,7 @@
 #include <linux/utsname.h>
 #endif
 
-#ifdef HAVE_ASM_SYSMIPS_H
+#ifdef MIPS
 #include <asm/sysmips.h>
 #endif