2018-08-20 02:16:41

by Zong Li

[permalink] [raw]
Subject: [PATCH 0/2] Remove the deprecated ABI implementation

This patches remove the implementation of NDS32_ABI_2 and
replace the magic number of offset of lp on stack.

In stacktrace.c, we dump the stack without considering the old
ABI, it should be consistent in traps.c.

Zong Li (2):
nds32: Remove the deprecated ABI implementation
nds32: Add macro definition for offset of lp register on stack

arch/nds32/include/asm/nds32.h | 1 +
arch/nds32/kernel/stacktrace.c | 2 +-
arch/nds32/kernel/traps.c | 7 +------
3 files changed, 3 insertions(+), 7 deletions(-)

--
2.7.4



2018-08-20 02:16:43

by Zong Li

[permalink] [raw]
Subject: [PATCH 1/2] nds32: Remove the deprecated ABI implementation

We are not using NDS32 ABI 2 for now, just remove the preprocessor
directives __NDS32_ABI_2.

Signed-off-by: Zong Li <[email protected]>
---
arch/nds32/kernel/traps.c | 5 -----
1 file changed, 5 deletions(-)

diff --git a/arch/nds32/kernel/traps.c b/arch/nds32/kernel/traps.c
index 7684c8f..f432310 100644
--- a/arch/nds32/kernel/traps.c
+++ b/arch/nds32/kernel/traps.c
@@ -117,13 +117,8 @@ static void __dump(struct task_struct *tsk, unsigned long *base_reg)
!((unsigned long)base_reg & 0x3) &&
((unsigned long)base_reg >= TASK_SIZE)) {
unsigned long next_fp;
-#if !defined(__NDS32_ABI_2)
- ret_addr = base_reg[0];
- next_fp = base_reg[1];
-#else
ret_addr = base_reg[-1];
next_fp = base_reg[FP_OFFSET];
-#endif
if (__kernel_text_address(ret_addr)) {

ret_addr = ftrace_graph_ret_addr(
--
2.7.4


2018-08-20 02:17:42

by Zong Li

[permalink] [raw]
Subject: [PATCH 2/2] nds32: Add macro definition for offset of lp register on stack

Use macro to replace the magic number.

Signed-off-by: Zong Li <[email protected]>
---
arch/nds32/include/asm/nds32.h | 1 +
arch/nds32/kernel/stacktrace.c | 2 +-
arch/nds32/kernel/traps.c | 2 +-
3 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/arch/nds32/include/asm/nds32.h b/arch/nds32/include/asm/nds32.h
index 19b1939..68c3815 100644
--- a/arch/nds32/include/asm/nds32.h
+++ b/arch/nds32/include/asm/nds32.h
@@ -17,6 +17,7 @@
#else
#define FP_OFFSET (-2)
#endif
+#define LP_OFFSET (-1)

extern void __init early_trap_init(void);
static inline void GIE_ENABLE(void)
diff --git a/arch/nds32/kernel/stacktrace.c b/arch/nds32/kernel/stacktrace.c
index 36bc870..d974c0c 100644
--- a/arch/nds32/kernel/stacktrace.c
+++ b/arch/nds32/kernel/stacktrace.c
@@ -31,7 +31,7 @@ void save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace)
&& (fpn >= (unsigned long *)TASK_SIZE)) {
unsigned long lpp, fpp;

- lpp = fpn[-1];
+ lpp = fpn[LP_OFFSET];
fpp = fpn[FP_OFFSET];
if (!__kernel_text_address(lpp))
break;
diff --git a/arch/nds32/kernel/traps.c b/arch/nds32/kernel/traps.c
index f432310..b0b85b7 100644
--- a/arch/nds32/kernel/traps.c
+++ b/arch/nds32/kernel/traps.c
@@ -117,7 +117,7 @@ static void __dump(struct task_struct *tsk, unsigned long *base_reg)
!((unsigned long)base_reg & 0x3) &&
((unsigned long)base_reg >= TASK_SIZE)) {
unsigned long next_fp;
- ret_addr = base_reg[-1];
+ ret_addr = base_reg[LP_OFFSET];
next_fp = base_reg[FP_OFFSET];
if (__kernel_text_address(ret_addr)) {

--
2.7.4


2018-08-21 07:04:54

by Greentime Hu

[permalink] [raw]
Subject: Re: [PATCH 0/2] Remove the deprecated ABI implementation

Zong Li <[email protected]> 於 2018年8月20日 週一 上午10:15寫道:
>
> This patches remove the implementation of NDS32_ABI_2 and
> replace the magic number of offset of lp on stack.
>
> In stacktrace.c, we dump the stack without considering the old
> ABI, it should be consistent in traps.c.
>
> Zong Li (2):
> nds32: Remove the deprecated ABI implementation
> nds32: Add macro definition for offset of lp register on stack
>
> arch/nds32/include/asm/nds32.h | 1 +
> arch/nds32/kernel/stacktrace.c | 2 +-
> arch/nds32/kernel/traps.c | 7 +------
> 3 files changed, 3 insertions(+), 7 deletions(-)

Acked-by: Greentime Hu <[email protected]>