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