MIPS: Only use current_stack_pointer on GCC
authorKees Cook <keescook@chromium.org>
Wed, 9 Mar 2022 22:09:39 +0000 (14:09 -0800)
committerThomas Bogendoerfer <tsbogend@alpha.franken.de>
Mon, 14 Mar 2022 14:02:53 +0000 (15:02 +0100)
commitb847bd64ea9f484510e27065cb2bccc58d9b829b
tree6ee0d94d6ce3516b2047ecf0bfcab2148afcc273
parent4d409ca3e5107a1b300d0f36550d61c5da4fd8a7
MIPS: Only use current_stack_pointer on GCC

Unfortunately, Clang did not have support for "sp" as a global register
definition, and was crashing after the addition of current_stack_pointer.
This has been fixed in Clang 14, but earlier Clang versions need to
avoid this code, so add a versioned test and revert back to the
open-coded asm instances. Fixes Clang build error:

fatal error: error in backend: Invalid register name global variable

Fixes: 200ed341b864 ("mips: Implement "current_stack_pointer"")
Reported-by: Nathan Chancellor <nathan@kernel.org>
Reviewed-by: Nathan Chancellor <nathan@kernel.org>
Link: https://lore.kernel.org/lkml/YikTQRql+il3HbrK@dev-arch.thelio-3990X
Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Cc: Marc Zyngier <maz@kernel.org>
Cc: Guenter Roeck <linux@roeck-us.net>
Cc: Yanteng Si <siyanteng01@gmail.com>
Cc: linux-mips@vger.kernel.org
Signed-off-by: Kees Cook <keescook@chromium.org>
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
arch/mips/Kconfig
arch/mips/include/asm/thread_info.h
arch/mips/kernel/irq.c
arch/mips/lib/uncached.c