From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Mackerras Subject: Re: [PATCH v2 3/3] KVM: PPC: Book3S: MMIO emulation support for little endian guests Date: Wed, 9 Oct 2013 16:59:20 +1100 Message-ID: <20131009055920.GA10650@drongo> References: <1381241531-27940-1-git-send-email-clg@fr.ibm.com> <1381241531-27940-4-git-send-email-clg@fr.ibm.com> <20131008233123.GB17420@iris.ozlabs.ibm.com> <5F0A1154-D417-454C-A3CD-59AEF7EF0D97@suse.de> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: =?iso-8859-1?Q?C=E9dric?= Le Goater , "kvm-ppc@vger.kernel.org" , "kvm@vger.kernel.org mailing list" To: Alexander Graf Return-path: Content-Disposition: inline In-Reply-To: <5F0A1154-D417-454C-A3CD-59AEF7EF0D97@suse.de> Sender: kvm-ppc-owner@vger.kernel.org List-Id: kvm.vger.kernel.org On Wed, Oct 09, 2013 at 01:46:29AM +0200, Alexander Graf wrote: > > > Am 09.10.2013 um 01:31 schrieb Paul Mackerras : > > > True, until we get to POWER8 with its split little-endian support, > > where instructions and data can have different endianness... > > How exactly does that work? They added an extra MSR bit called SLE which enables the split-endian mode. It's bit 5 (IBM numbering). For backwards compatibility, the LE bit controls instruction endianness, and data endianness depends on LE ^ SLE, that is, with SLE = 0 things work as before. With SLE=1 and LE=0 you get little-endian data and big-endian instructions, and vice versa with SLE=1 and LE=1. There is also a user accessible "mtsle" instruction that sets the value of the SLE bit. This enables programs to flip their data endianness back and forth quickly, so it's usable for short instruction sequences, without the need to generate instructions of the opposite endianness. Paul.