linux-user: Fix target_stat and target_stat64 for OpenRISC

OpenRISC uses the asm-generic versions of target_stat and
target_stat64, but it was incorrectly using the x86/ARM/etc version
due to a misplaced defined(TARGET_OPENRISC).  The previously unused
OpenRISC section of the ifdef ladder also defined an incorrect
target_stat and omitted the target_stat64 definition.  Fix
target_stat, provide target_stat64, and add a comment noting that
these are the asm-generic versions for the benefit of future ports.

Reviewed-by: Jia Liu <proljc@gmail.com>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
This commit is contained in:
Peter Maydell 2013-07-06 21:44:53 +01:00 committed by Riku Voipio
parent 885a73f72b
commit c7819dfbd2
1 changed files with 38 additions and 13 deletions

View File

@ -1138,8 +1138,7 @@ struct target_winsize {
#endif
#if (defined(TARGET_I386) && defined(TARGET_ABI32)) || defined(TARGET_ARM) \
|| defined(TARGET_CRIS) || defined(TARGET_UNICORE32) \
|| defined(TARGET_OPENRISC)
|| defined(TARGET_CRIS) || defined(TARGET_UNICORE32)
struct target_stat {
unsigned short st_dev;
unsigned short __pad1;
@ -1837,29 +1836,55 @@ struct target_stat {
abi_ulong __unused[3];
};
#elif defined(TARGET_OPENRISC)
/* These are the asm-generic versions of the stat and stat64 structures */
struct target_stat {
abi_ulong st_dev;
abi_ulong st_ino;
abi_ulong st_nlink;
unsigned int st_mode;
unsigned int st_nlink;
unsigned int st_uid;
unsigned int st_gid;
unsigned int __pad0;
abi_ulong st_rdev;
abi_ulong __pad1;
abi_long st_size;
abi_long st_blksize;
abi_long st_blocks; /* Number 512-byte blocks allocated. */
abi_ulong target_st_atime;
int st_blksize;
int __pad2;
abi_long st_blocks;
abi_long target_st_atime;
abi_ulong target_st_atime_nsec;
abi_ulong target_st_mtime;
abi_long target_st_mtime;
abi_ulong target_st_mtime_nsec;
abi_ulong target_st_ctime;
abi_long target_st_ctime;
abi_ulong target_st_ctime_nsec;
abi_long __unused[3];
unsigned int __unused4;
unsigned int __unused5;
};
struct target_stat64 {
uint64_t st_dev;
uint64_t st_ino;
unsigned int st_mode;
unsigned int st_nlink;
unsigned int st_uid;
unsigned int st_gid;
uint64_t st_rdev;
uint64_t __pad1;
int64_t st_size;
int st_blksize;
int __pad2;
int64_t st_blocks;
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;
};
#else
#error unsupported CPU
#endif