fixup_bigphys_addr and ioremap64 question

Josh Boyer jwboyer at linux.vnet.ibm.com
Mon Nov 6 14:44:21 EST 2006


On Mon, 2006-11-06 at 14:17 +1100, Benjamin Herrenschmidt wrote:
> While merging io.h between 32 and 64 bits arch/powerpc, I stumbled upon
> this little gem :-)
> 
> So we have these:
> 
>  - If CONFIG_PHYS_64BIT is not set, nothing special. phys_addr_t is
> defined to be 32 bits.
> 
>  - If it is set however, we have phys_addr_t defined to be 64 bits in
> asm-ppc/mmu.h. 
> 
> So why do we have both ioremap and ioremap64 knowing that the former is
> defined to take a phys_addr_t argument ?
> 
> Currently, we have both, with the only difference being that ioremap
> calls ioremap64 but also passes the argument through a
> fixup_bigphys_addr() function first.
> 
> It took me a while to find it ... it's not defined in generic code but
> in platform code (ugh !). In fact, the only version of it we have in
> arch/powerpc is in the 85xx support and does:

It's in arch/ppc/syslib/44x_common.c and it's used to trap the least
significant 32 bits of an address and set the right ERPN for io space on
44x.  Something like that might be needed when 44x merges to
arch/powerpc.

josh




More information about the Linuxppc-dev mailing list