[MIPS64] libc/libm support

libc/libm support for MIPS64 targets

Change-Id: I8271941d418612a286be55495f0e95822f90004f
Signed-off-by: Chris Dearman <chris.dearman@imgtec.com>
Signed-off-by: Raghu Gandham <raghu.gandham@imgtec.com>
diff --git a/libc/include/sys/stat.h b/libc/include/sys/stat.h
index 3d754c0..37b8dc2 100644
--- a/libc/include/sys/stat.h
+++ b/libc/include/sys/stat.h
@@ -62,24 +62,24 @@
 };
 #elif defined(__mips__)
 struct stat {
-  unsigned long st_dev;
-  unsigned long __pad0[3];
+  unsigned int st_dev;
+  unsigned int __pad0[3];
   unsigned long long st_ino;
   unsigned int st_mode;
   unsigned int st_nlink;
-  unsigned long st_uid;
-  unsigned long st_gid;
-  unsigned long st_rdev;
-  unsigned long __pad1[3];
+  unsigned int st_uid;
+  unsigned int st_gid;
+  unsigned int st_rdev;
+  unsigned int __pad1[3];
   long long st_size;
-  unsigned long st_atime;
-  unsigned long st_atime_nsec;
-  unsigned long st_mtime;
-  unsigned long st_mtime_nsec;
-  unsigned long st_ctime;
-  unsigned long st_ctime_nsec;
-  unsigned long st_blksize;
-  unsigned long __pad2;
+  unsigned int st_atime;
+  unsigned int st_atime_nsec;
+  unsigned int st_mtime;
+  unsigned int st_mtime_nsec;
+  unsigned int st_ctime;
+  unsigned int st_ctime_nsec;
+  unsigned int st_blksize;
+  unsigned int __pad2;
   unsigned long long st_blocks;
 };
 #elif defined(__x86_64__)
diff --git a/libc/include/sys/vfs.h b/libc/include/sys/vfs.h
index 10fe502..10afbc3 100644
--- a/libc/include/sys/vfs.h
+++ b/libc/include/sys/vfs.h
@@ -38,7 +38,7 @@
 typedef struct { int __val[2]; } __fsid_t;
 typedef __fsid_t fsid_t;
 
-#if defined(__LP64__)
+#if defined(__aarch64__) || defined(__x86_64__)
 struct statfs {
   uint64_t f_type;
   uint64_t f_bsize;
@@ -53,6 +53,22 @@
   uint64_t f_flags;
   uint64_t f_spare[4];
 };
+#elif defined(__mips__) && defined(__LP64__)
+/* 64-bit MIPS. */
+struct statfs {
+  uint64_t f_type;
+  uint64_t f_bsize;
+  uint64_t f_frsize; /* Fragment size - unsupported. */
+  uint64_t f_blocks;
+  uint64_t f_bfree;
+  uint64_t f_files;
+  uint64_t f_ffree;
+  uint64_t f_bavail;
+  fsid_t f_fsid;
+  uint64_t f_namelen;
+  uint64_t f_flags;
+  uint64_t f_spare[5];
+};
 #elif defined(__mips__)
 /* 32-bit MIPS (corresponds to the kernel's statfs64 type). */
 struct statfs {