[PATCH v3 RESEND 05/17] ARM: LPAE: support 64-bit virt_to_phys patching
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