From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8842 invoked by alias); 23 Feb 2011 15:39:49 -0000 Received: (qmail 8835 invoked by uid 22791); 23 Feb 2011 15:39:48 -0000 X-SWARE-Spam-Status: No, hits=-1.9 required=5.0 tests=AWL,BAYES_00,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from hagrid.ecoscentric.com (HELO mail.ecoscentric.com) (212.13.207.197) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 23 Feb 2011 15:39:45 +0000 Received: by mail.ecoscentric.com (Postfix, from userid 48) id 080802F78004; Wed, 23 Feb 2011 15:39:43 +0000 (GMT) From: bugzilla-daemon@bugs.ecos.sourceware.org To: backlog@bugs.ecos.sourceware.org Subject: [Bug 1000660] ARM HAL breaks on spurious interrupt X-Bugzilla-Reason: AssignedTo X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: eCos X-Bugzilla-Component: HAL X-Bugzilla-Keywords: X-Bugzilla-Severity: major X-Bugzilla-Who: ml@tctechnologies.tc X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Priority: normal X-Bugzilla-Assigned-To: backlog@bugs.ecos.sourceware.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: CC In-Reply-To: References: X-Bugzilla-URL: http://bugs.ecos.sourceware.org/ Auto-Submitted: auto-generated Content-Type: text/plain; charset="UTF-8" MIME-Version: 1.0 Date: Wed, 23 Feb 2011 15:39:00 -0000 Message-Id: <20110223153925.D7F482F78004@mail.ecoscentric.com> Mailing-List: contact ecos-bugs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: ecos-bugs-owner@sourceware.org X-SW-Source: 2011/txt/msg00535.txt.bz2 Please do not reply to this email. Use the web interface provided at: http://bugs.ecos.sourceware.org/show_bug.cgi?id=1000660 Morten Lave changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |ml@tctechnologies.tc --- Comment #4 from Morten Lave 2011-02-23 15:39:22 GMT --- I have seen the same problem and it is in both eCos 2.x and 3.0. We have created a fix which has worked well for 2.x and this as far as i can see works for 3.0 as well. The fix seems to be along the same lines as what has allegedly been done in eCosPro. We have replaced: // The return value from the handler (in r0) will indicate whether a // DSR is to be posted. Pass this together with a pointer to the // interrupt object we have just used to the interrupt tidy up routine. // don't run this for spurious interrupts! cmp v1,#CYGNUM_HAL_INTERRUPT_NONE beq 17f ldr r1,.hal_interrupt_objects With // The return value from the handler (in r0) will indicate whether a // DSR is to be posted. Pass this together with a pointer to the // interrupt object we have just used to the interrupt tidy up routine. // don't run this for spurious interrupts! cmp v1,#CYGNUM_HAL_INTERRUPT_NONE //ML23-02-2011, even spurious interrupts must unlock scheduler moveq r0,#0 ldr r1,.hal_interrupt_objects This will make sure that interrupt_end is called even for a spurious interrupt but no DSR is posted as r0 is zero and therefore the vector is ignored. This fix replaces a conditional branch with a conditional move so it would not add any latency to regular interrupt processing. -- Configure bugmail: http://bugs.ecos.sourceware.org/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug.