From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=48719 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PcQu4-0003qC-I8 for qemu-devel@nongnu.org; Mon, 10 Jan 2011 18:11:58 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PcQu3-0006Jw-2e for qemu-devel@nongnu.org; Mon, 10 Jan 2011 18:11:56 -0500 Received: from mnementh.archaic.org.uk ([81.2.115.146]:49595) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PcQu2-0006J0-Qn for qemu-devel@nongnu.org; Mon, 10 Jan 2011 18:11:55 -0500 Received: from pm215 by mnementh.archaic.org.uk with local (Exim 4.69) (envelope-from ) id 1PcQu0-0003fN-1o for qemu-devel@nongnu.org; Mon, 10 Jan 2011 23:11:52 +0000 From: Peter Maydell Date: Mon, 10 Jan 2011 23:11:48 +0000 Message-Id: <1294701112-14071-1-git-send-email-peter.maydell@linaro.org> Subject: [Qemu-devel] [PATCH 0/4] target-arm: get IT bits right at exceptions List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org This patchset (when combined with my previous patchset "Translate based on TB flags, not CPUState") is a fix for https://bugs.launchpad.net/qemu/+bug/581335 where we were not getting the IT (conditional execution) bits in the CPSR right when we took an unexpected exception in Thumb mode. The linux-user patch fixes an issue exposed by fixing this, where we weren't clearing the IT bits before entering the signal handler, so that if we took the signal inside an IT block the first part of the signal handler wouldn't be executed. The first two patches in the series and the long comment in patch 4 are aimed at making it a bit clearer how we handle the IT bits; it took me quite a long time to figure out exactly what the existing code was doing... Peter Maydell (4): target-arm: Remove redundant setting of IT bits before Thumb SWI target-arm: Refactor translation of exception generating instructions linux-user: ARM: clear the IT bits when invoking a signal handler target-arm: Restore IT bits when resuming after an exception linux-user/signal.c | 16 +++++---- target-arm/translate.c | 80 ++++++++++++++++++++++++++++++----------------- 2 files changed, 60 insertions(+), 36 deletions(-)