• Paul Burton's avatar
    MIPS: Avoid using .set mips0 to restore ISA · 378ed6f0
    Paul Burton authored
    We currently have 2 commonly used methods for switching ISA within
    assembly code, then restoring the original ISA.
    
      1) Using a pair of .set push & .set pop directives. For example:
    
         .set	push
         .set	mips32r2
         <some_insn>
         .set	pop
    
      2) Using .set mips0 to restore the ISA originally specified on the
         command line. For example:
    
         .set	mips32r2
         <some_insn>
         .set	mips0
    
    Unfortunately method 2 does not work with nanoMIPS toolchains, where the
    assembler rejects the .set mips0 directive like so:
    
         Error: cannot change ISA from nanoMIPS to mips0
    
    In preparation for supporting nanoMIPS builds, switch all instances of
    method 2 in generic non-platform-specific code to use push & pop as in
    method 1 instead. The .set push & .set pop is arguably cleaner anyway,
    and if nothing else it's good to consistently use one method.
    Signed-off-by: default avatarPaul Burton <paul.burton@mips.com>
    Patchwork: https://patchwork.linux-mips.org/patch/21037/
    Cc: linux-mips@linux-mips.org
    378ed6f0
bitops.h 15.7 KB