From: Detlev Zundel <dzu@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] packed attribute problem
Date: Tue, 05 Oct 2010 13:43:01 +0200 [thread overview]
Message-ID: <m2fwwkq30a.fsf@ohwell.denx.de> (raw)
In-Reply-To: <4CA9CC04.5020800@emk-elektronik.de> (Reinhard Meyer's message of "Mon, 04 Oct 2010 14:43:48 +0200")
Hi Reinhard,
[...]
>> Note that this is with GCC 4.2.2. Even GCC 4.0.0 behaves the same, so
>> this is *not* an issue with very recent tool chains.
>
> OK, for directly adressing elements inside a packed struct;
> but the original post said:
>
> "struct xyz {
> int x;
> int y;
> int z[CONST];
> } __attribute__ ((packed));
>
> struct xyz *abc;
> u32 * status_reg = (u32 *)&abc->z[0];
>
> writel(status, status_reg);"
>
> So the "status_reg" pointer is in a completely unrelated (to the packed struct)
> "u32 *" and still the access is done like it was packed. If the
> compiler silently drags that attribute along into the "u32 *"
> THAT is really sick!
I cannot follow why you think this is sick - actually I think this is
clever. GCC "knows" that abc points to a packed struct and it has no
clue on actual values, so it _has to assume_ it is not aligned.
status_reg is initialized as a pointer to a member of this unaligned
pointer and is thus also considered unaligned. Seems perfectly fine to
me.
Cheers
Detlev
--
BUGS:
It is not yet possible to change operating system by writing to
/proc/sys/kernel/ostype.
-- Linux sysctl(2) man page
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-40 Fax: (+49)-8142-66989-80 Email: dzu at denx.de
next prev parent reply other threads:[~2010-10-05 11:43 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-10-04 9:38 [U-Boot] packed attribute problem Vipin Kumar
2010-10-04 10:17 ` Wolfgang Denk
2010-10-04 10:30 ` Vipin Kumar
2010-10-04 10:44 ` Wolfgang Denk
2010-10-04 10:56 ` Reinhard Meyer
2010-10-04 11:01 ` Vipin Kumar
2010-10-04 11:46 ` Reinhard Meyer
2010-10-04 12:29 ` Wolfgang Denk
2010-10-04 12:43 ` Reinhard Meyer
2010-10-04 12:50 ` Balau
2010-10-04 12:58 ` Wolfgang Denk
2010-10-04 13:02 ` [U-Boot] DDR SPD table sywang
2010-10-04 15:56 ` Mike Frysinger
2010-10-04 12:56 ` [U-Boot] packed attribute problem Wolfgang Denk
2010-10-05 3:45 ` Vipin Kumar
2010-10-05 11:43 ` Detlev Zundel [this message]
2010-10-05 18:03 ` Scott Wood
2010-10-07 9:59 ` Detlev Zundel
2010-10-07 16:46 ` Scott Wood
2010-10-07 17:57 ` Wolfgang Denk
2010-10-07 18:52 ` Scott Wood
2010-10-07 19:31 ` Wolfgang Denk
2010-10-07 20:15 ` Scott Wood
2010-10-11 11:32 ` Detlev Zundel
2010-10-11 13:22 ` Balau
2010-10-04 10:57 ` Vipin Kumar
2010-10-04 12:04 ` Wolfgang Denk
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=m2fwwkq30a.fsf@ohwell.denx.de \
--to=dzu@denx.de \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.