On Tuesday 08 December 2009, David Brownell wrote: > > From Section B.7 "Determining the core and system state" of "ARM9E-S > > Core Technical Reference Manual" (DDI0240A.pdf): > > > > | Note > > | > > | Because all Thumb instructions are only 16 bits long, > > Maybe back then they were! [ ... ] > > > > | the simplest > > | method, when shifting scan chain 1, is to repeat the instruction. For > > | example, the encoding for BX R0 is 0x4700, so when 0x47004700 shifts > > | into scan chain 1, the debugger does not have to keep track of the half > > | of the bus on which the processor expects to read the data. > > So it's an implementation shortcut. Though ... I'm not sure when > we'd be pushing Thumb opcodes through the pipeline of an ARM9 (or > presumably ARM7 too?) core! Generally the model seems to be to > keep the core in ARM state except when it's running code. Only > the Cortex-M cores do otherwise, I think.
The ARM7TDMI r4p1 doc says much the same. And "when we'd be pushing" Thumb instructions ... on debug entry and exit, to switch the core out of Thumb mode into ARM mode. Strictly speaking we shouldn't need to do that in all cases, but it's simpler that way (albeit slower when the core is running Thumb code). - Dave > Thanks for the info, that sounds likely to be the intent. It was > that way in the original SVN checkin. I'm unlikely to check what > Dominic's thesis had to say on this topic. :) _______________________________________________ Openocd-development mailing list Openocd-development@lists.berlios.de https://lists.berlios.de/mailman/listinfo/openocd-development