Skip to content

Commit

Permalink
linux-user: Fix target_stat and target_stat64 for OpenRISC
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
pm215 authored and Riku Voipio committed Jul 23, 2013
1 parent 885a73f commit c7819df
Showing 1 changed file with 37 additions and 12 deletions.
49 changes: 37 additions & 12 deletions linux-user/syscall_defs.h
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
unsigned int __unused4;
unsigned int __unused5;
};

abi_long __unused[3];
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
Expand Down

0 comments on commit c7819df

Please sign in to comment.