diff options
author | Wolfgang Denk <wd@denx.de> | 2009-09-14 22:09:21 (GMT) |
---|---|---|
committer | Wolfgang Denk <wd@denx.de> | 2009-09-18 21:24:48 (GMT) |
commit | 3b6a9267f0de7b85d387fa4123d0b58379363447 (patch) | |
tree | 07a79b638429f7f7ec483d3a844380f60d58c555 /board/flagadm/flash.c | |
parent | 084f3ddac6ab624a4b1c7174b3cdf9cc25866217 (diff) | |
download | u-boot-3b6a9267f0de7b85d387fa4123d0b58379363447.tar.xz |
board/flagadm/flash.c: fix compile warning
Fix warning: flash.c:531: warning: dereferencing type-punned pointer
will break strict-aliasing rules
Signed-off-by: Wolfgang Denk <wd@denx.de>
Cc: Kári Davíđsson <kd@flaga.is>
Diffstat (limited to 'board/flagadm/flash.c')
-rw-r--r-- | board/flagadm/flash.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/board/flagadm/flash.c b/board/flagadm/flash.c index bbefbac..a69b1a4 100644 --- a/board/flagadm/flash.c +++ b/board/flagadm/flash.c @@ -528,11 +528,17 @@ int write_word (flash_info_t *info, ulong dest, ulong da) ulong start; char csr; int flag; - ushort * d = (ushort*)&da; int i; + union { + u32 data32; + u16 data16[2]; + } data; + + data.data32 = da; /* Check if Flash is (sufficiently) erased */ - if (((*addr & d[0]) != d[0]) || ((*(addr+1) & d[1]) != d[1])) { + if (((*addr & data.data16[0]) != data.data16[0]) || + ((*(addr+1) & data.data16[1]) != data.data16[1])) { return (2); } /* Disable interrupts which might cause a timeout here */ @@ -544,7 +550,7 @@ int write_word (flash_info_t *info, ulong dest, ulong da) *addr = 0x0010; /* Write Data */ - *addr = d[i]; + *addr = data.data16[i]; /* re-enable interrupts if necessary */ if (flag) |