Thread (14 messages) 14 messages, 5 authors, 2014-06-17
STALE4381d

[PATCH RESEND 1/7] ARM: Make thread_save_fp macro aware of THUMB2 mode

From: Nikolay Borisov <hidden>
Date: 2014-05-23 11:53:43

-----Original Message-----
From: linux-arm-kernel [mailto:linux-arm-kernel-
bounces at lists.infradead.org] On Behalf Of Uwe Kleine-K?nig
Sent: 23 May 2014 10:54
To: Nikolay Borisov
Cc: rric at kernel.org; a.p.zijlstra at chello.nl; jld at mozilla.com;
sboyd at codeaurora.org; Will Deacon; dave.long at linaro.org; Dave P Martin;
linux-arm-kernel at lists.infradead.org
Subject: Re: [PATCH RESEND 1/7] ARM: Make thread_save_fp macro aware of
THUMB2 mode

Hello,

On Fri, May 23, 2014 at 10:26:30AM +0100, Nikolay Borisov wrote:
quoted
The thread_save_fp macro has been defined so that it always reads the
fp member
quoted
of the cpu_context_save struct. However, in the case of THUMB2 the fp
is saved
quoted
not in the fp (r11) member but rather in r7.

This patch changes the way the macro is defined such that FP is read
from the
quoted
correct place depending on whether we are a THUMB2 kernel or not.
This enables
quoted
the backtrace in sitaution such as "echo t > /proc/sysrq-trigger" or
the
quoted
function in which a process sleeping when "ps -Al" is invoked.

Signed-off-by: Nikolay Borisov <redacted>
Reviewed-by: Anurag Aggarwal <redacted>
---
 arch/arm/include/asm/thread_info.h | 6 ++++++
 1 file changed, 6 insertions(+)
diff --git a/arch/arm/include/asm/thread_info.h
b/arch/arm/include/asm/thread_info.h
quoted
index f989d7c..e4e4208 100644
--- a/arch/arm/include/asm/thread_info.h
+++ b/arch/arm/include/asm/thread_info.h
@@ -114,8 +114,14 @@ static inline struct thread_info
*current_thread_info(void)
quoted
 	((unsigned long)(task_thread_info(tsk)->cpu_context.pc))
 #define thread_saved_sp(tsk)	\
 	((unsigned long)(task_thread_info(tsk)->cpu_context.sp))
+
+#ifndef CONFIG_THUMB2_KERNEL
 #define thread_saved_fp(tsk)	\
 	((unsigned long)(task_thread_info(tsk)->cpu_context.fp))
+#else
+#define thread_saved_fp(tsk)	\
+	((unsigned long)(task_thread_info(tsk)->cpu_context.r7))
+#endif
A comment would be nice here describing that it's gcc who forces this
on
us. Did you test if the same happens with clang?
Just checked with one of the LLVM compiler engineers and he said that 
LLVM also conforms to this behaviour e.g. R7 is used as a frame pointer 
in THUMB2 mode. In addition to that, mainline doesn't compile with LLVM 
(yet). 
Uwe
Regards, 
Nikolay 
--
Pengutronix e.K.                           | Uwe Kleine-K?nig
|
Industrial Linux Solutions                 | http://www.pengutronix.de/
|

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel at lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help