From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57825) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZmF1e-0001dt-9r for qemu-devel@nongnu.org; Wed, 14 Oct 2015 01:54:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZmF1c-0006PS-LS for qemu-devel@nongnu.org; Wed, 14 Oct 2015 01:54:58 -0400 Received: from mail-lb0-x233.google.com ([2a00:1450:4010:c04::233]:33852) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZmF1c-0006PN-EF for qemu-devel@nongnu.org; Wed, 14 Oct 2015 01:54:56 -0400 Received: by lbbck17 with SMTP id ck17so38742644lbb.1 for ; Tue, 13 Oct 2015 22:54:55 -0700 (PDT) From: Max Filippov Date: Wed, 14 Oct 2015 08:54:28 +0300 Message-Id: <1444802068-27573-3-git-send-email-jcmvbkbc@gmail.com> In-Reply-To: <1444802068-27573-1-git-send-email-jcmvbkbc@gmail.com> References: <1444802068-27573-1-git-send-email-jcmvbkbc@gmail.com> Subject: [Qemu-devel] [PATCH 2/2] target-xtensa: implement S32NB List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Max Filippov S32NB provides the same functionality as S32I with two exceptions. First, when its operation leaves the processor, the external transaction is marked Non-Bufferable. Second, it may not be used to write to Instruction RAM. In QEMU S32NB is equivalent to S32I. Signed-off-by: Max Filippov --- target-xtensa/translate.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/target-xtensa/translate.c b/target-xtensa/translate.c index cd2148e..9b6033d 100644 --- a/target-xtensa/translate.c +++ b/target-xtensa/translate.c @@ -1963,6 +1963,17 @@ static void disas_xtensa_insn(CPUXtensaState *env, DisasContext *dc) } break; + case 5: /*S32N*/ + if (gen_window_check2(dc, RRI4_S, RRI4_T)) { + TCGv_i32 addr = tcg_temp_new_i32(); + + tcg_gen_addi_i32(addr, cpu_R[RRI4_S], RRI4_IMM4 << 2); + gen_load_store_alignment(dc, 2, addr, false); + tcg_gen_qemu_st32(cpu_R[RRI4_T], addr, dc->cring); + tcg_temp_free(addr); + } + break; + default: RESERVED(); break; -- 1.8.1.4