[OpenBIOS] [PATCH 3/3] Don't assume that pointer and cell size are identical

Andreas Färber andreas.faerber at web.de
Wed Oct 20 20:36:48 CEST 2010


Am 20.10.2010 um 18:19 schrieb Blue Swirl:

> On Sun, Oct 17, 2010 at 11:18 PM, Andreas Färber <andreas.faerber at web.de 
> > wrote:
>> On ppc64, cell size is 32 bits but pointers are 64-bit. Thus,  
>> direct casts
>> result in warnings, treated as errors.
>>
>> Use [u]intptr_t cast or cell2pointer and pointer2cell macros as  
>> necessary.
>
>> -int uart_init(uint64_t port, unsigned long speed)
>> +int uart_init(uintptr_t port, unsigned long speed)
>
> This is not correct. The physical addresses on Sparc32 are really 36
> bits wide, so uintptr_t is not wide enough.

Okay, then I'll revert this one. The patch may be mechanical to  
_review_ but it's pretty invasive, so I'd rather have some parts of it  
committed before running into larger merge conflicts.

> For that, we'd need a
> physical address type. We could reuse for example QEMU name,
> target_phys_addr_t.

Sounds good. Should we go ahead with my patch first and do the  
uint64_t -> target_phys_addr_t change as a follow-up patch? Or should  
I strip all changes to drivers/ from my patch?

Andreas


More information about the OpenBIOS mailing list