Re: Alignment on XScale ARM

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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" <Marcus.Tangermann@xxxxxx>
> Gesendet: 07.11.08 23:52:43
> An: linux-embedded@xxxxxxxxxxxxxxx
> 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 majordomo@xxxxxxxxxxxxxxx
> 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 majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Gstreamer Embedded]     [Linux MMC Devel]     [U-Boot V2]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux ARM Kernel]     [Linux OMAP]     [Linux SCSI]

  Powered by Linux