From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:48111) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S2OrH-0002BS-1T for qemu-devel@nongnu.org; Tue, 28 Feb 2012 10:21:00 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1S2OrB-0007wt-Ax for qemu-devel@nongnu.org; Tue, 28 Feb 2012 10:20:54 -0500 Received: from indium.canonical.com ([91.189.90.7]:55444) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S2OrB-0007wk-4U for qemu-devel@nongnu.org; Tue, 28 Feb 2012 10:20:49 -0500 Received: from loganberry.canonical.com ([91.189.90.37]) by indium.canonical.com with esmtp (Exim 4.71 #1 (Debian)) id 1S2Or9-0008Bs-T9 for ; Tue, 28 Feb 2012 15:20:47 +0000 Received: from loganberry.canonical.com (localhost [127.0.0.1]) by loganberry.canonical.com (Postfix) with ESMTP id CC10C2E807B for ; Tue, 28 Feb 2012 15:20:47 +0000 (UTC) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Date: Tue, 28 Feb 2012 15:15:03 -0000 From: Peter Maydell Sender: bounces@canonical.com References: <20120228144943.7111.8880.malonedeb@gac.canonical.com> Message-Id: <20120228151503.18562.8051.malone@soybean.canonical.com> Errors-To: bounces@canonical.com Subject: [Qemu-devel] [Bug 942659] Re: ARM: CORTEX M, PRIMASK does not disable interrupts Reply-To: Bug 942659 <942659@bugs.launchpad.net> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org > This change changes the behaviour for non-M-profile cores ...or maybe not: I was confused by the resemblance to that other patch. I still think one-line fixes are unlikely to be the right approach here, though. -- = You received this bug notification because you are a member of qemu- devel-ml, which is subscribed to QEMU. https://bugs.launchpad.net/bugs/942659 Title: ARM: CORTEX M, PRIMASK does not disable interrupts Status in QEMU: New Bug description: qemu version 0.15.1 but the same code is in qemu 1.0 "CPSID I" does not disable interrupts for CORTEX M3 = if (interrupt_request & CPU_INTERRUPT_HARD && ((IS_M(env) && env->regs[15] < 0xfffffff0) || !(env->uncached_cpsr & CPSR_I))) { env->exception_index =3D EXCP_IRQ; do_interrupt(env); next_tb =3D 0; } = do_interrupt() will be executed even if (env->uncached_cpsr & CPSR_I) =3D= =3D 1 , disable interrupt bit set. = then changed to: = if (interrupt_request & CPU_INTERRUPT_HARD = && !(env->uncached_cpsr & CPSR_I) && (IS_M(env) ? env->regs[15] < 0xfffffff0: 1) ) { env->exception_index =3D EXCP_IRQ; do_interrupt(env); next_tb =3D 0; } works To manage notifications about this bug go to: https://bugs.launchpad.net/qemu/+bug/942659/+subscriptions