Segher Boessenkool <seg...@kernel.crashing.org> writes:
> On Fri, Mar 22, 2019 at 11:37:24PM +1100, Michael Ellerman wrote:
>>  .Lcmp_rest_lt8bytes:
>> -    /* Here we have only less than 8 bytes to compare with. at least s1
>> -     * Address is aligned with 8 bytes.
>> -     * The next double words are load and shift right with appropriate
>> -     * bits.
>> +    /*
>> +     * Here we have less than 8 bytes to compare. At least s1 is aligned to
>> +     * 8 bytes, but s2 may not be. We must make sure s2 + 8 doesn't cross a
>
> "s2 + 7"?  The code is fine though (bgt, not bge).

Duh, thanks for catching it.

>> +     * page boundary, otherwise we might read past the end of the buffer and
>> +     * trigger a page fault. We use 4K as the conservative minimum page
>> +     * size. If we detect that case we go to the byte-by-byte loop.
>> +     *
>> +     * Otherwise the next double word is loaded from s1 and s2, and shifted
>> +     * right to compare the appropriate bits.
>>       */
>> +    clrldi  r6,r4,(64-12)   // r6 = r4 & 0xfff
>
> You can just write
>   rlwinm r6,r4,0,0x0fff

> if that is clearer?  Or do you still want a comment with that :-)

I don't think it's clearer doing a rotate of zero bits :)

And yeah I'd probably still leave the comment, so I'm inclined to stick
with the clrldi?

Would be nice if the assembler could support:

        andi    r6, r4, 0x0fff

And turn it into the rlwinm, or rldicl :)

>> +    cmpdi   r6,0xff8
>> +    bgt     .Lshort
>
> Reviewed-by: Segher Boessenkool <seg...@kernel.crashing.org>

I'll fixup the comment. Thanks.

cheers

Reply via email to