qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2 09/27] linux-user/sh4: Clean env->flags on si


From: Richard Henderson
Subject: Re: [Qemu-devel] [PATCH v2 09/27] linux-user/sh4: Clean env->flags on signal boundaries
Date: Sat, 15 Jul 2017 16:33:44 -1000
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1

On 07/15/2017 12:59 PM, Aurelien Jarno wrote:
On 2017-07-06 16:20, Richard Henderson wrote:
If a signal is delivered during the execution of a delay slot,
or a gUSA region, clear those bits from the environment so that
the signal handler does not start in that same state.

How are signals delivered in linux-user? At least in system mode we
forbid interrupts in the delay slot (see commit 5c6f3eb7db), as the
manual clearly declare them as indivisible. Maybe the same should be
done for linux-user?

Signals get queued, and delivered eventually. I don't believe that we do anything to check that "signals can't be delivered yet" like we do in system mode.

+    regs->flags &= ~(DELAY_SLOT_MASK | GUSA_MASK);
  }
static void setup_frame(int sig, struct target_sigaction *ka,

Why not using TB_FLAG_ENVFLAGS_MASK introduced earlier in this patch
series?

I really want to clear these two sets. I didn't want to assume that ENVFLAGS_MASK would never contain anything else.


r~




reply via email to

[Prev in Thread] Current Thread [Next in Thread]