diff mbox series

[v2,06/12] linux-user/sparc: Use WREG_SP constant in sparc/signal.c

Message ID 20191025113921.9412-7-richard.henderson@linaro.org
State Superseded
Headers show
Series linux-user sparc fixes | expand

Commit Message

Richard Henderson Oct. 25, 2019, 11:39 a.m. UTC
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

Comments

Laurent Vivier Oct. 25, 2019, 12:19 p.m. UTC | #1
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>
Laurent Vivier Nov. 5, 2019, 9:50 a.m. UTC | #2
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 mbox series

Patch

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;