[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <200802190017.04432.mb@bu3sch.de>
Date: Tue, 19 Feb 2008 00:17:04 +0100
From: Michael Buesch <mb@...sch.de>
To: Russell King <rmk+lkml@....linux.org.uk>
Cc: Gordon Farquharson <gordonfarquharson@...il.com>,
linux-kernel@...r.kernel.org, linville@...driver.com,
stefano.brivio@...imi.it
Subject: Re: [RFC] [PATCH] Fix b43 driver build for arm
On Tuesday 19 February 2008 00:00:58 Russell King wrote:
> > > Why can't we have an array of this structure on ARM?
> > >
> > > struct ssb_device_id {
> > > __u16 vendor;
> >
> > 2 bytes
> >
> > > __u16 coreid;
> >
> > 2 bytes
> >
> > > __u8 revision;
> >
> > 1 byte
> >
> > > };
> >
> > and therefore sizeof this structure will be 5 bytes, but because of the
> > ABI rules (which are _explicitly_ allowed by the C standard), it'll
> > become 8 bytes due to padding afterwards.
>
> Another guess might be that, if using AEABI, this structure might
> be 6 bytes in size, but the linker will align structures to 4 bytes.
If the struct is padded to 6 bytes and the linker aligns it to 4 byte
everything will be naturally aligned, as far as I can see.
> FATAL: drivers/net/wireless/b43/b43: sizeof(struct ssb_device_id)=6 is
> not a modulo of the size of section __mod_ssb_device_table=64.
> Fix definition of struct ssb_device_id in mod_devicetable.h
So this message tells me the table size is 64 bytes. There are 8 entries,
so it seems the structure is padded to 8 bytes.
But above that it says that sizeof(struct ssb_device_id)=6
IMO this sanity check is broken and not the code.
Where does this sanity check message come from? The linker?
--
Greetings Michael.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists