[U-Boot-Users] [PATCH][FDT][UPDATE] Add common memory fixup function
Scott Wood
scottwood at freescale.com
Wed Nov 28 23:38:05 CET 2007
Kumar Gala wrote:
>
> On Nov 28, 2007, at 4:16 PM, Scott Wood wrote:
>
>> Kumar Gala wrote:
>>> + addrcell = fdt_getprop(blob, 0, "#address-cells", NULL);
>>> + /* use shifts and mask to ensure endianness */
>>> + if ((addrcell) && (*addrcell == 2)) {
>>> + tmp[0] = (start >> 56) & 0xff;
>>> + tmp[1] = (start >> 48) & 0xff;
>>> + tmp[2] = (start >> 40) & 0xff;
>>> + tmp[3] = (start >> 32) & 0xff;
>>> + tmp[4] = (start >> 24) & 0xff;
>>> + tmp[5] = (start >> 16) & 0xff;
>>> + tmp[6] = (start >> 8) & 0xff;
>>> + tmp[7] = (start ) & 0xff;
>>> + len = 8;
>>> + } else {
>>> + tmp[0] = (start >> 24) & 0xff;
>>> + tmp[1] = (start >> 16) & 0xff;
>>> + tmp[2] = (start >> 8) & 0xff;
>>> + tmp[3] = (start ) & 0xff;
>>> + len = 4;
>>> + }
>>
>> Could we please use the existing byteswapping functions?
>
> I don't see how to use them w/o going through an additional memcpy.
>
> If you can provide a better solution I'm all for it. But I don't see
> any reason to hold up the patch at this point.
union {
uint8_t tmp[8];
uint64_t mem64;
uint32_t mem32;
}
int len;
if (addrcell && *addrcell == 2) {
mem64 = cpu_to_fdt64(memsize);
len = 8;
} else {
mem32 = cpu_to_fdt32(memsize);
len = 4;
}
fdt_setprop(..., tmp, len);
-Scott
More information about the U-Boot
mailing list