Hello,

due to your hints I've found a solution. The problem was simple: The buffer was 
not word aligned as the Xscale requires. 
With
char buffer[8192] __attribute__((aligned(4)));
things are working.  Sometimes you don't see the wood for the trees.
So thanks to all for the good hints!

Marcus

> -----Ursprüngliche Nachricht-----
> Von: "Marcus Tangermann" <[EMAIL PROTECTED]>
> Gesendet: 07.11.08 23:52:43
> An: [email protected]
> Betreff: Alignment on XScale ARM

> Hi,
> 
> we use an XScale 422 (ARM) with a big endian Linux system based on the 
> buildroot environment. It seems there is an alignment problem we have. I've 
> tracked down the problem to the following. 
> 1. The data received via a netlink communication from the kernel is stored 
> into a buffer buf. The data is correct.
> 2. The address of the buffer is converted to a pointer to nlmsghdr:
>          struct nlmsghdr *h;
>          h = (struct nlmsghdr*) buf; 
>          printf("IPSECTOOLS: Length  %04d\n", h->nlmsg_len);
>          printf("IPSECTOOLS: Type %02d\n", h->nlmsg_type);
>    The results of printf are nonsens. The first fields seem to have an offset 
> of 2 bytes, at the end there also seem to be swapped bytes.
> 3. To test what might happen, I've created an own struct
>        struct aligntest{
>                 __u32 first;
>                 __u32 int second;
>                 __u32 third;
>                 __u32 fourth;
>        };
>      When you now set a point to a buffer, again the values are wrong:
>          s1 = (struct aligntest*) buf;
>          printf("1: %08X\n", s1->first);
>          printf("2: %08X\n", s1->second);
>          printf("3: %08X\n", s1->third);
>          printf("4: %08X\n", s1->fourth);
> 
> It seems, that there is a problem with the unsigned int values. When you add 
> the attribute "packed" to the definition of struct aligntest ( 
> __attribute__(__packed__) ), all values are displayed correctly. 
> So, any hints what the problem can be?
> 
> Regards
> Marcus
> ____________________________________________________________________
> Psssst! Schon vom neuen WEB.DE MultiMessenger gehört? 
> Der kann`s mit allen: http://www.produkte.web.de/messenger/?did=3123
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-embedded" in
> the body of a message to [EMAIL PROTECTED]
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 


__________________________________________________________________
"Run, Fatboy, Run" sowie "Rails & Ties" kostenlos anschauen!
Blockbuster-Gutscheine sichern unter http://www.blockbuster.web.de

--
To unsubscribe from this list: send the line "unsubscribe linux-embedded" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to