Actually, as I was about to do the adjustment, this isn't correct:Both mask_hi and base_hi get shifted left in some calculationsthere, and hence they would require up-casts to unsigned longif their type would remain a 32-bit one. Further, mask_lo getsor-ed with size_or_mask, which is u64, the result comparedwith tmp (now unsigned long), and the same result also negatedso the *size (also unsigned long), so needs to be unsigned longitself unless we want to introduce another variable.

That leaves only base_lo as a candidate for remaining 32-bit,but for consistency I think it would be better to have them allhave the same type.