From mboxrd@z Thu Jan 1 00:00:00 1970 From: Vipin Kumar Date: Mon, 4 Oct 2010 16:27:26 +0530 Subject: [U-Boot] packed attribute problem In-Reply-To: <20101004104443.09AE41539A0@gemini.denx.de> References: <4CA9A095.9000900@st.com> <20101004101714.A19931539A0@gemini.denx.de> <4CA9ACAA.2020001@st.com> <20101004104443.09AE41539A0@gemini.denx.de> Message-ID: <4CA9B316.3050802@st.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 10/4/2010 4:14 PM, Wolfgang Denk wrote: > Dear Vipin Kumar, > > In message <4CA9ACAA.2020001@st.com> you wrote: >> >>>> This writel results in writing byte by byte on the address pointed to by status_reg. >>>> This problem is visible with both gcc version 4.4.1 as well as 4.5.0 >>> >>> I bet this is on some ARM system? >> >> Yes, it is on an ARM system (CortexA9). But I still feel that since I am creating >> a new u32 * status_reg, the code should not use any intelligence and use the pointer >> only to produce an str instruction in the form >> str r0, [r1] >> >> But it retains the packed property of the structure even with a new u32 ponter >> typecasted to u32 * >> u32 * status_reg = (u32 *)xyz->x; >> >> A writel to status_reg results in byte by byte writing > > I agree with you. I always considered such behaviour of the ARM C > compiler a bug, and still do. However, people with better knowledge > of the ARm architecture than me might be able to explain why the > responsible PTB consider this to be a good and necessary "feature" of > th compiler. > >>> Hm... Why do these structs have any "__attribute__ ((packed))" at all? >> >> Even I could not understand that very well > > Eventually alignment of these structs cannot be guaranteed? > In my opinion it can be guaranteed. btw, I am talking about ehci_hcor structure in include/usb/host/ehci.h The only reason I am confused is that a lot many platforms would have faced a similar problem (or is it only me). Please confirm if I should remove the packed attribute and send a patch This also raises one doubt. Since u-boot code now contains structures to access device registers, using packed attribute with these structures can be lethal Regards Vipin