9609 qede: error: result of '983040 << 16' requires 37 bits to represent, but 'int' only has 32 bits
Contributed by: Anand Khoje <Anand.Khoje@cavium.com>
Reviewed by: Andy Fiddaman <af@citrus-it.net>
Approved by: Dan McDonald <danmcd@joyent.com>
diff --git a/usr/src/uts/common/io/qede/579xx/drivers/ecore/ecore.h b/usr/src/uts/common/io/qede/579xx/drivers/ecore/ecore.h
index 1434c81..7926f87 100644
--- a/usr/src/uts/common/io/qede/579xx/drivers/ecore/ecore.h
+++ b/usr/src/uts/common/io/qede/579xx/drivers/ecore/ecore.h
@@ -124,10 +124,11 @@
 
 #define ECORE_MFW_SET_FIELD(name, field, value)				\
 do {									\
-	(name) &= ~((field ## _MASK) << (field ## _SHIFT));		\
+	(name) &= ~(((u64)field ## _MASK) << ((u64)field ## _SHIFT));	\
 	(name) |= (((value) << (field ## _SHIFT)) & (field ## _MASK));	\
 } while (0)
 
+
 static OSAL_INLINE u32 DB_ADDR(u32 cid, u32 DEMS)
 {
 	u32 db_addr = FIELD_VALUE(DB_LEGACY_ADDR_DEMS, DEMS) |