[Linux-ia64] do me a favor

Qiu HongBing
2001-11-13T00:57:40Z

Hi,

I'm Qiu HongBing. Now I process some project from IA32 to IA64 on Linux. Now
I have one question. If someone know it why and have spare time, Please help
me.Thanks a lot.

My problem is as follows:

struct aa{
unsigned short a;
unsigned short b;
unsigned short c;
unsigned short d;
unsigned int e;
unsigned int f;
unsigned int g;
unsigned int h;
unsigned short i;
}
...
struct aa *a1;
...

fun1(char *,unsigned int *,char *,char *,unsigned int * temp,unsigned int *)
{
...
*temp\x10;
...
}
...

fun1(a,b,c,d,&a1->b,e);
...

On IA64 Linux RedHat 7.1(2.4.3-3), when the program run to
fun1(a,b,c,d,&a1->b,e), the kernel write into syslog some message which is
"Nov 5 10:12:02 sdv2 kernel: ESMmlx(7837): unaligned access to
0x600000000001684c, ip=0x2000000000624370".

But if I modify the source as follows and it is OK. I dont know why. So I
want to get some help to solve the real cause.

...
{
unsigned int tt;
tt¡->b;

fun1(a,b,c,d,&a1->b,e);

a1->b=tt;
}
...

That's all.