From 3b6a9267f0de7b85d387fa4123d0b58379363447 Mon Sep 17 00:00:00 2001
From: Wolfgang Denk <wd@denx.de>
Date: Tue, 15 Sep 2009 00:09:21 +0200
Subject: [PATCH] board/flagadm/flash.c: fix compile warning
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

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>
---
 board/flagadm/flash.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/board/flagadm/flash.c b/board/flagadm/flash.c
index bbefbacea95..a69b1a4e975 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)
-- 
GitLab