Dear Vipin Kumar, In message <4ca9acaa.2020...@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? Best regards, Wolfgang Denk -- DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: w...@denx.de PLEASE NOTE: Some Quantum Physics Theories Suggest That When the Con- sumer Is Not Directly Observing This Product, It May Cease to Exist or Will Exist Only in a Vague and Undetermined State. _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot