From patchwork Tue Dec 25 20:54:53 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 154476 Delivered-To: patch@linaro.org Received: by 2002:a2e:299d:0:0:0:0:0 with SMTP id p29-v6csp5210094ljp; Tue, 25 Dec 2018 12:59:50 -0800 (PST) X-Google-Smtp-Source: ALg8bN6qmBfFP2uviaFdqOv7o+YbVM8mOO3A+OqLx5xFMIZBR/mRqG5lluaSPkLjGUTSh9Z1jmuh X-Received: by 2002:ac8:f2a:: with SMTP id e39mr16757262qtk.262.1545771590574; Tue, 25 Dec 2018 12:59:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1545771590; cv=none; d=google.com; s=arc-20160816; b=YLMlOaPHoE6qG+pmRfryKbihO5PfU4UaXv3l2flbJVAZYP4CEUm72xSnpgCIX4EbSy bzWZhX6JBpvoYmlgAySkXYOOHTktcnIHhbT7uhMKtemeBtl+6AmvUH1doEXr2xpXM+XD elSyy+p8hXMc8gQqtgS56oel638KKfLqN4QjalChf5HyUANewZjxa4gaUDqYjRyNt6X+ dLCgy2QzK0RgieuXECV7QjZhpjQZKj4Hv/DriZo9Jvwt/ghRWmgNxKBhYufdd6Is4eO3 EU+s2n6efooiNgO1EpkQA2Mtb6Yule62vkzWjyhHjvrTtQQYroUS9BdLqKUhyz4B51ZJ 3kOw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=xvjYNjrAXb1VUm5vBsQXJZHB0AqWhlWCZKsQBjQvCtY=; b=PVFeGsSVYfkwclQtNlpE7/c4ER1E2RGbggj7E/A2YjLXNu5xfVUEP7xQIhu8boiKqQ tIoSfbI7SQFiBU2Y3wRb/qc94l3StLhOVtWrTvlR2Jaz2iCCc8WRLpWzb0dAzhmxoKLL kGrX7mGDWDi5OYGjOr0Q4mPb0y2u+9yhs4kILjGNS8Pzcm4WFopF5KVgAtAXUiFf9N72 Bujr7dRYaHIgSWJKklXqYmaWJoxabKNZoVFyZNTQQT+NrZHFPxPUYL3yWmy+N63Mn93T N22A20eTqvehZ0xYIldStPG5knaK94UkZH9/17e6gBTKMFEIrlbIxhwzTvLQC9r/3xOc hrZQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=aT+X0G3v; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [208.118.235.17]) by mx.google.com with ESMTPS id z64si437755qkd.17.2018.12.25.12.59.50 for (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 25 Dec 2018 12:59:50 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=aT+X0G3v; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([127.0.0.1]:43035 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gbtnp-0007ZB-S0 for patch@linaro.org; Tue, 25 Dec 2018 15:59:49 -0500 Received: from eggs.gnu.org ([208.118.235.92]:49606) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gbtkb-0004Cp-Dg for qemu-devel@nongnu.org; Tue, 25 Dec 2018 15:56:30 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gbtka-0006wa-GT for qemu-devel@nongnu.org; Tue, 25 Dec 2018 15:56:29 -0500 Received: from mail-pl1-x635.google.com ([2607:f8b0:4864:20::635]:42543) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gbtka-0006vf-AV for qemu-devel@nongnu.org; Tue, 25 Dec 2018 15:56:28 -0500 Received: by mail-pl1-x635.google.com with SMTP id y1so6795524plp.9 for ; Tue, 25 Dec 2018 12:56:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=xvjYNjrAXb1VUm5vBsQXJZHB0AqWhlWCZKsQBjQvCtY=; b=aT+X0G3v7Y9cfN5KEADdqjjndhuV3lJRJmhL5f27T46v5zr/A+fXeXy/8umRfvs9iO ZSvL2a0AwNRtGEHNhxZM5uojuUFeco3/jxhEMAKrgIwihoDZEU8JAPBWPNqNN4/wSUkT t062PDa5dCy951jIsTCNSdsTnAxgk5UVEIEAs= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=xvjYNjrAXb1VUm5vBsQXJZHB0AqWhlWCZKsQBjQvCtY=; b=jvkkeb+uhVnUJkhHQjfnJlrpWpvBSTwzkJ8AtnRydiWIpeb2lJ/AgHVv/7D1za77XF l65mvRD7WgF/mu1fWo/hH4juN7Rqst40znkxGicCvLwddNEvaMt93eEdxRfizubXQITQ ea2M/Dzh5ZLSKcF4jfTxfDgR6pYBfDFT6bwHYI4eGAGL9ERR4Dnt+y6/irGDRmsjvIgb rW6ArHVkxnhnz1ZqjYThWGXXTq2dIzB67zkITDgKE6VUIYmce5dUm1Vwbtvv/H8ql4O6 BrqTDkqs18+GFOQ/42RercPAvKc3NE2P/lxmR4ky7Y/nW0jLhzidQF5RVs4u4tehGeMn 3NjQ== X-Gm-Message-State: AJcUukeJIa2XqxyLVFNZhvNIUdd/JsgZoCM9cXXBZmbeSj2tjxDEFmjL SFJ2JxhG+WqTyh63PAiENSmhN86ZyV8= X-Received: by 2002:a17:902:8b88:: with SMTP id ay8mr17689245plb.55.1545771387051; Tue, 25 Dec 2018 12:56:27 -0800 (PST) Received: from cloudburst.home (c211-28-135-144.sunsh3.vic.optusnet.com.au. [211.28.135.144]) by smtp.gmail.com with ESMTPSA id t21sm48501628pgg.24.2018.12.25.12.56.20 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 25 Dec 2018 12:56:26 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Date: Wed, 26 Dec 2018 07:54:53 +1100 Message-Id: <20181225205529.10874-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.2 In-Reply-To: <20181225205529.10874-1-richard.henderson@linaro.org> References: <20181225205529.10874-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::635 Subject: [Qemu-devel] [PULL 06/42] tcg/riscv: Add the tcg target registers 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: peter.maydell@linaro.org, Michael Clark , Alistair Francis Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Alistair Francis Signed-off-by: Alistair Francis Signed-off-by: Michael Clark Reviewed-by: Richard Henderson Message-Id: <6e43abaa64361d57b9bc9439820d0e7701f2d47e.1545246859.git.alistair.francis@wdc.com> Signed-off-by: Richard Henderson --- tcg/riscv/tcg-target.inc.c | 118 +++++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 tcg/riscv/tcg-target.inc.c -- 2.17.2 diff --git a/tcg/riscv/tcg-target.inc.c b/tcg/riscv/tcg-target.inc.c new file mode 100644 index 0000000000..6c969e3973 --- /dev/null +++ b/tcg/riscv/tcg-target.inc.c @@ -0,0 +1,118 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2018 SiFive, Inc + * Copyright (c) 2008-2009 Arnaud Patard + * Copyright (c) 2009 Aurelien Jarno + * Copyright (c) 2008 Fabrice Bellard + * + * Based on i386/tcg-target.c and mips/tcg-target.c + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include "tcg-pool.inc.c" + +#ifdef CONFIG_DEBUG_TCG +static const char * const tcg_target_reg_names[TCG_TARGET_NB_REGS] = { + "zero", + "ra", + "sp", + "gp", + "tp", + "t0", + "t1", + "t2", + "s0", + "s1", + "a0", + "a1", + "a2", + "a3", + "a4", + "a5", + "a6", + "a7", + "s2", + "s3", + "s4", + "s5", + "s6", + "s7", + "s8", + "s9", + "s10", + "s11", + "t3", + "t4", + "t5", + "t6" +}; +#endif + +static const int tcg_target_reg_alloc_order[] = { + /* Call saved registers */ + /* TCG_REG_S0 reservered for TCG_AREG0 */ + TCG_REG_S1, + TCG_REG_S2, + TCG_REG_S3, + TCG_REG_S4, + TCG_REG_S5, + TCG_REG_S6, + TCG_REG_S7, + TCG_REG_S8, + TCG_REG_S9, + TCG_REG_S10, + TCG_REG_S11, + + /* Call clobbered registers */ + TCG_REG_T0, + TCG_REG_T1, + TCG_REG_T2, + TCG_REG_T3, + TCG_REG_T4, + TCG_REG_T5, + TCG_REG_T6, + + /* Argument registers */ + TCG_REG_A0, + TCG_REG_A1, + TCG_REG_A2, + TCG_REG_A3, + TCG_REG_A4, + TCG_REG_A5, + TCG_REG_A6, + TCG_REG_A7, +}; + +static const int tcg_target_call_iarg_regs[] = { + TCG_REG_A0, + TCG_REG_A1, + TCG_REG_A2, + TCG_REG_A3, + TCG_REG_A4, + TCG_REG_A5, + TCG_REG_A6, + TCG_REG_A7, +}; + +static const int tcg_target_call_oarg_regs[] = { + TCG_REG_A0, + TCG_REG_A1, +};