From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:58902) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UCVO4-0006Df-CT for qemu-devel@nongnu.org; Mon, 04 Mar 2013 08:25:11 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UCVNx-0002xx-Ra for qemu-devel@nongnu.org; Mon, 04 Mar 2013 08:25:04 -0500 Received: from relay1.mentorg.com ([192.94.38.131]:60260) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UCVNx-0002vF-L2 for qemu-devel@nongnu.org; Mon, 04 Mar 2013 08:24:57 -0500 From: Paul Brook Date: Mon, 4 Mar 2013 13:24:52 +0000 References: <1362158507-19310-1-git-send-email-chouteau@adacore.com> <201303012058.26277.paul@codesourcery.com> <513477C1.5080505@adacore.com> In-Reply-To: <513477C1.5080505@adacore.com> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-6" Content-Transfer-Encoding: 7bit Message-ID: <201303041324.52962.paul@codesourcery.com> Subject: Re: [Qemu-devel] [PATCH 4/4] target-arm: always set endian bits in big-endian mode List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Fabien Chouteau Cc: peter.maydell@linaro.org, qemu-devel@nongnu.org, afaerber@suse.de > On 03/01/2013 09:58 PM, Paul Brook wrote: > >> +#ifdef TARGET_WORDS_BIGENDIAN > >> + if (arm_feature(env, ARM_FEATURE_V6) > >> + || arm_feature(env, ARM_FEATURE_V7)) { > >> + /* IE and EE bits stay set for big-endian */ > >> + env->cp15.c1_sys |= (1 << 31) | (1 << 25); > >> + } > >> +#endif > > > > This is wrong for all the CPUs QEMU crrently supports. SCTLR.IE is > > defined to be zero. > > Again I'd like to have more information. Why is it wrong to set IE when > we are in big-endian? The ARM architecture defines two big-endian modes. In BE8 mode only data accesses big-endian, code fetches are still little-endian. In BE32 mode both code and data are big-endian. In theory a fourth mode (big-endian code, little-endian data) exists, though I've never seen that used. All the v7 cores QEMU currently supports[1] only implement BE8 mode. The IE bit is reserved and most be zero. Usermode emulation implements both, but the privileged cp15 registers can safely be ignored there. Paul [1] Except maybe the M profile cores, but they use a different system model anyway.