Various linux-user structures and definitions fixes for PowerPC targets.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3800 c046a42c-6fe2-441c-8c8c-71466251a162
diff --git a/linux-user/ppc/syscall.h b/linux-user/ppc/syscall.h
index f98d2bc..2035dfb 100644
--- a/linux-user/ppc/syscall.h
+++ b/linux-user/ppc/syscall.h
@@ -26,20 +26,24 @@
 #define __USER_DS	(1)
 
 struct target_pt_regs {
-	unsigned long gpr[32];
-	unsigned long nip;
-	unsigned long msr;
-	unsigned long orig_gpr3;	/* Used for restarting system calls */
-	unsigned long ctr;
-	unsigned long link;
-	unsigned long xer;
-	unsigned long ccr;
-	unsigned long mq;		/* 601 only (not used at present) */
+	abi_ulong gpr[32];
+	abi_ulong nip;
+	abi_ulong msr;
+	abi_ulong orig_gpr3;	/* Used for restarting system calls */
+	abi_ulong ctr;
+	abi_ulong link;
+	abi_ulong xer;
+	abi_ulong ccr;
+#if defined(TARGET_PPC64) && !defined(TARGET_ABI32)
+        abi_ulong softe;
+#else
+	abi_ulong mq;		/* 601 only (not used at present) */
+#endif
 					/* Used on APUS to hold IPL value. */
-	unsigned long trap;		/* Reason for being here */
-	unsigned long dar;		/* Fault registers */
-	unsigned long dsisr;
-	unsigned long result; 		/* Result of a system call */
+	abi_ulong trap;		/* Reason for being here */
+	abi_ulong dar;		/* Fault registers */
+	abi_ulong dsisr;
+	abi_ulong result; 		/* Result of a system call */
 };
 
 /* ioctls */
diff --git a/linux-user/ppc/target_signal.h b/linux-user/ppc/target_signal.h
index defae80..a93b5cf 100644
--- a/linux-user/ppc/target_signal.h
+++ b/linux-user/ppc/target_signal.h
@@ -7,7 +7,7 @@
 
 typedef struct target_sigaltstack {
 	abi_ulong ss_sp;
-	abi_long ss_flags;
+	int ss_flags;
 	abi_ulong ss_size;
 } target_stack_t;
 
diff --git a/linux-user/socket.h b/linux-user/socket.h
index f13ca45..93d4782 100644
--- a/linux-user/socket.h
+++ b/linux-user/socket.h
@@ -109,12 +109,21 @@
 	#define TARGET_SO_LINGER       13
 	#define TARGET_SO_BSDCOMPAT    14
 	/* To add :#define TARGET_SO_REUSEPORT 15 */
+#if defined(TARGET_PPC)
+	#define TARGET_SO_RCVLOWAT     16
+	#define TARGET_SO_SNDLOWAT     17
+	#define TARGET_SO_RCVTIMEO     18
+	#define TARGET_SO_SNDTIMEO     19
+	#define TARGET_SO_PASSCRED     20
+	#define TARGET_SO_PEERCRED     21
+#else
 	#define TARGET_SO_PASSCRED     16
 	#define TARGET_SO_PEERCRED     17
 	#define TARGET_SO_RCVLOWAT     18
 	#define TARGET_SO_SNDLOWAT     19
 	#define TARGET_SO_RCVTIMEO     20
 	#define TARGET_SO_SNDTIMEO     21
+#endif
 
 	/* Security levels - as per NRL IPv6 - don't actually do anything */
 	#define TARGET_SO_SECURITY_AUTHENTICATION              22
diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h
index 64bc94f..de46912 100644
--- a/linux-user/syscall_defs.h
+++ b/linux-user/syscall_defs.h
@@ -1086,10 +1086,10 @@
 #elif defined(TARGET_PPC)
 
 struct target_stat {
-	unsigned short st_dev;
+	abi_ulong st_dev;
 	abi_ulong st_ino;
 #if defined(TARGET_PPC64) && !defined(TARGET_ABI32)
-	unsigned short st_nlink;
+	abi_ulong st_nlink;
 	unsigned int st_mode;
 #else
 	unsigned int st_mode;
@@ -1097,16 +1097,16 @@
 #endif
 	unsigned int st_uid;
 	unsigned int st_gid;
-	unsigned short st_rdev;
+	abi_ulong  st_rdev;
 	abi_ulong  st_size;
 	abi_ulong  st_blksize;
 	abi_ulong  st_blocks;
 	abi_ulong  target_st_atime;
-	abi_ulong  __unused1;
+	abi_ulong  target_st_atime_nsec;
 	abi_ulong  target_st_mtime;
-	abi_ulong  __unused2;
+	abi_ulong  target_st_mtime_nsec;
 	abi_ulong  target_st_ctime;
-	abi_ulong  __unused3;
+	abi_ulong  target_st_ctime_nsec;
 	abi_ulong  __unused4;
 	abi_ulong  __unused5;
 #if defined(TARGET_PPC64) && !defined(TARGET_ABI32)
@@ -1122,19 +1122,18 @@
 	unsigned int st_uid;
 	unsigned int st_gid;
 	unsigned long long st_rdev;
-	long long pad0;
-	long long st_size;
-	abi_ulong	st_blksize;
-	abi_ulong	pad1;
-	long long	st_blocks;	/* Number 512-byte blocks allocated. */
-	abi_ulong	target_st_atime;
-        abi_ulong    target_st_atime_nsec;
-	abi_ulong	target_st_mtime;
-        abi_ulong    target_st_mtime_nsec;
-	abi_ulong	target_st_ctime;
-        abi_ulong    target_st_ctime_nsec;
-        abi_ulong    __unused4;
-        abi_ulong    __unused5;
+	unsigned short pad0;
+	long long      st_size;
+	int	       st_blksize;
+	long long      st_blocks;	/* Number 512-byte blocks allocated. */
+	int	       target_st_atime;
+        unsigned int   target_st_atime_nsec;
+	int	       target_st_mtime;
+        unsigned int   target_st_mtime_nsec;
+	int            target_st_ctime;
+        unsigned int   target_st_ctime_nsec;
+        unsigned int   __unused4;
+        unsigned int   __unused5;
 };
 
 #elif defined(TARGET_M68K)