[RFC 5/8] powerpc/slb: Add documentation to runtime patching of SLB encoding
segher at kernel.crashing.org
Wed Jul 22 22:17:15 AEST 2015
On Wed, Jul 22, 2015 at 03:51:03PM +1000, Michael Ellerman wrote:
> How about:
> * This function patches either an li or a cmpldi instruction with
> * a new immediate value. This relies on the fact that both li
> * (which is actually ori) and cmpldi both take a 16-bit immediate
> * value, and it is situated in the same location in the instruction,
> * ie. bits 0-15.
> * To patch the value we read the existing instruction, clear the
> * immediate value, and or in our new value, then write the instruction
> * back.
As Gabriel says, li is addi. It takes a 16-bit sign-extended immediate,
while cmpldi takes a 16-bit zero-extended immediate. This function
doesn't deal with that difference, it probably should (I didn't check if
the callers take care; there should be an assertion somewhere).
More information about the Linuxppc-dev