[PATCH v3 RESEND 05/17] ARM: LPAE: support 64-bit virt_to_phys patching

Nicolas Pitre nicolas.pitre at linaro.org
Mon Sep 24 18:55:25 EDT 2012

On Mon, 24 Sep 2012, Russell King - ARM Linux wrote:

> On Mon, Sep 24, 2012 at 06:32:22PM -0400, Nicolas Pitre wrote:
> > We don't want to limit lowmem.  The lowmem is very precious memory and 
> > we want to maximize its size.  In that case it is probably best to 
> > implement a real patchable 64-bit addition rather than artificially 
> > restricting the lowmem size.
> You don't need to.  You can solve the V->P translation like this:
>         movw    %hi, #0xVWXY            @ fixup
>         adds    %lo, %lo, #offset       @ fixup
>         adc     %hi, %hi, #0

That's exactly what I mean when I say a real 64-bit addition.  Despite 
one of the arguments being a 32 bit value, the overflow needs to be 
carried to the high part.

> which is probably the simplest way to do the fixup - keep the existing
> fixup code, and add support for that movw instruction.  And that will
> work across any 4GB boundary just fine (we won't have more than 4GB of
> virtual address space on a 32-bit CPU anyway, so we only have to worry
> about one carry.)


> And the P->V translation is truncating anyway, so that is just:
> 	sub	%lo, %lo, #offset
> and nothing more.

Yes, that's what the posted code does already.


More information about the linux-arm-kernel mailing list