of: remove special case definition of of_read_ulong()
Special case of of_read_ulong() was defined for PPC32 to toss away all but the last 32 bits when a large number value was read, and the 'normal' version for ppc64 just #defined of_read_ulong to of_read_number which causes compiler warnings on MicroBlaze and other 32 bit architectures because it returns a u64 instead of a ulong. This patch fixes the problem by defining a common implementation of of_read_ulong() that works everywhere. Signed-off-by: Grant Likely <grant.likely@secretlab.ca> Reviewed-by: Wolfram Sang <w.sang@pengutronix.de> Tested-by: Michal Simek <monstr@monstr.eu>
This commit is contained in:
@ -113,14 +113,11 @@ static inline u64 of_read_number(const u32 *cell, int size)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Like of_read_number, but we want an unsigned long result */
|
/* Like of_read_number, but we want an unsigned long result */
|
||||||
#ifdef CONFIG_PPC32
|
|
||||||
static inline unsigned long of_read_ulong(const u32 *cell, int size)
|
static inline unsigned long of_read_ulong(const u32 *cell, int size)
|
||||||
{
|
{
|
||||||
return cell[size-1];
|
/* toss away upper bits if unsigned long is smaller than u64 */
|
||||||
|
return of_read_number(cell, size);
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
#define of_read_ulong(cell, size) of_read_number(cell, size)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <asm/prom.h>
|
#include <asm/prom.h>
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user