[U-Boot] [PATCH] drivers/net/e1000.c: Fix GCC 4.6 build warnings

Anatolij Gustschin agust at denx.de
Tue Dec 20 16:49:47 CET 2011


Fix:
e1000.c: In function 'e1000_read_mac_addr':
e1000.c:1149:2: warning: dereferencing type-punned pointer
will break strict-aliasing rules [-Wstrict-aliasing]

e1000.c:1149:2: warning: dereferencing type-punned pointer
will break strict-aliasing rules [-Wstrict-aliasing]

Signed-off-by: Anatolij Gustschin <agust at denx.de>
---
 drivers/net/e1000.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/drivers/net/e1000.c b/drivers/net/e1000.c
index 6b71bd9..54f6425 100644
--- a/drivers/net/e1000.c
+++ b/drivers/net/e1000.c
@@ -45,6 +45,7 @@ tested on both gig copper and gig fiber boards
  */
 
 #include "e1000.h"
+#include <asm/unaligned.h>
 
 #define TOUT_LOOP   100000
 
@@ -1146,7 +1147,8 @@ e1000_read_mac_addr(struct eth_device *nic)
 		nic->enetaddr[5] ^= 1;
 
 #ifdef CONFIG_E1000_FALLBACK_MAC
-	if ( *(u32*)(nic->enetaddr) == 0 || *(u32*)(nic->enetaddr) == ~0 ) {
+	if (get_unaligned_be32(nic->enetaddr) == 0 ||
+	    get_unaligned_be32(nic->enetaddr) == ~0) {
 		unsigned char fb_mac[NODE_ADDRESS_SIZE] = CONFIG_E1000_FALLBACK_MAC;
 
 		memcpy (nic->enetaddr, fb_mac, NODE_ADDRESS_SIZE);
-- 
1.7.5.4



More information about the U-Boot mailing list