MIPS: Workaround clang inline compat branch issue
authorJiaxun Yang <jiaxun.yang@flygoat.com>
Tue, 28 Feb 2023 19:34:59 +0000 (19:34 +0000)
committerThomas Bogendoerfer <tsbogend@alpha.franken.de>
Tue, 28 Feb 2023 22:09:49 +0000 (23:09 +0100)
commit1a2c73f4834dd79e4f2c590ac75358fb44137650
tree6fbb8f787588258eaecc2e3852f33477b6643ee3
parent70f864d1084734f8816a247c24e6876d2dfb5f89
MIPS: Workaround clang inline compat branch issue

Clang is unable to handle the situation that a chunk of inline
assembly ends with a compat branch instruction and then compiler
generates another control transfer instruction immediately after
this compat branch. The later instruction will end up in forbidden
slot and cause exception.

Workaround by add a option to control the use of compact branch.
Currently it's selected by CC_IS_CLANG and hopefully we can change
it to a version check in future if clang manages to fix it.

Fix boot on boston board.

Link: https://github.com/llvm/llvm-project/issues/61045
Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
Acked-by: Nathan Chancellor <nathan@kernel.org>
Acked-by: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
arch/mips/Kconfig
arch/mips/include/asm/asm.h