[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-dev
mailing list