[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 12/59] linux-user/sparc: Include TARGET_STACK_BIAS in get_sp_from_
From: |
Laurent Vivier |
Subject: |
[PULL 12/59] linux-user/sparc: Include TARGET_STACK_BIAS in get_sp_from_cpustate |
Date: |
Mon, 17 May 2021 20:13:37 +0200 |
From: Richard Henderson <richard.henderson@linaro.org>
Move TARGET_STACK_BIAS from signal.c. Generic code cares about the
logical stack pointer, not the physical one that has a bias applied
for sparc64.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20210426025334.1168495-6-richard.henderson@linaro.org>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
---
linux-user/sparc/signal.c | 2 --
linux-user/sparc/target_cpu.h | 9 ++++++++-
2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/linux-user/sparc/signal.c b/linux-user/sparc/signal.c
index d27b7a3af79d..76579093a88c 100644
--- a/linux-user/sparc/signal.c
+++ b/linux-user/sparc/signal.c
@@ -394,8 +394,6 @@ struct target_reg_window {
abi_ulong ins[8];
};
-#define TARGET_STACK_BIAS 2047
-
/* {set, get}context() needed for 64-bit SparcLinux userland. */
void sparc64_set_context(CPUSPARCState *env)
{
diff --git a/linux-user/sparc/target_cpu.h b/linux-user/sparc/target_cpu.h
index 1fa1011775a1..1f4bed50f476 100644
--- a/linux-user/sparc/target_cpu.h
+++ b/linux-user/sparc/target_cpu.h
@@ -20,6 +20,12 @@
#ifndef SPARC_TARGET_CPU_H
#define SPARC_TARGET_CPU_H
+#if defined(TARGET_SPARC64) && !defined(TARGET_ABI32)
+# define TARGET_STACK_BIAS 2047
+#else
+# define TARGET_STACK_BIAS 0
+#endif
+
static inline void cpu_clone_regs_child(CPUSPARCState *env, target_ulong newsp,
unsigned flags)
{
@@ -40,6 +46,7 @@ static inline void cpu_clone_regs_child(CPUSPARCState *env,
target_ulong newsp,
#endif
/* ??? The kernel appears to copy one stack frame to the new stack. */
/* ??? The kernel force aligns the new stack. */
+ /* Userspace provides a biased stack pointer value. */
env->regwptr[WREG_SP] = newsp;
}
@@ -77,7 +84,7 @@ static inline void cpu_set_tls(CPUSPARCState *env,
target_ulong newtls)
static inline abi_ulong get_sp_from_cpustate(CPUSPARCState *state)
{
- return state->regwptr[WREG_SP];
+ return state->regwptr[WREG_SP] + TARGET_STACK_BIAS;
}
#endif
--
2.31.1
- [PULL 07/59] linux-user: Add strace support for printing arguments of llseek, (continued)
- [PULL 07/59] linux-user: Add strace support for printing arguments of llseek, Laurent Vivier, 2021/05/17
- [PULL 15/59] linux-user/sparc: Merge sparc64 target_elf.h, Laurent Vivier, 2021/05/17
- [PULL 05/59] linux-user/arm: Do not fill in si_code for fpa11 exceptions, Laurent Vivier, 2021/05/17
- [PULL 02/59] linux-user: strace now handles unshare syscall args correctly, Laurent Vivier, 2021/05/17
- [PULL 06/59] linux-user/arm: Simplify accumulating and raising fpa11 exceptions, Laurent Vivier, 2021/05/17
- [PULL 14/59] linux-user/sparc: Merge sparc64 target_syscall.h, Laurent Vivier, 2021/05/17
- [PULL 13/59] linux-user/sparc: Clean up init_thread, Laurent Vivier, 2021/05/17
- [PULL 11/59] linux-user: Pass CPUArchState to target_restore_altstack, Laurent Vivier, 2021/05/17
- [PULL 17/59] linux-user/sparc: Merge sparc64 termbits.h, Laurent Vivier, 2021/05/17
- [PULL 03/59] linux-user/arm: Split out emulate_arm_fpa11, Laurent Vivier, 2021/05/17
- [PULL 12/59] linux-user/sparc: Include TARGET_STACK_BIAS in get_sp_from_cpustate,
Laurent Vivier <=
- [PULL 16/59] linux-user/sparc: Merge sparc64 target_structs.h, Laurent Vivier, 2021/05/17
- [PULL 19/59] linux-user/sparc: Remove target_sigcontext as unused, Laurent Vivier, 2021/05/17
- [PULL 20/59] linux-user/sparc: Remove target_rt_signal_frame as unused, Laurent Vivier, 2021/05/17
- [PULL 22/59] linux-user/sparc: Use target_pt_regs, Laurent Vivier, 2021/05/17
- [PULL 25/59] linux-user/sparc: Save and restore fpu in signal frame, Laurent Vivier, 2021/05/17
- [PULL 21/59] linux-user/sparc: Fix the stackframe structure, Laurent Vivier, 2021/05/17
- [PULL 04/59] linux-user/arm: Do not emulate fpa11 in thumb mode, Laurent Vivier, 2021/05/17
- [PULL 09/59] linux-user: Use target_restore_altstack in all sigreturn, Laurent Vivier, 2021/05/17
- [PULL 10/59] linux-user: Pass CPUArchState to do_sigaltstack, Laurent Vivier, 2021/05/17
- [PULL 29/59] linux-user/sparc: Add 64-bit support to fpu save/restore, Laurent Vivier, 2021/05/17