From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MA23Z-0000qk-QQ for qemu-devel@nongnu.org; Fri, 29 May 2009 09:23:33 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MA23Y-0000pr-39 for qemu-devel@nongnu.org; Fri, 29 May 2009 09:23:33 -0400 Received: from [199.232.76.173] (port=55852 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MA23X-0000po-Ud for qemu-devel@nongnu.org; Fri, 29 May 2009 09:23:31 -0400 Received: from flounder.pepperfish.net ([87.237.62.181]:54270) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1MA23X-0002FT-KY for qemu-devel@nongnu.org; Fri, 29 May 2009 09:23:31 -0400 Received: from [10.112.102.2] (helo=jennifer.kylikki.org) by flounder.pepperfish.net with esmtps (Exim 4.69 #1 (Debian)) id 1MA23O-0004IP-Q5 for ; Fri, 29 May 2009 14:23:22 +0100 Received: from derik.kyllikki.org ([192.168.7.20] helo=derik) by jennifer.kylikki.org with esmtp (Exim 4.69) (envelope-from ) id 1MA23R-0006oI-SN for qemu-devel@nongnu.org; Fri, 29 May 2009 14:23:25 +0100 Received: from vince by derik with local (Exim 4.69) (envelope-from ) id 1MA23R-0003Ns-MX for qemu-devel@nongnu.org; Fri, 29 May 2009 14:23:25 +0100 From: Vincent Sanders Date: Fri, 29 May 2009 14:23:24 +0100 Message-Id: <1243603405-12989-1-git-send-email-vince@simtec.co.uk> Subject: [Qemu-devel] Add ARM920T to ARM emulation List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org This adds the ARM920T to the ARM supported processor cores. It also alters the default emulated instruction set to the version 4t set and adds a feature flag for the v5 features. I have used the ARM Architecture Reference Manual (version I) as the source of the v4/v5 differences. Page 14 of the ARM-ARM ("New features in version 5T") gives an overview of the v5 features. The primary differences are related to the "Control and DSP instruction extension space" range of which v4t implements only a subset. These are described on page 144 (A3.16.3) of the ARM-ARM Other extensions (such as preloading) were added in the old NV opcode range and are ignored by the current emulation already. There was some discussion of the differences between v4 and v5 with respect to LDR behaviour manipulating the program counter when the bottom bit of an adress is set. The ARM-ARM clearly defines such behaviour as "unpredicatble" (section A2.4.3 page 48) where it says "In all variants of ARMv4 and ARMv5, bits[1:0] of a value written to R15 in ARM state must be 0b00. If they are not, the results are UNPREDICTABLE." . As such the emulation remains correct whatever the specific result of such program counter manipulation. I could alter the emulation behaviour to follow the expected physical behaviour of some version 4/5 implementations. This would complicate the code for very little aparient gain and I have been unable to find any code which uses this construct despite scanning the entire arm and armel repositories of Debian.