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 > >
