From fe92da0f355e9f664a56702c36c50e20e84c51cd Mon Sep 17 00:00:00 2001 From: Daniel Sanders Date: Tue, 24 Feb 2015 15:02:57 +0000 Subject: [PATCH] MIPS: Changed current_thread_info() to an equivalent supported by both clang and GCC Without this, a 'break' instruction is executed very early in the boot and the boot hangs. The problem is that clang doesn't honour named registers on local variables and silently treats them as normal uninitialized variables. However, it does honour them on global variables. Signed-off-by: Daniel Sanders Cc: Ralf Baechle Cc: Paul Burton Cc: Markos Chandras Cc: James Hogan Cc: linux-mips@linux-mips.org Cc: Sergei Shtylyov Cc: David Daney Acked-by: Behan Webster Patchwork: https://patchwork.linux-mips.org/patch/9311/ Signed-off-by: Ralf Baechle --- arch/mips/include/asm/thread_info.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/mips/include/asm/thread_info.h b/arch/mips/include/asm/thread_info.h index 55ed6602204c..2f0dba36e0a8 100644 --- a/arch/mips/include/asm/thread_info.h +++ b/arch/mips/include/asm/thread_info.h @@ -55,10 +55,10 @@ struct thread_info { #define init_stack (init_thread_union.stack) /* How to get the thread information struct from C. */ +register struct thread_info *__current_thread_info __asm__("$28"); + static inline struct thread_info *current_thread_info(void) { - register struct thread_info *__current_thread_info __asm__("$28"); - return __current_thread_info; }