From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:44314) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SVKJD-0004bO-0k for qemu-devel@nongnu.org; Fri, 18 May 2012 06:21:24 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SVKJB-0002nM-3U for qemu-devel@nongnu.org; Fri, 18 May 2012 06:21:18 -0400 Received: from mail-wg0-f53.google.com ([74.125.82.53]:61397) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SVKJA-0002mK-QO for qemu-devel@nongnu.org; Fri, 18 May 2012 06:21:17 -0400 Received: by wgbfm10 with SMTP id fm10so2602693wgb.10 for ; Fri, 18 May 2012 03:21:14 -0700 (PDT) Date: Fri, 18 May 2012 12:21:09 +0200 From: "Edgar E. Iglesias" Message-ID: <20120518102109.GB32158@zapo> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Subject: Re: [Qemu-devel] [RFC PATCH V1 1/2] target-microblaze: impelemented swapx instructions List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "Peter A. G. Crosthwaite" Cc: david.holsgrove@petalogix.com, qemu-devel@nongnu.org, john.williams@petalogix.com On Thu, May 17, 2012 at 03:37:49PM +1000, Peter A. G. Crosthwaite wrote: > Implemented the swapb and swaph byte/halfword reversal instructions added > to microblaze v8.30 > > Signed-off-by: Peter A. G. Crosthwaite Applied, thanks Peter > --- > target-microblaze/translate.c | 12 +++++++++++- > 1 files changed, 11 insertions(+), 1 deletions(-) > > diff --git a/target-microblaze/translate.c b/target-microblaze/translate.c > index 742b395..a362938 100644 > --- a/target-microblaze/translate.c > +++ b/target-microblaze/translate.c > @@ -743,7 +743,7 @@ static void dec_bit(DisasContext *dc) > unsigned int op; > int mem_index = cpu_mmu_index(dc->env); > > - op = dc->ir & ((1 << 8) - 1); > + op = dc->ir & ((1 << 9) - 1); > switch (op) { > case 0x21: > /* src. */ > @@ -825,6 +825,16 @@ static void dec_bit(DisasContext *dc) > gen_helper_clz(cpu_R[dc->rd], cpu_R[dc->ra]); > } > break; > + case 0x1e0: > + /* swapb */ > + LOG_DIS("swapb r%d r%d\n", dc->rd, dc->ra); > + tcg_gen_bswap32_i32(cpu_R[dc->rd], cpu_R[dc->ra]); > + break; > + case 0x1e1: > + /*swaph */ > + LOG_DIS("swaph r%d r%d\n", dc->rd, dc->ra); > + tcg_gen_rotri_i32(cpu_R[dc->rd], cpu_R[dc->ra], 16); > + break; > default: > cpu_abort(dc->env, "unknown bit oc=%x op=%x rd=%d ra=%d rb=%d\n", > dc->pc, op, dc->rd, dc->ra, dc->rb); > -- > 1.7.3.2 >