• James Hogan's avatar
    MIPS: VZ: Update helpers to use new asm macros · 00b4eb40
    James Hogan authored
    Update VZ guest register & guest TLB access helpers to use the new
    assembly macros for parsing register names and creating custom assembly
    macro instructions, which has a number of advantages:
    
     - Better code can be generated on toolchains which don't support VZ,
       more closely matching those which do, since there is no need to
       bounce values via the $at register. Some differences still remain due
       to the inability to safely fill branch delay slots and R6 compact
       branch forbidden slots with explicitly encoded instructions,
       resulting in some extra NOPs added by the assembler.
    
     - Some code duplication between toolchains which do and don't support
       VZ instructions is removed, since the helpers are only implemented
       once. When the toolchain doesn't implement the instruction an
       assembly macro implements it instead.
    
     - Instruction encodings are kept together in the source.
    
    On a generic kernel with KVM VZ support enabled this change saves about
    2.5KiB of kernel code when TOOLCHAIN_SUPPORTS_VIRT=n, bringing it down
    to about 0.5KiB more than when TOOLCHAIN_SUPPORTS_VIRT=y on r6, and just
    68 bytes more on r2.
    Signed-off-by: default avatarJames Hogan <jhogan@kernel.org>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/17772/
    00b4eb40
mipsregs.h 89.9 KB