/*
 * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 *
 * Amit Bhor, Sameer Dhavale: Codito Technologies 2004
 */

#ifndef _ASM_ARC_STAT_H
#define _ASM_ARC_STAT_H

struct __old_kernel_stat {
	unsigned short st_dev;
	unsigned short st_ino;
	unsigned short st_mode;
	unsigned short st_nlink;
	unsigned short st_uid;
	unsigned short st_gid;
	unsigned short st_rdev;
	unsigned long  st_size;
	unsigned long  st_atime;
	unsigned long  st_mtime;
	unsigned long  st_ctime;
};

struct stat {
	unsigned short st_dev;
	unsigned short __pad1;
	unsigned long st_ino;
	unsigned short st_mode;
	unsigned short st_nlink;
	unsigned short st_uid;
	unsigned short st_gid;
	unsigned short st_rdev;
	unsigned short __pad2;
	unsigned long  st_size;
	unsigned long  st_blksize;
	unsigned long  st_blocks;
	unsigned long  st_atime;
	unsigned long  __unused1;
	unsigned long  st_mtime;
	unsigned long  __unused2;
	unsigned long  st_ctime;
	unsigned long  __unused3;
	unsigned long  __unused4;
	unsigned long  __unused5;
};

/* This matches struct stat64 in glibc2.1, hence the absolutely
 * insane amounts of padding around dev_t's.
 */
/* struct stat64 { */
/* 	unsigned short	st_dev; */
/* 	unsigned char	__pad0[10]; */

/* #define STAT64_HAS_BROKEN_ST_INO	1 */
/* 	unsigned long	__st_ino; */
/* 	unsigned int	st_mode; */
/* 	unsigned int	st_nlink; */

/* 	unsigned long	st_uid; */
/* 	unsigned long	st_gid; */

/* 	unsigned short	st_rdev; */
/* 	unsigned char	__pad3[10]; */

/* 	long long	st_size; */
/* 	unsigned long	st_blksize; */

/* 	unsigned long	st_blocks;	/\* Number 512-byte blocks allocated. *\/ */
/* 	unsigned long	__pad4;		/\* future possible st_blocks high bits *\/ */

/* 	unsigned long	st_atime; */
/* 	unsigned long	__pad5; */

/* 	unsigned long	st_mtime; */
/* 	unsigned long	__pad6; */

/* 	unsigned long	st_ctime; */
/* 	unsigned long	__pad7;		/\* will be high 32 bits of ctime someday *\/ */

/* 	unsigned long long	st_ino; */
/* }; */

/*  Sameer: New definition of stat64 borrowed from ARM. */
struct stat64 {
	unsigned long long	st_dev;
	unsigned char   __pad0[4];

#define STAT64_HAS_BROKEN_ST_INO	1
	unsigned long	__st_ino;
	unsigned int	st_mode;
	unsigned int	st_nlink;

	unsigned long	st_uid;
	unsigned long	st_gid;

	unsigned long long	st_rdev;
	unsigned char   __pad3[4];

	long long	st_size;
	unsigned long	st_blksize;
	unsigned long long st_blocks;	/* Number 512-byte blocks allocated. */

	unsigned long	st_atime;
	unsigned long	st_atime_nsec;

	unsigned long	st_mtime;
	unsigned long	st_mtime_nsec;

	unsigned long	st_ctime;
	unsigned long	st_ctime_nsec;

	unsigned long long	st_ino;
};

#endif
