MIPS: Avoid using .set mips0 to restore ISA
authorPaul Burton <paul.burton@mips.com>
Thu, 8 Nov 2018 20:14:38 +0000 (20:14 +0000)
committerPaul Burton <paul.burton@mips.com>
Fri, 9 Nov 2018 18:23:19 +0000 (10:23 -0800)
commit378ed6f0e3c525e3b12827e7b7fb0a078ee48a32
tree766bb2bdd18f7aa7fce8a9ccb428cfcad8cf2feb
parent183b40f992c8f98082c4d72043ecdeba0e6a4367
MIPS: Avoid using .set mips0 to restore ISA

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: Paul Burton <paul.burton@mips.com>
Patchwork: https://patchwork.linux-mips.org/patch/21037/
Cc: linux-mips@linux-mips.org
16 files changed:
arch/mips/include/asm/atomic.h
arch/mips/include/asm/bitops.h
arch/mips/include/asm/cmpxchg.h
arch/mips/include/asm/edac.h
arch/mips/include/asm/futex.h
arch/mips/include/asm/hazards.h
arch/mips/include/asm/io.h
arch/mips/include/asm/kvm_host.h
arch/mips/include/asm/local.h
arch/mips/include/asm/mipsmtregs.h
arch/mips/include/asm/mipsregs.h
arch/mips/include/asm/pgtable.h
arch/mips/include/asm/stackframe.h
arch/mips/kernel/genex.S
arch/mips/kernel/idle.c
arch/mips/kernel/syscall.c