From f20b06e335baf9428a6b5d82648dc862dc4e1b41 Mon Sep 17 00:00:00 2001 From: Duane Sand Date: Thu, 24 May 2012 14:02:25 -0700 Subject: [MIPS] Add MIPS Support Change-Id: I875add0b1994f59bfbd77a29f0cf2dde5b3fa429 --- Android.mk | 5 ++++- defs.h | 4 ---- file.c | 35 +++++++++++++++++++++++++++++++++++ syscall-android.h | 2 ++ system.c | 2 +- 5 files changed, 42 insertions(+), 6 deletions(-) diff --git a/Android.mk b/Android.mk index 112891ca..52742809 100644 --- a/Android.mk +++ b/Android.mk @@ -73,7 +73,6 @@ LOCAL_CFLAGS := -DLINUX=1 \ -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 @@ LOCAL_CFLAGS := -DLINUX=1 \ 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 8be668aa..6aa76118 100644 --- a/defs.h +++ b/defs.h @@ -33,10 +33,6 @@ #include "config.h" #endif -#ifdef MIPS -#include -#endif - #ifdef linux #include #endif diff --git a/file.c b/file.c index 92efcfe8..7bad76b6 100644 --- a/file.c +++ b/file.c @@ -60,6 +60,7 @@ struct dirent64 { // 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 @@ struct statfs64 { __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 @@ printstatfs(struct tcb *tcp, long addr) (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 @@ printstatfs64(struct tcb *tcp, long addr) (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 3964b14f..ec2671d7 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 01bd9952..c0d300e5 100644 --- a/system.c +++ b/system.c @@ -88,7 +88,7 @@ #include #endif -#ifdef HAVE_ASM_SYSMIPS_H +#ifdef MIPS #include #endif -- cgit v1.2.3