From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19697 invoked by alias); 12 Jun 2006 21:39:21 -0000 Received: (qmail 19688 invoked by uid 22791); 12 Jun 2006 21:39:20 -0000 X-Spam-Check-By: sourceware.org Received: from londo.lunn.ch (HELO londo.lunn.ch) (80.238.139.98) by sourceware.org (qpsmtpd/0.31) with ESMTP; Mon, 12 Jun 2006 21:39:15 +0000 Received: from lunn by londo.lunn.ch with local (Exim 3.36 #1 (Debian)) id 1Fpu7s-0000xv-00; Mon, 12 Jun 2006 23:39:12 +0200 Date: Mon, 12 Jun 2006 21:39:00 -0000 To: Lars Povlsen Cc: eCos Disuss Message-ID: <20060612213912.GA3347@lunn.ch> Mail-Followup-To: Lars Povlsen , eCos Disuss References: <4635C7499BD3A14C9361477F0613ED9BB86D10@mx-dk1.vsc.vitesse.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4635C7499BD3A14C9361477F0613ED9BB86D10@mx-dk1.vsc.vitesse.com> User-Agent: Mutt/1.5.11+cvs20060403 From: Andrew Lunn X-IsSubscribed: yes Mailing-List: contact ecos-discuss-help@ecos.sourceware.org; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: ecos-discuss-owner@ecos.sourceware.org Subject: Re: [ECOS] Thumb support for arm9 variants? X-SW-Source: 2006-06/txt/msg00114.txt.bz2 On Mon, Jun 12, 2006 at 11:12:09PM +0200, Lars Povlsen wrote: > > Andrew, > > The offending instructions are indeed inline assembly - its both the > cache manip and reset: > > void > cyg_hal_arm9_soft_reset(CYG_ADDRESS entry) > { > > /* It would probably make more sense to have the > clear/drain/invalidate after disabling the cache and MMU, but > then we'd have to know the (unmapped) address of this code. */ > asm volatile ("mrs r1,cpsr;" > "bic r1,r1,#0x1F;" /* Put processor in SVC mode */ > "orr r1,r1,#0x13;" > "msr cpsr,r1;" > > "mov r1, #0;" > "mcr p15,0,r1,c7,c7,0;" /* clear I+DCache */ > "mcr p15,0,r1,c7,c10,4;" /* Drain Write Buffer */ > "mcr p15,0,r1,c8,c7,0;" /* Invalidate TLBs */ > "mrc p15,0,r1,c1,c0,0;" > "bic r1,r1,#0x1000;" /* disable ICache */ > "bic r1,r1,#0x0007;" /* disable DCache, MMU and > alignment faults */ > "mcr p15,0,r1,c1,c0,0;" > "nop;" /* delay 1 */ > "mov pc, %0;" /* delay 2 - next > instruction should be fetched flat */ > : : "r" (entry) : "r1"); > for(;;); > } > > As this is none of my code (!) - my question is more along the lines as > why the hal/arm/arm9/* variants does not support thumb - when the arm/* > variants do? I was under the impression that the former was the most > recent? Most recent, but probably less used in deeply embedded systems than arm7. Also, arm9 systems tend to be big systems with lots of RAM, so the more compact thumb is not normally called for. If you want to use thumb on the arm9 it looks like you are going to have to do a little work first. Either provide thumb implementation of this inline assembly, or add mode switch code to change to ARM mode before and back to thumb afterwards. Andrew -- Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss