URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Only display areas with differences |
Details |
Blame |
View Log
Rev 297 |
Rev 338 |
|
|
typedef __SIZE_TYPE__ Size_t;
|
typedef __SIZE_TYPE__ Size_t;
|
|
|
#if __SIZEOF_LONG__ < __SIZEOF_POINTER__
|
#if __SIZEOF_LONG__ < __SIZEOF_POINTER__
|
#define bufsize ((1LL << (8 * sizeof(Size_t) - 2))-256)
|
#define bufsize ((1LL << (8 * sizeof(Size_t) - 2))-256)
|
#else
|
#else
|
#define bufsize ((1L << (8 * sizeof(Size_t) - 2))-256)
|
#define bufsize ((1L << (8 * sizeof(Size_t) - 2))-256)
|
#endif
|
#endif
|
|
|
struct huge_struct
|
struct huge_struct
|
{
|
{
|
short buf[bufsize];
|
short buf[bufsize];
|
int a;
|
int a;
|
int b;
|
int b;
|
int c;
|
int c;
|
int d;
|
int d;
|
};
|
};
|
|
|
union huge_union
|
union huge_union
|
{
|
{
|
int a;
|
int a;
|
char buf[bufsize];
|
char buf[bufsize];
|
};
|
};
|
|
|
Size_t union_size()
|
Size_t union_size()
|
{
|
{
|
return sizeof(union huge_union);
|
return sizeof(union huge_union);
|
}
|
}
|
|
|
Size_t struct_size()
|
Size_t struct_size()
|
{
|
{
|
return sizeof(struct huge_struct);
|
return sizeof(struct huge_struct);
|
}
|
}
|
|
|
Size_t struct_a_offset()
|
Size_t struct_a_offset()
|
{
|
{
|
return (Size_t)(&((struct huge_struct *) 0)->a);
|
return (Size_t)(&((struct huge_struct *) 0)->a);
|
}
|
}
|
|
|
int main()
|
int main()
|
{
|
{
|
/* Check the exact sizeof value. bufsize is aligned on 256b. */
|
/* Check the exact sizeof value. bufsize is aligned on 256b. */
|
if (union_size() != sizeof(char) * bufsize)
|
if (union_size() != sizeof(char) * bufsize)
|
abort();
|
abort();
|
|
|
if (struct_size() != sizeof(short) * bufsize + 4*sizeof(int))
|
if (struct_size() != sizeof(short) * bufsize + 4*sizeof(int))
|
abort();
|
abort();
|
|
|
if (struct_a_offset() < sizeof(short) * bufsize)
|
if (struct_a_offset() < sizeof(short) * bufsize)
|
abort();
|
abort();
|
|
|
return 0;
|
return 0;
|
}
|
}
|
|
|
|
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.