[PATCH v3 2/3] tests/tcg/ppc64le: change signal_save_restore_xer to use SIGTRAP

matheus.ferst@eldorado.org.br posted 3 patches 4 years ago
Maintainers: Greg Kurz <groug@kaod.org>, David Gibson <david@gibson.dropbear.id.au>, Laurent Vivier <laurent@vivier.eu>, "Cédric Le Goater" <clg@kaod.org>, Daniel Henrique Barboza <danielhb413@gmail.com>
[PATCH v3 2/3] tests/tcg/ppc64le: change signal_save_restore_xer to use SIGTRAP
Posted by matheus.ferst@eldorado.org.br 4 years ago
From: Matheus Ferst <matheus.ferst@eldorado.org.br>

Now that linux-user delivers the signal on tw, we can change
signal_save_restore_xer to use SIGTRAP instead of SIGILL.

Suggested-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br>
---
 tests/tcg/ppc64le/signal_save_restore_xer.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/tests/tcg/ppc64le/signal_save_restore_xer.c b/tests/tcg/ppc64le/signal_save_restore_xer.c
index e4f8a07dd7..9227f4f455 100644
--- a/tests/tcg/ppc64le/signal_save_restore_xer.c
+++ b/tests/tcg/ppc64le/signal_save_restore_xer.c
@@ -11,7 +11,7 @@
 
 uint64_t saved;
 
-void sigill_handler(int sig, siginfo_t *si, void *ucontext)
+void sigtrap_handler(int sig, siginfo_t *si, void *ucontext)
 {
     ucontext_t *uc = ucontext;
     uc->uc_mcontext.regs->nip += 4;
@@ -23,14 +23,14 @@ int main(void)
 {
     uint64_t initial = XER_CA | XER_CA32, restored;
     struct sigaction sa = {
-        .sa_sigaction = sigill_handler,
+        .sa_sigaction = sigtrap_handler,
         .sa_flags = SA_SIGINFO
     };
 
-    sigaction(SIGILL, &sa, NULL);
+    sigaction(SIGTRAP, &sa, NULL);
 
     asm("mtspr 1, %1\n\t"
-        ".long 0x0\n\t"
+        "trap\n\t"
         "mfspr %0, 1\n\t"
         : "=r" (restored)
         : "r" (initial));
-- 
2.25.1


Re: [PATCH v3 2/3] tests/tcg/ppc64le: change signal_save_restore_xer to use SIGTRAP
Posted by Laurent Vivier 3 years, 11 months ago
Le 13/01/2022 à 18:04, matheus.ferst@eldorado.org.br a écrit :
> From: Matheus Ferst <matheus.ferst@eldorado.org.br>
> 
> Now that linux-user delivers the signal on tw, we can change
> signal_save_restore_xer to use SIGTRAP instead of SIGILL.
> 
> Suggested-by: Richard Henderson <richard.henderson@linaro.org>
> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
> Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br>
> ---
>   tests/tcg/ppc64le/signal_save_restore_xer.c | 8 ++++----
>   1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/tests/tcg/ppc64le/signal_save_restore_xer.c b/tests/tcg/ppc64le/signal_save_restore_xer.c
> index e4f8a07dd7..9227f4f455 100644
> --- a/tests/tcg/ppc64le/signal_save_restore_xer.c
> +++ b/tests/tcg/ppc64le/signal_save_restore_xer.c
> @@ -11,7 +11,7 @@
>   
>   uint64_t saved;
>   
> -void sigill_handler(int sig, siginfo_t *si, void *ucontext)
> +void sigtrap_handler(int sig, siginfo_t *si, void *ucontext)
>   {
>       ucontext_t *uc = ucontext;
>       uc->uc_mcontext.regs->nip += 4;
> @@ -23,14 +23,14 @@ int main(void)
>   {
>       uint64_t initial = XER_CA | XER_CA32, restored;
>       struct sigaction sa = {
> -        .sa_sigaction = sigill_handler,
> +        .sa_sigaction = sigtrap_handler,
>           .sa_flags = SA_SIGINFO
>       };
>   
> -    sigaction(SIGILL, &sa, NULL);
> +    sigaction(SIGTRAP, &sa, NULL);
>   
>       asm("mtspr 1, %1\n\t"
> -        ".long 0x0\n\t"
> +        "trap\n\t"
>           "mfspr %0, 1\n\t"
>           : "=r" (restored)
>           : "r" (initial));

Applied to my linux-user-for-7.0 branch.

Thanks,
Laurent