[PATCH] ppc: ioremap() on PPC44x platforms now accepts 64bit addresses

Josh Boyer jwboyer at linux.vnet.ibm.com
Fri Jan 19 22:57:25 EST 2007


On Fri, 2007-01-19 at 09:05 +0100, Stefan Roese wrote:
> [PATCH] ppc: ioremap() on PPC44x platforms now accepts 64bit addresses
> 
> On systems that supply a real 64bit address (with
> CONFIG_RESOURCES_64BIT enabled), don't use the fixup function. This
> allows us to use the fixup function when no ERPN is specified and use
> the 64 bit address when the ERPN is supplied.

Good idea.



>  void __iomem *
>  ioremap(phys_addr_t addr, unsigned long size)
>  {
> -	phys_addr_t addr64 = fixup_bigphys_addr(addr, size);
> -
> -	return ioremap64(addr64, size);
> +	/*
> +	 * On systems that supply a real 64bit address
> +	 * (with CONFIG_RESOURCES_64BIT enabled), don't use the
> +	 * fixup function.
> +	 * This allows us to use the fixup function when no ERPN
> +	 * is specified and use the 64 bit address when the ERPN
> +	 * is suppied.
> +	 */
> +	if ((unsigned long long)addr && 0xffffffff00000000ULL)
> +		return ioremap64(addr, size);

Erm... don't you want:

addr & 0xffffffff00000000ULL

What you have now is a logical and that will likely result in it always
being true...

josh




More information about the Linuxppc-embedded mailing list