On 21-10-21, 12:07, Geert Uytterhoeven wrote:> On Thu, Oct 21, 2021 at 11:52 AM Viresh Kumar <viresh.kumar at
linaro.org> wrote:
> > The structure will get aligned to the size of largest element and each
> > element will be aligned to itself. I don't see how this will break
> > even in case of 32/64 bit communication.
>
> Structures are not aligned to the size of the largest element, but
> to the largest alignment needed for each member.
Right, I was talking in terms of the structures we have here for GPIO.
The biggest member here (for any structure) is 32bits long, and
compiler shouldn't add extra padding here.
> This can be smaller than the size of the largest element.
> E.g. alignof(long long) might be 4, not 8.
Right.
> And m68k aligns to two bytes at most.
Interesting, I assumed that it will be 4bytes for 32 bit systems. So
in case of m68k, we will see something like this ?
struct foo {
u8 a; // aligned to 2 bytes
// padding of 1 byte
u32 b; // aligned to 2 bytes
}
--
viresh