From patchwork Thu Jun 2 20:04:00 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Rolnik X-Patchwork-Id: 9151137 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id AF2C560467 for ; Thu, 2 Jun 2016 20:09:37 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A096528326 for ; Thu, 2 Jun 2016 20:09:37 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 957E328328; Thu, 2 Jun 2016 20:09:37 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 342A828326 for ; Thu, 2 Jun 2016 20:09:36 +0000 (UTC) Received: from localhost ([::1]:50095 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b8Yvv-0007xF-Bh for patchwork-qemu-devel@patchwork.kernel.org; Thu, 02 Jun 2016 16:09:35 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54472) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b8Yr1-0003Q5-Lw for qemu-devel@nongnu.org; Thu, 02 Jun 2016 16:04:34 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1b8Yqu-00039l-Sa for qemu-devel@nongnu.org; Thu, 02 Jun 2016 16:04:30 -0400 Received: from mail-wm0-x244.google.com ([2a00:1450:400c:c09::244]:33154) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b8Yqt-00038T-Le for qemu-devel@nongnu.org; Thu, 02 Jun 2016 16:04:24 -0400 Received: by mail-wm0-x244.google.com with SMTP id a136so18637849wme.0 for ; Thu, 02 Jun 2016 13:04:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=jClisE6XfhoBI2owcBWPxhjk/ZCf0vY0tZyzBdTllko=; b=SwyzvwSwJgOX64JTX5ZbUdS9dGEzxNTjzYqI4+tBvDrV7NRF8azii86u5LJrFqSN/p OvetEtzPpHTATFtKVat4r1DGc6K4Anosa3tIf893cdzYb0n+gs9wj+rOShjPdEZ/h8YG 18cd82cXmFAzzHGPQBQvA5B/6W/4Zv2oW6MjXs1sw8dSZY4AWpPdXFUTIqWW9x/vst/t Oiq0l3coZ4veRYjZJ83xyQSzTODq81edLsw8FEjC9CYyR99ziOP0sJyL+U6mXgAlW31f KUkk8Vj4pFK4a8s5MuSpA170ZqUsOq5cxNGSCfNodTVltEcG75hMWnhVTmVJK6TTHsCv yRRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=jClisE6XfhoBI2owcBWPxhjk/ZCf0vY0tZyzBdTllko=; b=mt4SL8wNwNccT72fzVNnTGiTJJoOXE9nCxkExRs2snofxiY5w8oAADwK4R6oixbvD5 kf9/JIwb1BEQPFI+/94x4/Uv52wghGkmSSbw4uj4FVUYIwKkvnQ46m9NtdH0mAosTWKd UBbvaYcWzXR7ww+yqSfVDEXnWOgg1lyfOFZaO5GBcu6Gckh3/a3B1TsxXmuGZN2CIHCD HFz5rq+iaWrF8C7Ev6ZIDNQWpaHWbdEmdEQ9vBlT1Zn8T2NQjQ3x5lElx1gzg8xzw6FT KKdcGTKNZeLPgq8ahuddhddLit+4RauJLkNMXIq8ytlpr11dmFVPKStUvAsmLp+Yvn+M LHVg== X-Gm-Message-State: ALyK8tKfmVIQ8M0Ev4DGogvq8wJxfV38fX/zwE3DYwJrAa6v9PaaTTTa0mxEm+shOozlZw== X-Received: by 10.194.117.161 with SMTP id kf1mr10356940wjb.168.1464897862660; Thu, 02 Jun 2016 13:04:22 -0700 (PDT) Received: from a0999b0126e1.ant.amazon.com ([94.230.86.227]) by smtp.gmail.com with ESMTPSA id lf9sm2114488wjc.44.2016.06.02.13.04.21 (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 02 Jun 2016 13:04:22 -0700 (PDT) From: Michael Rolnik X-Google-Original-From: Michael Rolnik To: qemu-devel@nongnu.org Date: Thu, 2 Jun 2016 23:04:00 +0300 Message-Id: <1464897846-97364-4-git-send-email-rolnik@amazon.com> X-Mailer: git-send-email 2.4.9 (Apple Git-60) In-Reply-To: <1464897846-97364-1-git-send-email-rolnik@amazon.com> References: <1464897846-97364-1-git-send-email-rolnik@amazon.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::244 Subject: [Qemu-devel] [PATCH 04/10] target-avr: adding instructions encodings X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Michael Rolnik , Michael Rolnik Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP Signed-off-by: Michael Rolnik --- target-avr/translate-inst.h | 838 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 838 insertions(+) create mode 100644 target-avr/translate-inst.h diff --git a/target-avr/translate-inst.h b/target-avr/translate-inst.h new file mode 100644 index 0000000..6bd180d --- /dev/null +++ b/target-avr/translate-inst.h @@ -0,0 +1,838 @@ + +#ifndef AVR_TRANSLATE_INST_H_ +#define AVR_TRANSLATE_INST_H_ + +typedef struct DisasContext DisasContext; + +int avr_translate_NOP(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); + +int avr_translate_MOVW(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t MOVW_Rr(uint32_t opcode) +{ + return extract32(opcode, 0, 4); +} +static inline uint32_t MOVW_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 4); +} + +int avr_translate_MULS(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t MULS_Rr(uint32_t opcode) +{ + return extract32(opcode, 0, 4); +} +static inline uint32_t MULS_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 4); +} + +int avr_translate_MULSU(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t MULSU_Rr(uint32_t opcode) +{ + return extract32(opcode, 0, 3); +} +static inline uint32_t MULSU_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 3); +} + +int avr_translate_FMUL(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t FMUL_Rr(uint32_t opcode) +{ + return extract32(opcode, 0, 3); +} +static inline uint32_t FMUL_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 3); +} + +int avr_translate_FMULS(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t FMULS_Rr(uint32_t opcode) +{ + return extract32(opcode, 0, 3); +} +static inline uint32_t FMULS_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 3); +} + +int avr_translate_FMULSU(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t FMULSU_Rr(uint32_t opcode) +{ + return extract32(opcode, 0, 3); +} +static inline uint32_t FMULSU_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 3); +} + +int avr_translate_CPC(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t CPC_lRr(uint32_t opcode) +{ + return extract32(opcode, 0, 4); +} +static inline uint32_t CPC_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} +static inline uint32_t CPC_hRr(uint32_t opcode) +{ + return extract32(opcode, 9, 1); +} + +int avr_translate_SBC(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t SBC_lRr(uint32_t opcode) +{ + return extract32(opcode, 0, 4); +} +static inline uint32_t SBC_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} +static inline uint32_t SBC_hRr(uint32_t opcode) +{ + return extract32(opcode, 9, 1); +} + +int avr_translate_ADD(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t ADD_lRr(uint32_t opcode) +{ + return extract32(opcode, 0, 4); +} +static inline uint32_t ADD_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} +static inline uint32_t ADD_hRr(uint32_t opcode) +{ + return extract32(opcode, 9, 1); +} + +int avr_translate_AND(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t AND_lRr(uint32_t opcode) +{ + return extract32(opcode, 0, 4); +} +static inline uint32_t AND_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} +static inline uint32_t AND_hRr(uint32_t opcode) +{ + return extract32(opcode, 9, 1); +} + +int avr_translate_EOR(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t EOR_lRr(uint32_t opcode) +{ + return extract32(opcode, 0, 4); +} +static inline uint32_t EOR_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} +static inline uint32_t EOR_hRr(uint32_t opcode) +{ + return extract32(opcode, 9, 1); +} + +int avr_translate_OR(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t OR_lRr(uint32_t opcode) +{ + return extract32(opcode, 0, 4); +} +static inline uint32_t OR_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} +static inline uint32_t OR_hRr(uint32_t opcode) +{ + return extract32(opcode, 9, 1); +} + +int avr_translate_MOV(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t MOV_lRr(uint32_t opcode) +{ + return extract32(opcode, 0, 4); +} +static inline uint32_t MOV_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} +static inline uint32_t MOV_hRr(uint32_t opcode) +{ + return extract32(opcode, 9, 1); +} + +int avr_translate_CPSE(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t CPSE_lRr(uint32_t opcode) +{ + return extract32(opcode, 0, 4); +} +static inline uint32_t CPSE_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} +static inline uint32_t CPSE_hRr(uint32_t opcode) +{ + return extract32(opcode, 9, 1); +} + +int avr_translate_CP(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t CP_lRr(uint32_t opcode) +{ + return extract32(opcode, 0, 4); +} +static inline uint32_t CP_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} +static inline uint32_t CP_hRr(uint32_t opcode) +{ + return extract32(opcode, 9, 1); +} + +int avr_translate_SUB(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t SUB_lRr(uint32_t opcode) +{ + return extract32(opcode, 0, 4); +} +static inline uint32_t SUB_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} +static inline uint32_t SUB_hRr(uint32_t opcode) +{ + return extract32(opcode, 9, 1); +} + +int avr_translate_ADC(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t ADC_lRr(uint32_t opcode) +{ + return extract32(opcode, 0, 4); +} +static inline uint32_t ADC_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} +static inline uint32_t ADC_hRr(uint32_t opcode) +{ + return extract32(opcode, 9, 1); +} + +int avr_translate_CPI(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t CPI_lImm(uint32_t opcode) +{ + return extract32(opcode, 0, 4); +} +static inline uint32_t CPI_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 4); +} +static inline uint32_t CPI_hImm(uint32_t opcode) +{ + return extract32(opcode, 8, 4); +} + +int avr_translate_SBCI(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t SBCI_lImm(uint32_t opcode) +{ + return extract32(opcode, 0, 4); +} +static inline uint32_t SBCI_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 4); +} +static inline uint32_t SBCI_hImm(uint32_t opcode) +{ + return extract32(opcode, 8, 4); +} + +int avr_translate_ORI(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t ORI_lImm(uint32_t opcode) +{ + return extract32(opcode, 0, 4); +} +static inline uint32_t ORI_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 4); +} +static inline uint32_t ORI_hImm(uint32_t opcode) +{ + return extract32(opcode, 8, 4); +} + +int avr_translate_SUBI(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t SUBI_lImm(uint32_t opcode) +{ + return extract32(opcode, 0, 4); +} +static inline uint32_t SUBI_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 4); +} +static inline uint32_t SUBI_hImm(uint32_t opcode) +{ + return extract32(opcode, 8, 4); +} + +int avr_translate_ANDI(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t ANDI_lImm(uint32_t opcode) +{ + return extract32(opcode, 0, 4); +} +static inline uint32_t ANDI_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 4); +} +static inline uint32_t ANDI_hImm(uint32_t opcode) +{ + return extract32(opcode, 8, 4); +} + +int avr_translate_LDDZ(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t LDDZ_lImm(uint32_t opcode) +{ + return extract32(opcode, 0, 3); +} +static inline uint32_t LDDZ_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} +static inline uint32_t LDDZ_mImm(uint32_t opcode) +{ + return extract32(opcode, 10, 2); +} +static inline uint32_t LDDZ_hImm(uint32_t opcode) +{ + return extract32(opcode, 13, 1); +} + +int avr_translate_LDDY(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t LDDY_lImm(uint32_t opcode) +{ + return extract32(opcode, 0, 3); +} +static inline uint32_t LDDY_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} +static inline uint32_t LDDY_mImm(uint32_t opcode) +{ + return extract32(opcode, 10, 2); +} +static inline uint32_t LDDY_hImm(uint32_t opcode) +{ + return extract32(opcode, 13, 1); +} + +int avr_translate_STDZ(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t STDZ_lImm(uint32_t opcode) +{ + return extract32(opcode, 0, 3); +} +static inline uint32_t STDZ_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} +static inline uint32_t STDZ_mImm(uint32_t opcode) +{ + return extract32(opcode, 10, 2); +} +static inline uint32_t STDZ_hImm(uint32_t opcode) +{ + return extract32(opcode, 13, 1); +} + +int avr_translate_STDY(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t STDY_lImm(uint32_t opcode) +{ + return extract32(opcode, 0, 3); +} +static inline uint32_t STDY_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} +static inline uint32_t STDY_mImm(uint32_t opcode) +{ + return extract32(opcode, 10, 2); +} +static inline uint32_t STDY_hImm(uint32_t opcode) +{ + return extract32(opcode, 13, 1); +} + +int avr_translate_LDS(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t LDS_Imm(uint32_t opcode) +{ + return extract32(opcode, 0, 16); +} +static inline uint32_t LDS_Rd(uint32_t opcode) +{ + return extract32(opcode, 20, 5); +} + +int avr_translate_LDZ2(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t LDZ2_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} + +int avr_translate_LDZ3(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t LDZ3_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} + +int avr_translate_LPM2(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t LPM2_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} + +int avr_translate_LPMX(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t LPMX_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} + +int avr_translate_ELPM2(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t ELPM2_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} + +int avr_translate_ELPMX(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t ELPMX_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} + +int avr_translate_LDY2(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t LDY2_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} + +int avr_translate_LDY3(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t LDY3_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} + +int avr_translate_LDX1(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t LDX1_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} + +int avr_translate_LDX2(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t LDX2_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} + +int avr_translate_LDX3(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t LDX3_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} + +int avr_translate_POP(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t POP_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} + +int avr_translate_STS(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t STS_Imm(uint32_t opcode) +{ + return extract32(opcode, 0, 16); +} +static inline uint32_t STS_Rd(uint32_t opcode) +{ + return extract32(opcode, 20, 5); +} + +int avr_translate_STZ2(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t STZ2_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} + +int avr_translate_STZ3(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t STZ3_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} + +int avr_translate_XCH(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t XCH_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} + +int avr_translate_LAS(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t LAS_Rr(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} + +int avr_translate_LAC(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t LAC_Rr(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} + +int avr_translate_LAT(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t LAT_Rr(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} + +int avr_translate_STY2(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t STY2_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} + +int avr_translate_STY3(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t STY3_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} + +int avr_translate_STX1(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t STX1_Rr(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} + +int avr_translate_STX2(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t STX2_Rr(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} + +int avr_translate_STX3(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t STX3_Rr(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} + +int avr_translate_PUSH(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t PUSH_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} + +int avr_translate_COM(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t COM_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} + +int avr_translate_NEG(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t NEG_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} + +int avr_translate_SWAP(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t SWAP_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} + +int avr_translate_INC(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t INC_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} + +int avr_translate_ASR(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t ASR_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} + +int avr_translate_LSR(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t LSR_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} + +int avr_translate_ROR(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t ROR_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} + +int avr_translate_BSET(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t BSET_Bit(uint32_t opcode) +{ + return extract32(opcode, 4, 3); +} + +int avr_translate_IJMP(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); + +int avr_translate_EIJMP(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); + +int avr_translate_BCLR(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t BCLR_Bit(uint32_t opcode) +{ + return extract32(opcode, 4, 3); +} + +int avr_translate_RET(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); + +int avr_translate_RETI(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); + +int avr_translate_ICALL(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); + +int avr_translate_EICALL(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); + +int avr_translate_SLEEP(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); + +int avr_translate_BREAK(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); + +int avr_translate_WDR(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); + +int avr_translate_LPM1(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); + +int avr_translate_ELPM1(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); + +int avr_translate_SPM(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); + +int avr_translate_SPMX(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); + +int avr_translate_DEC(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t DEC_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} + +int avr_translate_DES(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t DES_Imm(uint32_t opcode) +{ + return extract32(opcode, 4, 4); +} + +int avr_translate_JMP(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t JMP_lImm(uint32_t opcode) +{ + return extract32(opcode, 0, 17); +} +static inline uint32_t JMP_hImm(uint32_t opcode) +{ + return extract32(opcode, 20, 5); +} + +int avr_translate_CALL(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t CALL_lImm(uint32_t opcode) +{ + return extract32(opcode, 0, 17); +} +static inline uint32_t CALL_hImm(uint32_t opcode) +{ + return extract32(opcode, 20, 5); +} + +int avr_translate_ADIW(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t ADIW_lImm(uint32_t opcode) +{ + return extract32(opcode, 0, 4); +} +static inline uint32_t ADIW_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 2); +} +static inline uint32_t ADIW_hImm(uint32_t opcode) +{ + return extract32(opcode, 6, 2); +} + +int avr_translate_SBIW(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t SBIW_lImm(uint32_t opcode) +{ + return extract32(opcode, 0, 4); +} +static inline uint32_t SBIW_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 2); +} +static inline uint32_t SBIW_hImm(uint32_t opcode) +{ + return extract32(opcode, 6, 2); +} + +int avr_translate_CBI(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t CBI_Bit(uint32_t opcode) +{ + return extract32(opcode, 0, 3); +} +static inline uint32_t CBI_Imm(uint32_t opcode) +{ + return extract32(opcode, 3, 5); +} + +int avr_translate_SBIC(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t SBIC_Bit(uint32_t opcode) +{ + return extract32(opcode, 0, 3); +} +static inline uint32_t SBIC_Imm(uint32_t opcode) +{ + return extract32(opcode, 3, 5); +} + +int avr_translate_SBI(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t SBI_Bit(uint32_t opcode) +{ + return extract32(opcode, 0, 3); +} +static inline uint32_t SBI_Imm(uint32_t opcode) +{ + return extract32(opcode, 3, 5); +} + +int avr_translate_SBIS(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t SBIS_Bit(uint32_t opcode) +{ + return extract32(opcode, 0, 3); +} +static inline uint32_t SBIS_Imm(uint32_t opcode) +{ + return extract32(opcode, 3, 5); +} + +int avr_translate_MUL(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t MUL_lRr(uint32_t opcode) +{ + return extract32(opcode, 0, 4); +} +static inline uint32_t MUL_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} +static inline uint32_t MUL_hRr(uint32_t opcode) +{ + return extract32(opcode, 9, 1); +} + +int avr_translate_IN(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t IN_lImm(uint32_t opcode) +{ + return extract32(opcode, 0, 4); +} +static inline uint32_t IN_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} +static inline uint32_t IN_hImm(uint32_t opcode) +{ + return extract32(opcode, 9, 2); +} + +int avr_translate_OUT(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t OUT_lImm(uint32_t opcode) +{ + return extract32(opcode, 0, 4); +} +static inline uint32_t OUT_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} +static inline uint32_t OUT_hImm(uint32_t opcode) +{ + return extract32(opcode, 9, 2); +} + +int avr_translate_RJMP(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t RJMP_Imm(uint32_t opcode) +{ + return extract32(opcode, 0, 12); +} + +int avr_translate_LDI(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t LDI_lImm(uint32_t opcode) +{ + return extract32(opcode, 0, 4); +} +static inline uint32_t LDI_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 4); +} +static inline uint32_t LDI_hImm(uint32_t opcode) +{ + return extract32(opcode, 8, 4); +} + +int avr_translate_RCALL(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t RCALL_Imm(uint32_t opcode) +{ + return extract32(opcode, 0, 12); +} + +int avr_translate_BRBS(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t BRBS_Bit(uint32_t opcode) +{ + return extract32(opcode, 0, 3); +} +static inline uint32_t BRBS_Imm(uint32_t opcode) +{ + return extract32(opcode, 3, 7); +} + +int avr_translate_BRBC(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t BRBC_Bit(uint32_t opcode) +{ + return extract32(opcode, 0, 3); +} +static inline uint32_t BRBC_Imm(uint32_t opcode) +{ + return extract32(opcode, 3, 7); +} + +int avr_translate_BLD(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t BLD_Bit(uint32_t opcode) +{ + return extract32(opcode, 0, 3); +} +static inline uint32_t BLD_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} + +int avr_translate_BST(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t BST_Bit(uint32_t opcode) +{ + return extract32(opcode, 0, 3); +} +static inline uint32_t BST_Rd(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} + +int avr_translate_SBRC(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t SBRC_Bit(uint32_t opcode) +{ + return extract32(opcode, 0, 3); +} +static inline uint32_t SBRC_Rr(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} + +int avr_translate_SBRS(CPUAVRState *env, DisasContext* ctx, uint32_t opcode); +static inline uint32_t SBRS_Bit(uint32_t opcode) +{ + return extract32(opcode, 0, 3); +} +static inline uint32_t SBRS_Rr(uint32_t opcode) +{ + return extract32(opcode, 4, 5); +} + + +#endif