On Thu, Oct 14, 2021 at 10:10 PM Richard Henderson <
[email protected]> wrote:

> Remove the comment about siglongjmp.  We do use sigsetjmp
> in the main cpu loop, but we do not save the signal mask
> as most exits from the cpu loop do not require them.
>
> Signed-off-by: Richard Henderson <[email protected]>
> ---
>  accel/tcg/user-exec.c | 14 ++------------
>  1 file changed, 2 insertions(+), 12 deletions(-)
>

Reviewed-by: Warner Losh <[email protected]>



> diff --git a/accel/tcg/user-exec.c b/accel/tcg/user-exec.c
> index cb63e528c5..744af19397 100644
> --- a/accel/tcg/user-exec.c
> +++ b/accel/tcg/user-exec.c
> @@ -46,17 +46,6 @@ __thread uintptr_t helper_retaddr;
>
>  //#define DEBUG_SIGNAL
>
> -/* exit the current TB from a signal handler. The host registers are
> -   restored in a state compatible with the CPU emulator
> - */
> -static void QEMU_NORETURN cpu_exit_tb_from_sighandler(CPUState *cpu,
> -                                                      sigset_t *old_set)
> -{
> -    /* XXX: use siglongjmp ? */
> -    sigprocmask(SIG_SETMASK, old_set, NULL);
> -    cpu_loop_exit_noexc(cpu);
> -}
> -
>  /*
>   * Adjust the pc to pass to cpu_restore_state; return the memop type.
>   */
> @@ -155,7 +144,8 @@ bool handle_sigsegv_accerr_write(CPUState *cpu,
> sigset_t *old_set,
>           * currently executing TB was modified and must be exited
>           * immediately.  Clear helper_retaddr for next execution.
>           */
> -        cpu_exit_tb_from_sighandler(cpu, old_set);
> +        sigprocmask(SIG_SETMASK, old_set, NULL);
> +        cpu_loop_exit_noexc(cpu);
>          /* NORETURN */
>      default:
>          g_assert_not_reached();
> --
> 2.25.1
>
>

Reply via email to