Message ID | 20191025113921.9412-7-richard.henderson@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | linux-user sparc fixes | expand |
Le 25/10/2019 à 13:39, Richard Henderson a écrit : > s/UREG_FP/WREG_SP/g > > This is non-obvious because the UREG_FP constant is fact wrong. > However, the previous search-and-replace patch made it clear that > UREG_FP expands to WREG_O6, and we can see from the enumeration in > target/sparc/cpu.h that WREG_O6 is in fact WREG_SP, the stack pointer. > > The UREG_SP define is unused; remove it. > > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> > --- > linux-user/sparc/signal.c | 7 ++----- > 1 file changed, 2 insertions(+), 5 deletions(-) > > diff --git a/linux-user/sparc/signal.c b/linux-user/sparc/signal.c > index a967e2db73..0db4c5f84f 100644 > --- a/linux-user/sparc/signal.c > +++ b/linux-user/sparc/signal.c > @@ -104,9 +104,6 @@ struct target_rt_signal_frame { > qemu_siginfo_fpu_t fpu_state; > }; > > -#define UREG_FP WREG_O6 > -#define UREG_SP WREG_I6 > - > static inline abi_ulong get_sigframe(struct target_sigaction *sa, > CPUSPARCState *env, > unsigned long framesize) > @@ -201,7 +198,7 @@ void setup_frame(int sig, struct target_sigaction *ka, > goto sigsegv; > > /* 3. signal handler back-trampoline and parameters */ > - env->regwptr[UREG_FP] = sf_addr; > + env->regwptr[WREG_SP] = sf_addr; > env->regwptr[WREG_O0] = sig; > env->regwptr[WREG_O1] = sf_addr + > offsetof(struct target_signal_frame, info); > @@ -255,7 +252,7 @@ long do_sigreturn(CPUSPARCState *env) > sigset_t host_set; > int i; > > - sf_addr = env->regwptr[UREG_FP]; > + sf_addr = env->regwptr[WREG_SP]; > trace_user_do_sigreturn(env, sf_addr); > if (!lock_user_struct(VERIFY_READ, sf, sf_addr, 1)) { > goto segv_and_exit; > Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Le 25/10/2019 à 13:39, Richard Henderson a écrit : > s/UREG_FP/WREG_SP/g > > This is non-obvious because the UREG_FP constant is fact wrong. > However, the previous search-and-replace patch made it clear that > UREG_FP expands to WREG_O6, and we can see from the enumeration in > target/sparc/cpu.h that WREG_O6 is in fact WREG_SP, the stack pointer. > > The UREG_SP define is unused; remove it. > > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> > --- > linux-user/sparc/signal.c | 7 ++----- > 1 file changed, 2 insertions(+), 5 deletions(-) > > diff --git a/linux-user/sparc/signal.c b/linux-user/sparc/signal.c > index a967e2db73..0db4c5f84f 100644 > --- a/linux-user/sparc/signal.c > +++ b/linux-user/sparc/signal.c > @@ -104,9 +104,6 @@ struct target_rt_signal_frame { > qemu_siginfo_fpu_t fpu_state; > }; > > -#define UREG_FP WREG_O6 > -#define UREG_SP WREG_I6 > - > static inline abi_ulong get_sigframe(struct target_sigaction *sa, > CPUSPARCState *env, > unsigned long framesize) > @@ -201,7 +198,7 @@ void setup_frame(int sig, struct target_sigaction *ka, > goto sigsegv; > > /* 3. signal handler back-trampoline and parameters */ > - env->regwptr[UREG_FP] = sf_addr; > + env->regwptr[WREG_SP] = sf_addr; > env->regwptr[WREG_O0] = sig; > env->regwptr[WREG_O1] = sf_addr + > offsetof(struct target_signal_frame, info); > @@ -255,7 +252,7 @@ long do_sigreturn(CPUSPARCState *env) > sigset_t host_set; > int i; > > - sf_addr = env->regwptr[UREG_FP]; > + sf_addr = env->regwptr[WREG_SP]; > trace_user_do_sigreturn(env, sf_addr); > if (!lock_user_struct(VERIFY_READ, sf, sf_addr, 1)) { > goto segv_and_exit; > Applied to my linux-user branch. Thanks, Laurent
diff --git a/linux-user/sparc/signal.c b/linux-user/sparc/signal.c index a967e2db73..0db4c5f84f 100644 --- a/linux-user/sparc/signal.c +++ b/linux-user/sparc/signal.c @@ -104,9 +104,6 @@ struct target_rt_signal_frame { qemu_siginfo_fpu_t fpu_state; }; -#define UREG_FP WREG_O6 -#define UREG_SP WREG_I6 - static inline abi_ulong get_sigframe(struct target_sigaction *sa, CPUSPARCState *env, unsigned long framesize) @@ -201,7 +198,7 @@ void setup_frame(int sig, struct target_sigaction *ka, goto sigsegv; /* 3. signal handler back-trampoline and parameters */ - env->regwptr[UREG_FP] = sf_addr; + env->regwptr[WREG_SP] = sf_addr; env->regwptr[WREG_O0] = sig; env->regwptr[WREG_O1] = sf_addr + offsetof(struct target_signal_frame, info); @@ -255,7 +252,7 @@ long do_sigreturn(CPUSPARCState *env) sigset_t host_set; int i; - sf_addr = env->regwptr[UREG_FP]; + sf_addr = env->regwptr[WREG_SP]; trace_user_do_sigreturn(env, sf_addr); if (!lock_user_struct(VERIFY_READ, sf, sf_addr, 1)) { goto segv_and_exit;
s/UREG_FP/WREG_SP/g This is non-obvious because the UREG_FP constant is fact wrong. However, the previous search-and-replace patch made it clear that UREG_FP expands to WREG_O6, and we can see from the enumeration in target/sparc/cpu.h that WREG_O6 is in fact WREG_SP, the stack pointer. The UREG_SP define is unused; remove it. Signed-off-by: Richard Henderson <richard.henderson@linaro.org> --- linux-user/sparc/signal.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) -- 2.17.1