On Fri, Jan 21, 2011 at 9:50 AM, Wolfgang Denk <w...@denx.de> wrote: > Dear Tom Warren, > > In message <AANLkTimcTq74=jz0hjcmsumye3tf2zeuy9r9f7qvt...@mail.gmail.com> you > wrote: >> >> I'll take a look at the ARM asm code generated, but you are probably right. >> But shouldn't the compiler have complained if I wasn't passing the >> struct address? > > I'm surprised about this, too. But then, current mainline code still > has the horrible "(*(volatile unsigned int *)(a) = (v))" definition, > so the cast will eat all potential warnings :-( >
Yes, I noticed this with x86 - I can do something like the following without the compiler warning me: typdef struct blah { u32 foo; u16 bar; } blah_t; blah_t *fred = 0x00001000; writel(1, &fred->foo); writel(1, &fred->bar); writew(1, &fred->foo); writew(1, &fred->bar); This is particularly nasty with the sc520's Memory Mapped Control Registers - I have found a few here and there where longs were being written to words and visa-versa Regards, Graeme _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot