From e32448e059adc8e6b31df483a679b399bc990e5a Mon Sep 17 00:00:00 2001 From: j_mayer Date: Mon, 10 Dec 2007 08:24:59 +0000 Subject: [PATCH] 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 --- linux-user/ppc/syscall.h | 30 +++++++++++++++++------------- linux-user/ppc/target_signal.h | 2 +- linux-user/socket.h | 9 +++++++++ linux-user/syscall_defs.h | 37 ++++++++++++++++++------------------- 4 files changed, 45 insertions(+), 33 deletions(-) diff --git a/linux-user/ppc/syscall.h b/linux-user/ppc/syscall.h index f98d2bca5a..2035dfbfdb 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 defae809a9..a93b5cf1df 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 f13ca45e3e..93d47823d8 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 64bc94f226..de4691223d 100644 --- a/linux-user/syscall_defs.h +++ b/linux-user/syscall_defs.h @@ -1086,10 +1086,10 @@ struct target_stat64 { #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 @@ struct target_stat { #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 @@ struct target_stat64 { 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) -- 2.11.0