From patchwork Wed Feb 10 03:41:46 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 8268341 Return-Path: X-Original-To: patchwork-qemu-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 27FCF9F6DA for ; Wed, 10 Feb 2016 03:43:17 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 6FB6A20268 for ; Wed, 10 Feb 2016 03:43:16 +0000 (UTC) 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.kernel.org (Postfix) with ESMTPS id B131120263 for ; Wed, 10 Feb 2016 03:43:15 +0000 (UTC) Received: from localhost ([::1]:35138 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aTLgR-0007y8-2R for patchwork-qemu-devel@patchwork.kernel.org; Tue, 09 Feb 2016 22:43:15 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40809) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aTLgA-0007qA-KU for qemu-devel@nongnu.org; Tue, 09 Feb 2016 22:42:59 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aTLg9-0004MY-Ko for qemu-devel@nongnu.org; Tue, 09 Feb 2016 22:42:58 -0500 Received: from mail-qk0-x242.google.com ([2607:f8b0:400d:c09::242]:36656) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aTLg9-0004MT-F6 for qemu-devel@nongnu.org; Tue, 09 Feb 2016 22:42:57 -0500 Received: by mail-qk0-x242.google.com with SMTP id e124so251182qkc.3 for ; Tue, 09 Feb 2016 19:42:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=AtHtISItDRgl2kWSnPHxCgZKIQ5ypL3J7IYEsgcDpSw=; b=tN3hDh713gryqv0dPL4fgY6psMu/KwIW/N1PzG2cuqBid2BcIIAt4K/aeYhwu4W4xF T4+4Dop3qQ5uCGlgzoy8lGuKZ683XJmKzQEfVYC8IDy5XDl6hWmHjHE+7so/3uNt/X1F n0G3dJReA7Bpg6h76vvT5Bos1DqNXlCSf+JkM5TgQmoC1ju1G4LSDzl7ZFJL8fHLdQZO ZcVAwMahGdf/+2+MyhInDcW12yCqAFJkpUnn4zvLn701msNf7F/602YGPO3DaTWjg8bR cW8ksbBnHgUfehyiiRQkvDX697o+2tUaO/8K3m5idvWr1zrQF1BCHD37pv5l+qukadIA iNBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=AtHtISItDRgl2kWSnPHxCgZKIQ5ypL3J7IYEsgcDpSw=; b=elusJEzKHsQQxdTTINS9WeUfEl4dgieJjxCLbpa7O+A92mgDGy5AFAqJzCNuJdQ2Xl HYJJp9ngVhjv1FuUxb5ggrzbHpG6lDlzxXYkfQpyZCUB7JbpprvwwZDrRG9z+cv3J9f6 oYqkXKAAI0wCII6Ed5HeSMyFl89Cqo6fu7EIgxv74Irdjoma/oG2/pLXx2YoBVH4mojJ cxQ6E4AamwHqw8cRMYFTCs881BfqxhK/tRV5R1S+//pKeTAbPTpvjUYKLeQRCt81vIR9 P//L0ir2/sDQ6c7eTgGpRng+QOP4GloAoZhB+OXhKnyxSxWMqVomKfY7U+LFudzzFxlZ qgsg== X-Gm-Message-State: AG10YOSVKuflwdEZdNMkzJn/ibjOkkFCMCuh/ziQDX6N275AggSdixx5W4ShC4VqNq98Iw== X-Received: by 10.55.76.213 with SMTP id z204mr45368698qka.58.1455075777079; Tue, 09 Feb 2016 19:42:57 -0800 (PST) Received: from bigtime.com ([172.56.7.187]) by smtp.gmail.com with ESMTPSA id s90sm528171qgs.13.2016.02.09.19.42.53 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 09 Feb 2016 19:42:56 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Date: Wed, 10 Feb 2016 14:41:46 +1100 Message-Id: <1455075706-9786-5-git-send-email-rth@twiddle.net> X-Mailer: git-send-email 2.5.0 In-Reply-To: <1455075706-9786-1-git-send-email-rth@twiddle.net> References: <1455075706-9786-1-git-send-email-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400d:c09::242 Cc: mark.cave-ayland@ilande.co.uk, aurelien@aurel32.net Subject: [Qemu-devel] [PATCH v3 4/4] target-sparc: Use global registers for the register window X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org X-Spam-Status: No, score=-6.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI, T_DKIM_INVALID, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Via indirection off cpu_regwptr. Signed-off-by: Richard Henderson --- target-sparc/translate.c | 49 ++++++++++++++++++++++++++---------------------- 1 file changed, 27 insertions(+), 22 deletions(-) diff --git a/target-sparc/translate.c b/target-sparc/translate.c index 4be56dd..66008f7 100644 --- a/target-sparc/translate.c +++ b/target-sparc/translate.c @@ -43,7 +43,8 @@ static TCGv_ptr cpu_env, cpu_regwptr; static TCGv cpu_cc_src, cpu_cc_src2, cpu_cc_dst; static TCGv_i32 cpu_cc_op; static TCGv_i32 cpu_psr; -static TCGv cpu_fsr, cpu_pc, cpu_npc, cpu_gregs[8]; +static TCGv cpu_fsr, cpu_pc, cpu_npc; +static TCGv cpu_regs[32]; static TCGv cpu_y; #ifndef CONFIG_USER_ONLY static TCGv cpu_tbr; @@ -273,36 +274,31 @@ static inline void gen_address_mask(DisasContext *dc, TCGv addr) static inline TCGv gen_load_gpr(DisasContext *dc, int reg) { - if (reg == 0 || reg >= 8) { + if (reg > 0) { + assert(reg < 32); + return cpu_regs[reg]; + } else { TCGv t = get_temp_tl(dc); - if (reg == 0) { - tcg_gen_movi_tl(t, 0); - } else { - tcg_gen_ld_tl(t, cpu_regwptr, (reg - 8) * sizeof(target_ulong)); - } + tcg_gen_movi_tl(t, 0); return t; - } else { - return cpu_gregs[reg]; } } static inline void gen_store_gpr(DisasContext *dc, int reg, TCGv v) { if (reg > 0) { - if (reg < 8) { - tcg_gen_mov_tl(cpu_gregs[reg], v); - } else { - tcg_gen_st_tl(v, cpu_regwptr, (reg - 8) * sizeof(target_ulong)); - } + assert(reg < 32); + tcg_gen_mov_tl(cpu_regs[reg], v); } } static inline TCGv gen_dest_gpr(DisasContext *dc, int reg) { - if (reg == 0 || reg >= 8) { - return get_temp_tl(dc); + if (reg > 0) { + assert(reg < 32); + return cpu_regs[reg]; } else { - return cpu_gregs[reg]; + return get_temp_tl(dc); } } @@ -5330,8 +5326,11 @@ void gen_intermediate_code(CPUSPARCState * env, TranslationBlock * tb) void gen_intermediate_code_init(CPUSPARCState *env) { static int inited; - static const char gregnames[8][4] = { + static const char gregnames[32][4] = { "g0", "g1", "g2", "g3", "g4", "g5", "g6", "g7", + "o0", "o1", "o2", "o3", "o4", "o5", "o6", "o7", + "l0", "l1", "l2", "l3", "l4", "l5", "l6", "l7", + "i0", "i1", "i2", "i3", "i4", "i5", "i6", "i7", }; static const char fregnames[32][4] = { "f0", "f2", "f4", "f6", "f8", "f10", "f12", "f14", @@ -5401,11 +5400,17 @@ void gen_intermediate_code_init(CPUSPARCState *env) *rtl[i].ptr = tcg_global_mem_new(cpu_env, rtl[i].off, rtl[i].name); } - TCGV_UNUSED(cpu_gregs[0]); + TCGV_UNUSED(cpu_regs[0]); for (i = 1; i < 8; ++i) { - cpu_gregs[i] = tcg_global_mem_new(cpu_env, - offsetof(CPUSPARCState, gregs[i]), - gregnames[i]); + cpu_regs[i] = tcg_global_mem_new(cpu_env, + offsetof(CPUSPARCState, gregs[i]), + gregnames[i]); + } + + for (i = 8; i < 32; ++i) { + cpu_regs[i] = tcg_global_mem_new(cpu_regwptr, + (i - 8) * sizeof(target_ulong), + gregnames[i]); } for (i = 0; i < TARGET_DPREGS; i++) {