From patchwork Sat Dec 8 00:46:20 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 10719039 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 40ACB13BF for ; Sat, 8 Dec 2018 00:47:55 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 301842B9A7 for ; Sat, 8 Dec 2018 00:47:55 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 247602F2DF; Sat, 8 Dec 2018 00:47:55 +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=-7.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI 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 9D1C22F2F6 for ; Sat, 8 Dec 2018 00:47:54 +0000 (UTC) Received: from localhost ([::1]:48511 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVQmf-0000lZ-Gt for patchwork-qemu-devel@patchwork.kernel.org; Fri, 07 Dec 2018 19:47:53 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39212) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVQlH-0007nj-HZ for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:46:31 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gVQlD-0000M1-JZ for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:46:27 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:19430) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gVQlD-0000Ll-AF; Fri, 07 Dec 2018 19:46:23 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1544229998; x=1575765998; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=mF4O0+bfADNh8fzyDt27zpjmLYs6qg05LJuV8MMK3Jo=; b=RtqZMLE6az9Wv+G3mmoeU2i9lufI8FgzzNNB+t9sWQv18IqhfoKA/wrL Jlgw3uqC0AZhsJv10bo7tVb0jioftGD1S3xx2/Svj5TntoOw3oHdDedRn ivd8Fh419fDR1OE/QYT9tdpiB+CyhOYpW4AX5I4yj6g2oh4Lx43gbstkj Hq5fxeYOtapWIVcvxffF4EgMZcl1HxlWG06mBMlyXQigLXsSZcWtEz5sM 0C498SjSd0EDkBK+YxO1C3JxFtGoCBMxlcnusebUOfiKTnsvjDoVLLOdW z+EVih/OfJCB6NfWSekfkMPACMVcL89/VKwklsQJWHIIqretO5GyTFLe3 A==; X-IronPort-AV: E=Sophos;i="5.56,328,1539619200"; d="scan'208";a="194003364" Received: from mail-sn1nam04lp2057.outbound.protection.outlook.com (HELO NAM04-SN1-obe.outbound.protection.outlook.com) ([104.47.44.57]) by ob1.hgst.iphmx.com with ESMTP; 08 Dec 2018 08:46:36 +0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector1-wdc-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pjqulYK6IymM7ZlRic1bd6OprINR9qsdhN20yySqNEE=; b=OleTcqM7RjJbo3IKQ3HTzd0ipwniRPMGsPXcLPlOcGFAQjta7QtUp2cblxvnVGl+ZnJ/A9WZ19MEu6lTuhFw7Yp7ayrtZ2Sa/t1ptT1zeposzo4cS1Ng+oAQF9i5q7AjjeM9gGVG5U8b/EnqFga5/NrMwVOoUlugPeve376IKRw= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB3725.namprd04.prod.outlook.com (10.172.169.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.18; Sat, 8 Dec 2018 00:46:20 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5%9]) with mapi id 15.20.1404.021; Sat, 8 Dec 2018 00:46:20 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [RFC v3 01/24] elf.h: Add the RISCV ELF magic numbers Thread-Index: AQHUjo9vHTU4/v9CL0a02CoiFIHEyg== Date: Sat, 8 Dec 2018 00:46:20 +0000 Message-ID: <2fa0bfa036354699eb80cb431fc04e44b699f476.1544229872.git.alistair.francis@wdc.com> References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.19.1 x-clientproxiedby: BYAPR01CA0022.prod.exchangelabs.com (2603:10b6:a02:80::35) To MWHPR04MB0401.namprd04.prod.outlook.com (2603:10b6:300:70::18) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Alistair.Francis@wdc.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [199.255.44.171] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; MWHPR04MB3725; 6:s/24jQQ4KXP9nd7OxYEQ1p1YOyel15Ty4d9BzWObYDHAxdyugyLmRDeO6Zqeh12MI1IoFtmh4JDaDnySP7Jmb2btX/SH1ewC65nXeSOWkoK9YZYg/T2SoP8SCMnag20fajNCBs7e3UogPCzZuEv13gE0mm2HU8RQbhJs8AKjmfSR9T3mFe4YDdZwPrHh8DIUs8StEYrQoxHb7Ig4FRmXJQGDzQarMcZl8led9naLsdPcWUNeDmF+i/oLttXp9qa1FDeNyPL/r3fe6quuEx3olc0ddy5g7Y1jriRw06ZNgmnP5YsJLSiR20YRePYc9ueyno4FStdtJZu9WFv7El9zaFHKVVu5QQOrzenZZSLv1JP0HmFa38byjhmldDYYoNIwgv21VLUFpGysMlzK531VfpdeqIQlTKHmCghjspNUlQER8qHowBmmVnTFRjLJw2RrYMD5qchxszwcb3KpYvEfdQ==; 5:WlIWJAuK4X6yFcEBg4tLrVYPF7VaGA7kUG1/j528+R0E3Is9bcubyrS7Gddz4q7Vd/MLIrmsd6riPaEJu3qKmPQufhy9TuQ6eTT+ClY4FwGHOsfUWHJyGkvGBPN5a7LWRPbWnb3pnPRUntEd9p2D/7SDe3o2u0gyjhQZRM8CRNw=; 7:HdteyUHmqpg4+dr0DnIj5DB05bH8lVtaWIoGVYKvjj36E9tlMJCndF8uSLCKg8X47MfInQSomhpvYQCoKDDSzrvVZD0bt5GHHU2N+czLqy4RWasc9m3629kZq+1WJLAXL0+Ue9arUymVhapSvvg19A== x-ms-office365-filtering-correlation-id: 47a91fef-b7ee-4c29-f29c-08d65ca691f4 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:MWHPR04MB3725; x-ms-traffictypediagnostic: MWHPR04MB3725: wdcipoutbound: EOP-TRUE x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(3002001)(93006095)(93001095)(3231455)(999002)(944501520)(52105112)(6055026)(148016)(149066)(150057)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123560045)(20161123558120)(20161123564045)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB3725; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB3725; x-forefront-prvs: 0880FB6EC1 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(376002)(366004)(346002)(136003)(39860400002)(396003)(189003)(199004)(68736007)(476003)(53936002)(71200400001)(8676002)(71190400001)(11346002)(44832011)(446003)(2616005)(106356001)(486006)(4326008)(66066001)(6512007)(39060400002)(5660300001)(86362001)(81156014)(118296001)(81166006)(575784001)(386003)(2906002)(8936002)(6506007)(14454004)(99286004)(3846002)(52116002)(478600001)(6116002)(25786009)(72206003)(305945005)(97736004)(6436002)(6486002)(76176011)(217873002)(26005)(7736002)(186003)(36756003)(110136005)(105586002)(2501003)(50226002)(102836004)(54906003)(316002)(256004); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB3725; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; x-microsoft-antispam-message-info: BcPYidjgWoLuGWiwu++Qn1lZIS1hymN+Dc09FoqEngwa/jpJfQHouiT7PAsFkZ0di2llGbP4lpFL9N23yMXlTXgvO7uWv3mFsdsR8SrnFzS9i3/KP0umvZOhcSR8UiIzsRHeTljU+eD7G1UrmDnVqz46/Hq9yaxpVLYPrloIq9TzR6/OdXKUqyFjJWnU646GXH5gD72VMRaxmQBs+7x+gCIoobPHc89zx6Ldi2L1wJwvOmmsxBaskCLaOwS3tHCC50v6Cq46yoi2tpxYQCIrMR2aYMCvCYRb5xnL2Egwd8CtXZmXuRNsZp4J5grOxTZhTt5FcBUpxnpA2nqpTayjxPmwrEcG7BME8o31ax98VGs= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: 47a91fef-b7ee-4c29-f29c-08d65ca691f4 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Dec 2018 00:46:20.4501 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB3725 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 68.232.143.124 Subject: [Qemu-devel] [RFC v3 01/24] elf.h: Add the RISCV ELF magic numbers 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: "alistair23@gmail.com" , "richard.henderson@linaro.org" , Alistair Francis 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: Alistair Francis Signed-off-by: Michael Clark Reviewed-by: Richard Henderson --- include/elf.h | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/include/elf.h b/include/elf.h index c151164b63..0ac7911b7b 100644 --- a/include/elf.h +++ b/include/elf.h @@ -1338,6 +1338,61 @@ typedef struct { #define R_IA64_DTPREL64LSB 0xb7 /* @dtprel(sym + add), data8 LSB */ #define R_IA64_LTOFF_DTPREL22 0xba /* @ltoff(@dtprel(s+a)), imm22 */ +/* RISC-V relocations. */ +#define R_RISCV_NONE 0 +#define R_RISCV_32 1 +#define R_RISCV_64 2 +#define R_RISCV_RELATIVE 3 +#define R_RISCV_COPY 4 +#define R_RISCV_JUMP_SLOT 5 +#define R_RISCV_TLS_DTPMOD32 6 +#define R_RISCV_TLS_DTPMOD64 7 +#define R_RISCV_TLS_DTPREL32 8 +#define R_RISCV_TLS_DTPREL64 9 +#define R_RISCV_TLS_TPREL32 10 +#define R_RISCV_TLS_TPREL64 11 +#define R_RISCV_BRANCH 16 +#define R_RISCV_JAL 17 +#define R_RISCV_CALL 18 +#define R_RISCV_CALL_PLT 19 +#define R_RISCV_GOT_HI20 20 +#define R_RISCV_TLS_GOT_HI20 21 +#define R_RISCV_TLS_GD_HI20 22 +#define R_RISCV_PCREL_HI20 23 +#define R_RISCV_PCREL_LO12_I 24 +#define R_RISCV_PCREL_LO12_S 25 +#define R_RISCV_HI20 26 +#define R_RISCV_LO12_I 27 +#define R_RISCV_LO12_S 28 +#define R_RISCV_TPREL_HI20 29 +#define R_RISCV_TPREL_LO12_I 30 +#define R_RISCV_TPREL_LO12_S 31 +#define R_RISCV_TPREL_ADD 32 +#define R_RISCV_ADD8 33 +#define R_RISCV_ADD16 34 +#define R_RISCV_ADD32 35 +#define R_RISCV_ADD64 36 +#define R_RISCV_SUB8 37 +#define R_RISCV_SUB16 38 +#define R_RISCV_SUB32 39 +#define R_RISCV_SUB64 40 +#define R_RISCV_GNU_VTINHERIT 41 +#define R_RISCV_GNU_VTENTRY 42 +#define R_RISCV_ALIGN 43 +#define R_RISCV_RVC_BRANCH 44 +#define R_RISCV_RVC_JUMP 45 +#define R_RISCV_RVC_LUI 46 +#define R_RISCV_GPREL_I 47 +#define R_RISCV_GPREL_S 48 +#define R_RISCV_TPREL_I 49 +#define R_RISCV_TPREL_S 50 +#define R_RISCV_RELAX 51 +#define R_RISCV_SUB6 52 +#define R_RISCV_SET6 53 +#define R_RISCV_SET8 54 +#define R_RISCV_SET16 55 +#define R_RISCV_SET32 56 + typedef struct elf32_rel { Elf32_Addr r_offset; Elf32_Word r_info; From patchwork Sat Dec 8 00:46:29 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 10719049 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 9861A13BF for ; Sat, 8 Dec 2018 00:51:12 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8805F2DE84 for ; Sat, 8 Dec 2018 00:51:12 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 7BCFE2DEC5; Sat, 8 Dec 2018 00:51:12 +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=-7.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI 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 DC0262DE84 for ; Sat, 8 Dec 2018 00:51:11 +0000 (UTC) Received: from localhost ([::1]:48529 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVQpr-0004ty-3N for patchwork-qemu-devel@patchwork.kernel.org; Fri, 07 Dec 2018 19:51:11 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39254) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVQlZ-0007vp-5I for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:46:49 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gVQlR-0000Pl-IJ for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:46:43 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:38100) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gVQlP-0000Ov-My; Fri, 07 Dec 2018 19:46:37 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1544230017; x=1575766017; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=KmIeavw+WzzhQnc7gykgb3xdcOCNu2+aNpQMFu8X2Zo=; b=cAzxQH+lhhCkCITPp+CUjG+ANX0q5W87gfpdINI+Wb8CZowdoqrlSh9Q VnfGOJgmIefo/DaxrHVWDxg6Tshh+6OCIMUHxug+fAc55ki18zB2kPFzC qZCkqxaQtY96E45D+fiT81nw3Ge86aI6g8aGmYAX1Hy/WOfl7ya98tTyt ZBXsNGXJtHdglyym/ihYr5CuyDzAVu19GauDjZqlBKrsI7gEa17qgenp0 QAHopXDzDD2YPYlp89wS4E7/n6ANxB4vPfeUZRSGKPUQasSu5jBwjk3H6 KUieMqiGwRcu/Dsw4cHzqWPYR127zwMYm9cdisnx0sZAypgBpfLIGRdRF w==; X-IronPort-AV: E=Sophos;i="5.56,328,1539619200"; d="scan'208";a="194003367" Received: from mail-sn1nam04lp2057.outbound.protection.outlook.com (HELO NAM04-SN1-obe.outbound.protection.outlook.com) ([104.47.44.57]) by ob1.hgst.iphmx.com with ESMTP; 08 Dec 2018 08:46:51 +0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector1-wdc-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=cS9GC/urPKyPsRwTfJuex0tnc9ZTAcu5Q/OUjpNXaFM=; b=Y/Iha35xmf6/y86pGRTcuzn4GnCKjqdbg2djcC2yskTDuY9FqQWkAD9w9c1AFnOqg4Pa9rAwUsEZpfVIk8HWuYnA5n3c2fBzgeTnVlcgAx1V2UBR5/fE1JhZ9bNOfYGPtxBWDYNbU/XgQ3VmCzMQx7JlqcGaBW6KqDW+bvUj7lE= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB3725.namprd04.prod.outlook.com (10.172.169.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.18; Sat, 8 Dec 2018 00:46:30 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5%9]) with mapi id 15.20.1404.021; Sat, 8 Dec 2018 00:46:30 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [RFC v3 02/24] linux-user: Add host dependency for RISC-V 32-bit Thread-Index: AQHUjo91WyTE70TEy0OqqcyGT3C5wg== Date: Sat, 8 Dec 2018 00:46:29 +0000 Message-ID: <9ae621e26a7a880b33c33cdaa0856a81b20cdc94.1544229872.git.alistair.francis@wdc.com> References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.19.1 x-clientproxiedby: BYAPR04CA0030.namprd04.prod.outlook.com (2603:10b6:a03:40::43) To MWHPR04MB0401.namprd04.prod.outlook.com (2603:10b6:300:70::18) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Alistair.Francis@wdc.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [199.255.44.250] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; MWHPR04MB3725; 6:RI/AceEiqz29sOGOW9QKJCI0fGu7uyEeC0U6BHxV7pgOaWd7KyCPqs7MY3QeY/B9WJDqXgkwnVePZG/OmJrHbK14APDE3EJ/6fm1VOF68HINfIRuPFGhdxzaN5wr4CSNxl11OxHZJ+P2nS73QcvwVEk8KT+Ks2C+eUU2qi+VncVfbeusejnJTsLFLMx6NGO2lh/t/ckHz7E07ISM1Nw9dKTQjCMBruArJ2ucYnLgPoCFUJ37D/awW/kL17a95M3WnbTxAWRkb2K9utZbrAOPMVRKnCDmR1vGaGihfHecp85gFvMh9MZ6g2odd0GPjH2ssfNc9hzsTPZd1SgepYG7CubF4KSqwWfzpBfT4xm++Owuw1Gc0fywyihmQ4yTf8b0vcXR5CwPjSMURzcdewFLAi9mtAM+F7ATAa7qJ9WKa9Du1ao0BZCZAgJ34sGIbNYX+XxKWN6h2klCeMDrsn+p7Q==; 5:LjjztTlKRwhZpoztSjbf8Z/eFvGDLpo0Xx5Njya6MrlCVLozRlTlR0wd2Q/xWZWCdHTFfaFTSUDhWiVwqGkoJlP5fXGrBJV0JvHI4mfXneIQUazU7dxJwCIadUOiQsxDwcf+wdFvIv7WEO9/wJYKTFbJbiF1Ksssj12KF0yonFk=; 7:alMRgV05hMfC5vpKhQzaoKzZhMxqX3FISRYcOvrkJ8VGmIc58vPHIjDJIq6aGsqNMEFyZ0iLI7iTOJOCwsY1m2H8HddaeayEdMPygmwQXlB8V8H6PXmwDjqOj9Y+o46wtBC86SHNyMBQkA0YwcNshw== x-ms-office365-filtering-correlation-id: ac99fdd4-f81f-4706-1689-08d65ca6979e x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:MWHPR04MB3725; x-ms-traffictypediagnostic: MWHPR04MB3725: wdcipoutbound: EOP-TRUE x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(3002001)(93006095)(93001095)(3231455)(999002)(944501520)(52105112)(6055026)(148016)(149066)(150057)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123560045)(20161123558120)(20161123564045)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB3725; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB3725; x-forefront-prvs: 0880FB6EC1 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(376002)(366004)(346002)(136003)(39860400002)(396003)(189003)(199004)(68736007)(476003)(53936002)(71200400001)(8676002)(71190400001)(11346002)(44832011)(446003)(2616005)(106356001)(486006)(4326008)(66066001)(6512007)(39060400002)(5660300001)(86362001)(81156014)(118296001)(81166006)(386003)(2906002)(8936002)(6506007)(14454004)(99286004)(3846002)(52116002)(478600001)(6116002)(25786009)(72206003)(305945005)(97736004)(6436002)(6486002)(76176011)(26005)(7736002)(186003)(36756003)(110136005)(105586002)(2501003)(50226002)(102836004)(54906003)(316002)(256004); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB3725; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; x-microsoft-antispam-message-info: 2VYhpQ/WZSg6rOGsytqTO+7flJcjNSXqYi3xmKNZ/UT8vt0FhaoylmDWAFxAC7An7qEg5OLvkOwD7xPavoHdHkpNcopwzULn4yU9+OaGCfzFuep3xZ9uNYt7DGTMDQtb60dzFDbCi0s+WSVQBPUrSfwaw2XKpKJ4xkprqYY9RtRStwajyxR6plEsd3/FqKegRRzgXJYOYPpE1+rugrfoqG3LMvF+2viCbb54q2OJ3jAnsBZ9PfvEMBniSEG/mDsjpsMHu0BIEAGPjWK8k7PjUxjCRweqUkjmllaWZKitLBtEzHGzl2KX8dJU7Px+K6W2jVoCfxViKVKjz7fy2YG+uVYDmwI/tjWSc4u41ceA9Z0= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: ac99fdd4-f81f-4706-1689-08d65ca6979e X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Dec 2018 00:46:29.9932 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB3725 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 68.232.143.124 Subject: [Qemu-devel] [RFC v3 02/24] linux-user: Add host dependency for RISC-V 32-bit 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: "alistair23@gmail.com" , "richard.henderson@linaro.org" , Alistair Francis 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: Alistair Francis Signed-off-by: Michael Clark Reviewed-by: Richard Henderson --- MAINTAINERS | 1 + linux-user/host/riscv32/hostdep.h | 11 +++++++++++ 2 files changed, 12 insertions(+) create mode 100644 linux-user/host/riscv32/hostdep.h diff --git a/MAINTAINERS b/MAINTAINERS index 63effdc473..97071bcdf4 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -262,6 +262,7 @@ S: Maintained F: target/riscv/ F: hw/riscv/ F: include/hw/riscv/ +F: linux-user/host/riscv32/ F: disas/riscv.c S390 diff --git a/linux-user/host/riscv32/hostdep.h b/linux-user/host/riscv32/hostdep.h new file mode 100644 index 0000000000..adf9edbf2d --- /dev/null +++ b/linux-user/host/riscv32/hostdep.h @@ -0,0 +1,11 @@ +/* + * hostdep.h : things which are dependent on the host architecture + * + * This work is licensed under the terms of the GNU GPL, version 2 or later. + * See the COPYING file in the top-level directory. + */ + +#ifndef RISCV32_HOSTDEP_H +#define RISCV32_HOSTDEP_H + +#endif From patchwork Sat Dec 8 00:46:39 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 10719043 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 7812513BF for ; Sat, 8 Dec 2018 00:48:26 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 63F122B9A7 for ; Sat, 8 Dec 2018 00:48:26 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 5301F2F2E0; Sat, 8 Dec 2018 00:48:26 +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=-7.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI 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 BDD532B9A7 for ; Sat, 8 Dec 2018 00:48:25 +0000 (UTC) Received: from localhost ([::1]:48507 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVQnA-00083F-Ff for patchwork-qemu-devel@patchwork.kernel.org; Fri, 07 Dec 2018 19:48:24 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39271) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVQld-00080j-D1 for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:46:53 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gVQlZ-0000Qx-A3 for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:46:49 -0500 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:8100) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gVQlX-0000QO-Na; Fri, 07 Dec 2018 19:46:45 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1544230004; x=1575766004; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=iAGxPDcOadpSCu8DO/V1CniFAICyX9XS5FFyAxyMm+U=; b=RUATUNHplKrsPQWj5STM9uAPg2yqb7FO+wBJyEpBxRJNcrZ6oIaUnPKP cJKPa5rPpwwz2glG7fInGW6nG4vaXvG5GR6Kg4a2TIX55fUwjZAuYahNN 3pgoWc7hCUj5cWuRAEtSekGFwlbuJu0/IJnwHP0MZevuK/93xyZFp3zRG a54FyCRwNHXyBOKQvFv8Cvjv+IipZF1MR6jlfNTLPpXDwuhY9AxgKgU/D rBc6BDIB3hp+G9TXntPyWmP5dnVNlZxu8WKWVUGq5rIzkK+UM9Cdz68qC SgpZctI4l65kr0/bpgb2+l6INhPqfZyi4csCRqvz/gRTXfUx50YLIDZrj Q==; X-IronPort-AV: E=Sophos;i="5.56,328,1539619200"; d="scan'208";a="101011981" Received: from mail-by2nam03lp2058.outbound.protection.outlook.com (HELO NAM03-BY2-obe.outbound.protection.outlook.com) ([104.47.42.58]) by ob1.hgst.iphmx.com with ESMTP; 08 Dec 2018 08:46:41 +0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector1-wdc-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=un3jzbQjiTiysTp1gsp/mpaRufVmQ0D+2qgz7uF6aRQ=; b=eOQ7t9ck5Dd6TOAzHX5jEab3lDuLRUhBD7g1BQJ2R6+GeuTddS77Icc+qX7ujvzuf/Hnn85POxPZyG1g5N8CYzH04xlSqGOPTamZvQ8UBGI8hHTLIv7aX+OpQsfnNa2ac65UKtn1IDA6fR8fWWYlsPsSJzmf3CL2U86hv5F+lGQ= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB3725.namprd04.prod.outlook.com (10.172.169.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.18; Sat, 8 Dec 2018 00:46:39 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5%9]) with mapi id 15.20.1404.021; Sat, 8 Dec 2018 00:46:39 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [RFC v3 03/24] linux-user: Add host dependency for RISC-V 64-bit Thread-Index: AQHUjo96t4vdZwfie02g8UNnKp0z0w== Date: Sat, 8 Dec 2018 00:46:39 +0000 Message-ID: <6e77872f033be3d16c60161a260c75bb8b0368df.1544229872.git.alistair.francis@wdc.com> References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.19.1 x-clientproxiedby: BYAPR04CA0016.namprd04.prod.outlook.com (2603:10b6:a03:40::29) To MWHPR04MB0401.namprd04.prod.outlook.com (2603:10b6:300:70::18) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Alistair.Francis@wdc.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [199.255.44.250] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; MWHPR04MB3725; 6:6XR/O0YlTh2vr5ghu5zRdKG2IJeLqJ6ZNxCMx7924y+OD2UQCLy3NuqWgc8cb6xlOX+D8HNcmUXi4BKIreds0CGDAb5JKi8t4gt7M2uP2wj8B2mUqzC2oeS7Vs3VcNlihhQhz7wm/yDsvPBN1Wdzd2TiRa2xBJapLHR+tdbII9D0vjMexVdR6W4cHiiizH4gmHIuN9uaZHrSW/RAlZaS4nZcqH+JHOR0amYUijnINH0tibtmIAn009YFfxW7A+0B2aYK0aNifB7z3kPzd9SHh/o7KH7H70gi3nU7Fc88cQGRzE1gL8x5/HKf1nqf6pCCWJKe0yWW9MXts0y+vcHgTlIwDbSlorFm3/Sj0ALyVAU6H6zh6MnDaIHdb4ltvB83RBj2A5/R+aoHACIB2A1ay4/3iI/v+7MPC+aQCQd7bx/sdLvFNlM94Rfw+sWjjG369YZKyBDxaMTnbJ1Ip7df6g==; 5:9pay3atj1iV4UeLAyxJGz/s1s+H+MJPzh31Zo+TKgr5wJK2SKiwt7Wyj6MfEx3bG7LVJvi3gTSzWsp97mHXn2g/rC7k40vleQyGCiE+XhKoEE4s3LrvvguGDb1Z44hJm9MNMeNOF5MXWcH1gx0zRJdVXASOnGwqujZ/u0HOBTws=; 7:Ch/XxBQNex7SvuJ59ztoDA2LR7hP1i/1Jm/cfW1WMo52j+FcEEV8Z/vLBuVC8FCG8fjq3M0HwdGxsbseEUtIdxI66jziKZ1trWE+9t+cF4PB1jVc6Ao8npx5ggKILrczE1QE65Brhivfl0P6rRaKlg== x-ms-office365-filtering-correlation-id: d2309601-cbef-4162-0b72-08d65ca69d2c x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:MWHPR04MB3725; x-ms-traffictypediagnostic: MWHPR04MB3725: wdcipoutbound: EOP-TRUE x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(3002001)(93006095)(93001095)(3231455)(999002)(944501520)(52105112)(6055026)(148016)(149066)(150057)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123560045)(20161123558120)(20161123564045)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB3725; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB3725; x-forefront-prvs: 0880FB6EC1 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(376002)(366004)(346002)(136003)(39860400002)(396003)(189003)(199004)(68736007)(476003)(53936002)(71200400001)(8676002)(71190400001)(11346002)(44832011)(446003)(2616005)(106356001)(486006)(4326008)(66066001)(6512007)(39060400002)(5660300001)(86362001)(81156014)(118296001)(81166006)(386003)(2906002)(8936002)(6506007)(14454004)(99286004)(3846002)(52116002)(478600001)(6116002)(25786009)(72206003)(305945005)(97736004)(6436002)(6486002)(76176011)(26005)(7736002)(186003)(36756003)(110136005)(105586002)(2501003)(50226002)(102836004)(54906003)(316002)(256004); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB3725; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; x-microsoft-antispam-message-info: TYM0aZOAmTXPmJCsfVFMnR1lSaF79THdbyTLh7TRpZ7hcT1jPJQn6VDP4uZ08cKCDc9/hLWwXR6nf99ZGLJZZJvoMMwA4u/NIy3uLMh3vSTadNeMyGCpL5cDhSmZRirLY/fWbTAkwk32tgYu29efC3UT74n0Ac10X46whZzqgEiDDglIu32uP5r3MQxVPGwzMRJaGpjbYeFaO7uQk/3EllNHl78+Ghg8HPkSmVgg2NGW2kQErVW+Z3pnZEiit1LYlGbWwSMZ0J8BQt1nYNRSdYeFA0AI/jOVN5tg1oTtujStBesorbXogVtboV7FPfYBWjI7zsopjMDJVUUT0wj0wbBhnH2DkWkhiRZu0TFcqFs= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: d2309601-cbef-4162-0b72-08d65ca69d2c X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Dec 2018 00:46:39.3642 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB3725 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.141 Subject: [Qemu-devel] [RFC v3 03/24] linux-user: Add host dependency for RISC-V 64-bit 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: "alistair23@gmail.com" , "richard.henderson@linaro.org" , Alistair Francis 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: Alistair Francis Signed-off-by: Michael Clark Reviewed-by: Richard Henderson --- MAINTAINERS | 1 + linux-user/host/riscv64/hostdep.h | 11 +++++++++++ 2 files changed, 12 insertions(+) create mode 100644 linux-user/host/riscv64/hostdep.h diff --git a/MAINTAINERS b/MAINTAINERS index 97071bcdf4..ddfeb32c6c 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -263,6 +263,7 @@ F: target/riscv/ F: hw/riscv/ F: include/hw/riscv/ F: linux-user/host/riscv32/ +F: linux-user/host/riscv64/ F: disas/riscv.c S390 diff --git a/linux-user/host/riscv64/hostdep.h b/linux-user/host/riscv64/hostdep.h new file mode 100644 index 0000000000..28467ba00b --- /dev/null +++ b/linux-user/host/riscv64/hostdep.h @@ -0,0 +1,11 @@ +/* + * hostdep.h : things which are dependent on the host architecture + * + * This work is licensed under the terms of the GNU GPL, version 2 or later. + * See the COPYING file in the top-level directory. + */ + +#ifndef RISCV64_HOSTDEP_H +#define RISCV64_HOSTDEP_H + +#endif From patchwork Sat Dec 8 00:46:48 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 10719051 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 2A82A13BF for ; Sat, 8 Dec 2018 00:51:40 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 162F62DE84 for ; Sat, 8 Dec 2018 00:51:40 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 072E52DEC5; Sat, 8 Dec 2018 00:51:40 +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=-7.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI 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 7E7522DE84 for ; Sat, 8 Dec 2018 00:51:39 +0000 (UTC) Received: from localhost ([::1]:48530 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVQqI-0005Fq-K9 for patchwork-qemu-devel@patchwork.kernel.org; Fri, 07 Dec 2018 19:51:38 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39336) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVQlk-00083q-Fu for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:46:57 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gVQlg-0000ST-BT for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:46:56 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:52330) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gVQlf-0000SA-Un; Fri, 07 Dec 2018 19:46:52 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1544230042; x=1575766042; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=1RjzxF97cDsEp37fTbbwJp9udj5jY4kU2rhMjmwVitE=; b=Y3fCoTkKCB3w0S+nHulWuga9wrkjc4aEwNtRXESlYV/Ia9Q+o0xPr6f5 g+kg6wDEYPSiZhV7qRRIqe0o1t3Hy0qbjbU9nsRs9KQ9Q7qlW3HAT1qSD 1bhkxJRkgrr0tlBAQtfxEyandDcZWQejI7KM05AZN9GRbU++CW6AJLg3k tnjlaIejI7fijx3i1oSE9QHpmZ+0FWlZa7tGuXFuc7AzGvNoSqB94Uy+O FscqtZ2Yo/wOc6RtSa+aTko1AgEdUTOwkdGJnifhO9pN5iKb2uagF2lK9 8bC1EElaRUS8vyuUyyxsEdKy61+jpIxaaaxhZRie6wKcAOrFFFWxox0hi A==; X-IronPort-AV: E=Sophos;i="5.56,328,1539619200"; d="scan'208";a="194003372" Received: from mail-sn1nam04lp2058.outbound.protection.outlook.com (HELO NAM04-SN1-obe.outbound.protection.outlook.com) ([104.47.44.58]) by ob1.hgst.iphmx.com with ESMTP; 08 Dec 2018 08:47:19 +0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector1-wdc-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=U/Ndbc10nesm/978dwPlqLYKfhJt4oYeYpZyLnLhQFg=; b=WWPj2YLr7PskaV+2kfvMiB0IAp4LLwCPh/zPswY57qHZjpc66nz4yZDd/5yJbzMsBpzttLvfY2vNxINepJkJ1zJICUd/+4aU3rMwdHnEsCAD7cOpsyUIWiJQBqGcXmIY59MkGhslAibj7ztIR/EFg9f5smZcb71CXoqYHLwHWb8= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB3725.namprd04.prod.outlook.com (10.172.169.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.18; Sat, 8 Dec 2018 00:46:48 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5%9]) with mapi id 15.20.1404.021; Sat, 8 Dec 2018 00:46:48 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [RFC v3 04/24] linux-user: riscv: Fix compile failure on riscv32 hosts Thread-Index: AQHUjo+A80rYmJ7j9UGr21E19fkF0Q== Date: Sat, 8 Dec 2018 00:46:48 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.19.1 x-clientproxiedby: BYAPR04CA0034.namprd04.prod.outlook.com (2603:10b6:a03:40::47) To MWHPR04MB0401.namprd04.prod.outlook.com (2603:10b6:300:70::18) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Alistair.Francis@wdc.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [199.255.44.250] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; MWHPR04MB3725; 6:gVWeedgCW8xVM9s2wsgk1RIpklD3h5L8G1XrDYS7NZawUDEyrhhUemaGNPF5dJQqLeRNWDEk9Dm2FjfN1K3i9dXEz7VvLAZ5YdXVK38WD+LIS/Tnb+POXXfJzoGDrOVo1fUUu+SKay54EVyVTU+PWYB0zmBmJX/DTaoSaGttxTbXXk2NAb7iVUtVyqkXk3UkRVph1FF3q0br8GCzWyIDsRhV1GagSn0AcqgNkHLiEU00MwsIzPeiC0x3ymGZOmceV4in6BQkFD6RICXylwOvQA0XpILyl6wiw7yJ+ocB+epFPIqDTsN8U9MJ6LyAlIYld24N/ln0NP9OyF8+Bxx6duXDre9dBBvakLxgmCz7d3lJMxKuAYBcihoSPMN/8AvP0/LV5LDzuPIGIL6inOc2EN93lIA7G4jcjVBKnwduz95dE21XUNxF5Jcl+uF3IIMjinGZ46B+dKj4jodrAVS1FQ==; 5:JXlEHcH9APgtOwWZA/FBzKmoVvkLcsWrvTnXTUfn6AUHjoSQTv1YKqWC91fiitFH8GVR63zYCPezDjDoqQtTwsZr3FANVe5kZjU/YaaG4THfyDRsuMqF8FQngTPlUCVU7k6FxOPqejNNlSPKI+V+E3FdnRsvwkcSTrOSO+4RQU8=; 7:WPfs9eCSWFg2x95so+rwI6YEINnoOeruTRUxVcfs7smUHGmQ1tLwiQz+uXQEdOux/5zOFRI4CSmm6wlY1d5xyFbGUrum6IEglJQlvMarL8/ZsyVgroMfphMkhU+KtXZrg8MCg2sy6iRHfrai/QxE9Q== x-ms-office365-filtering-correlation-id: 999ed22f-4b5a-4b40-a31c-08d65ca6a2c1 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:MWHPR04MB3725; x-ms-traffictypediagnostic: MWHPR04MB3725: wdcipoutbound: EOP-TRUE x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(3002001)(93006095)(93001095)(3231455)(999002)(944501520)(52105112)(6055026)(148016)(149066)(150057)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123560045)(20161123558120)(20161123564045)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB3725; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB3725; x-forefront-prvs: 0880FB6EC1 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(376002)(366004)(346002)(136003)(39860400002)(396003)(189003)(199004)(68736007)(476003)(53936002)(71200400001)(8676002)(71190400001)(11346002)(44832011)(446003)(2616005)(106356001)(486006)(4326008)(66066001)(6512007)(39060400002)(5660300001)(86362001)(81156014)(118296001)(81166006)(386003)(2906002)(8936002)(6506007)(14454004)(99286004)(3846002)(52116002)(478600001)(6116002)(25786009)(72206003)(305945005)(97736004)(6436002)(6486002)(76176011)(26005)(7736002)(186003)(36756003)(110136005)(105586002)(2501003)(50226002)(102836004)(54906003)(316002)(256004); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB3725; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; x-microsoft-antispam-message-info: 3Tiq/AbrUoLQDgthSd9UVXyggpy2xNPif6BDvJH0negaDeZRWSAu3w4BRmG+iej0kfNX+8scNOtEkrWa8D2H3VU6IelwhAZzRv4hCv3nHnY/31d0CjtJ2eeQ9G7jth0Zco11GNn5UXG0s+lIOP4sOeycM1kht6FJDY/ApRJJXNnOAiAhyjCaTgyx/BxR7xcbVxuO8Pf3nYBE0XT51A8TeGcCOs/MB3EN1rxGwKFUiJWOS7g4nZrNj0LJQ1txgLOJyc33VlS31nJleONLlSsyDWOQpaMzjClgaeA5577rUf9WFwZIvrrcXm4W9kDrjWZ2mdfhvUmRQeLlrhh0y42T5HsKkjussITy42OSg1EGdNQ= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: 999ed22f-4b5a-4b40-a31c-08d65ca6a2c1 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Dec 2018 00:46:48.6781 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB3725 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 68.232.143.124 Subject: [Qemu-devel] [RFC v3 04/24] linux-user: riscv: Fix compile failure on riscv32 hosts 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: "alistair23@gmail.com" , "richard.henderson@linaro.org" , Alistair Francis Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP When cross compilling for riscv32 hosts using GCC 8.2 this error is seen: error: '__NR__llseek' undeclared (first use in this function); did you mean '_llseek'? To avoid the error let's ensure that __NR__llseek is defined. Signed-off-by: Alistair Francis --- linux-user/riscv/target_syscall.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/linux-user/riscv/target_syscall.h b/linux-user/riscv/target_syscall.h index ee81d8bc88..af73f71839 100644 --- a/linux-user/riscv/target_syscall.h +++ b/linux-user/riscv/target_syscall.h @@ -47,6 +47,11 @@ struct target_pt_regs { #endif #define UNAME_MINIMUM_RELEASE "4.15.0" +/* This is sometimes needed to compile riscv32 Linux user mode */ +#if !defined(__NR__llseek) && !defined(__NR_lseek) +#define __NR__llseek __NR3264_lseek +#endif + #define TARGET_MINSIGSTKSZ 2048 #define TARGET_MLOCKALL_MCL_CURRENT 1 #define TARGET_MLOCKALL_MCL_FUTURE 2 From patchwork Sat Dec 8 00:46:57 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 10719047 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id C864513BF for ; Sat, 8 Dec 2018 00:50:58 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id B75B02DE84 for ; Sat, 8 Dec 2018 00:50:58 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id A9B212DEC5; Sat, 8 Dec 2018 00:50:58 +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=-7.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI 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 277E42DE84 for ; Sat, 8 Dec 2018 00:50:58 +0000 (UTC) Received: from localhost ([::1]:48528 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVQpd-0004lE-9K for patchwork-qemu-devel@patchwork.kernel.org; Fri, 07 Dec 2018 19:50:57 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39394) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVQlt-0008BT-15 for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:47:05 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gVQlp-0000V2-4V for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:47:04 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:52345) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gVQlo-0000Us-Qa; Fri, 07 Dec 2018 19:47:01 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1544230055; x=1575766055; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=2S7rrauxjQHW78NG9LVvSqZTCkNXnKASIbbFBeT4g4o=; b=H59KDdt0JZqwQU/CrTGaHtfj76A6VvuKsZgqktm4aOgfZHpye+RCihvp 5jIOz01xdA4WjTQeHflLqD4VdEiUJzWo1zNRUU8B9LZDkWfke2GYSEGWt yPkN/nQq/DeMtTQdP0baQV3MYE4/kMD5t/Ulc8/hhR/DPmIXA5SCNWzWE yd4LDOsthFPfMT2NXmtMcIXGj09W514P0YPwZyuq2kj95gvdU+/pH7xmS WqFoCuT+n7fZ+3n0pKn4jeJIDLQ/CCL7H/MKnjXSJskF+TDOuayDB8oHl zxH2NhJKrArr7lMlk77gr4ZbV9hoaDIQvp8a3l3loTJHEjgxCEDXIFXFy g==; X-IronPort-AV: E=Sophos;i="5.56,328,1539619200"; d="scan'208";a="194003388" Received: from mail-sn1nam04lp2051.outbound.protection.outlook.com (HELO NAM04-SN1-obe.outbound.protection.outlook.com) ([104.47.44.51]) by ob1.hgst.iphmx.com with ESMTP; 08 Dec 2018 08:47:33 +0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector1-wdc-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2S7rrauxjQHW78NG9LVvSqZTCkNXnKASIbbFBeT4g4o=; b=kVW9OAXm20wNsjMOKkUq2JW4WpZoT7ewinnkEAGAezmP3zk5utzB3FhEIMTkqO3PYRJEFHNV3571BqV21E3ns+RQFQ2UUHONQpij9+MhmmCB35BHRk6LAkoRbqmd8etsgg51ZXXnDro8JJ3gGpzQRl4kWM5xx3N2plaeNp78iC8= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB3725.namprd04.prod.outlook.com (10.172.169.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.18; Sat, 8 Dec 2018 00:46:58 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5%9]) with mapi id 15.20.1404.021; Sat, 8 Dec 2018 00:46:58 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [RFC v3 05/24] exec: Add RISC-V GCC poison macro Thread-Index: AQHUjo+FG3HknWA4BUypeEvwL2ZiNg== Date: Sat, 8 Dec 2018 00:46:57 +0000 Message-ID: <75f471d6ea7b31650c252ba6ff05d92c2819d2b3.1544229872.git.alistair.francis@wdc.com> References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.19.1 x-clientproxiedby: BYAPR04CA0020.namprd04.prod.outlook.com (2603:10b6:a03:40::33) To MWHPR04MB0401.namprd04.prod.outlook.com (2603:10b6:300:70::18) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Alistair.Francis@wdc.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [199.255.44.250] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; MWHPR04MB3725; 6:dnFwRr40gumpzrhSlhdmLN9LM4i6FnFsFPPIc7PZwfwn1uj2ExAAquuSjXpt6wRh6easEiT9mH1dvVYY9h2kcJgfZSpRnX240sO2K0o4dftBHqdTBp75mkGM5Pk2uZmKybPp0wSQWpf5jQsV/12vhGwwQgQRlExsirD33+gFim8IqbcWFnw2lfBdR2xgy4LAyvv5IeSXEpwaZbUZQqbGRMCXuXGx6GXrc4L/ljd5Fzig/43PbD6e+8ItehD8hm3xR4IThw+np6xtYpc9CcQ1fJEi53zdc9q08EpNADN7fP5SWbg534kDI6XDinZryvZ7SjQLi1Po7Ff2ptB4S2x/pRRDkkS6MrsU3NIuxpdH/lYU159AzhnjvypZYAufD76GKwGmALrw21xD3CsmcfdI8IXvIwQqTx8YwTVybST+x8LeJx4pvoEGZfl22P+9nHgLlnkE8b3D9+iIxdjjiMj+ng==; 5:qC5CFvYd3LRPMYTheTo6/95uQIvOjtY1pQ/iOtBf34ativz09/ifvAu0q8RbfhWTfhsn++dHMfHrd9qosIGtxo5DuZToNQA+PN03WLg2wygizqk1K5Oc9lgQsmYba8YBSe9+pX0/xmNy4ziTRY9OUtv3R7J8smUhgZawc+aG0RY=; 7:v6s0XdwirF0oc3JcAV0j0pzhMmx2cQfRXsKjHr7j2TyBvpCNx+2dhSE1VVpLjEoDwKTAKHJfIevFFmUZ8udvbDBF7YsvOKatzkMEpKHtl/e/wKOgi9UiSQ7hiklNKGaCHcryoIKTKojiptzTBsRWjg== x-ms-office365-filtering-correlation-id: d9185051-c65d-4af9-a1bb-08d65ca6a835 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:MWHPR04MB3725; x-ms-traffictypediagnostic: MWHPR04MB3725: wdcipoutbound: EOP-TRUE x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(3002001)(93006095)(93001095)(3231455)(999002)(944501520)(52105112)(6055026)(148016)(149066)(150057)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123560045)(20161123558120)(20161123564045)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB3725; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB3725; x-forefront-prvs: 0880FB6EC1 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(376002)(366004)(346002)(136003)(39860400002)(396003)(189003)(199004)(68736007)(476003)(53936002)(71200400001)(8676002)(71190400001)(11346002)(44832011)(446003)(2616005)(106356001)(486006)(4326008)(66066001)(6512007)(39060400002)(5660300001)(86362001)(81156014)(118296001)(81166006)(386003)(2906002)(8936002)(6506007)(14454004)(99286004)(3846002)(52116002)(478600001)(6116002)(25786009)(72206003)(305945005)(97736004)(6436002)(6486002)(76176011)(26005)(7736002)(186003)(36756003)(110136005)(105586002)(2501003)(50226002)(102836004)(54906003)(316002)(256004); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB3725; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; x-microsoft-antispam-message-info: Fv65DlaTZVW6HMHwoTPQdfUy32WHvQ+FtUYLDbIHWTwUf4I69km3P1I59nwJoebapMygcIskgl4ZDL8hxcSU9CQdtB3QoXusGz2Ei/M464/zEycEGVEy6b0gHI+0eM+IuKxe44IcXYvqpuAfnw9T/1zbiVhSZGE3lzY322DLWYS/Kh+0/E8ytb5hNSlGU+T2vOiP/+OlJTkpKy2WE2DYlEPfg0pz2CAT13L98BY0vO4KNxZs1JBhqp+6NdZRaRVLboCo18ZO3fG8bjiib3DbMAVOqYZGmkWdscTLzRXx0bjs4kaGn0viC/WipcIA9hJsF5Uk7Ns/ndxxIv2aqNUKkIs/9ai2oAf6Bq3FWdZA6bA= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: d9185051-c65d-4af9-a1bb-08d65ca6a835 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Dec 2018 00:46:57.8569 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB3725 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 68.232.143.124 Subject: [Qemu-devel] [RFC v3 05/24] exec: Add RISC-V GCC poison macro 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: "alistair23@gmail.com" , "richard.henderson@linaro.org" , Alistair Francis 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: Alistair Francis Signed-off-by: Michael Clark Reviewed-by: Richard Henderson --- include/exec/poison.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/exec/poison.h b/include/exec/poison.h index 32d53789f8..ecdc83c147 100644 --- a/include/exec/poison.h +++ b/include/exec/poison.h @@ -79,6 +79,7 @@ #pragma GCC poison CONFIG_MOXIE_DIS #pragma GCC poison CONFIG_NIOS2_DIS #pragma GCC poison CONFIG_PPC_DIS +#pragma GCC poison CONFIG_RISCV_DIS #pragma GCC poison CONFIG_S390_DIS #pragma GCC poison CONFIG_SH4_DIS #pragma GCC poison CONFIG_SPARC_DIS From patchwork Sat Dec 8 00:47:06 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 10719045 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 75D3B1731 for ; Sat, 8 Dec 2018 00:48:57 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 63D9F2D669 for ; Sat, 8 Dec 2018 00:48:57 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 579152D69A; Sat, 8 Dec 2018 00:48:57 +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=-7.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI 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 A222D2D669 for ; Sat, 8 Dec 2018 00:48:56 +0000 (UTC) Received: from localhost ([::1]:48513 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVQnf-0003AK-Qq for patchwork-qemu-devel@patchwork.kernel.org; Fri, 07 Dec 2018 19:48:55 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39467) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVQm3-0008I2-Ok for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:47:18 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gVQly-0000X8-1i for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:47:15 -0500 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:8128) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gVQlx-0000WW-OR; Fri, 07 Dec 2018 19:47:09 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1544230030; x=1575766030; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=fGRmZbxCRt8GiN4bxv90yEfWvk7RN0Y/XVfmkkyMrCs=; b=NzfdZERYsVNWmZZNnDfvbaqsEgxBxORbppl9fDaz8y8LQZkENxX4COm3 ht8EYy9JpGpeVqfBKspSr33O/mokzYScKXeB7FgC3vZjVKcgV9Bt6Yfu/ dDtk2S/38dmkQ4Z+bOpBXdZ3t3Uh/tIvo0jeOYDq/4D9CFAVEyx68UDk/ 9Y9UGahElPU5EWQc7Ku0X47Ak2D4UgYlhPJPslTH4iaenbul/y9U+xgiK jAx1Elh3V45YOQLleKXsq1SGDtHzIgBr93C4CB98A6MWrr4myGFw0zZ9s EtnBwWc4FG9IIyKyhnNielbYlp/ElbR8RQnN0hL4pBSpUeHPlvkpTDs0A w==; X-IronPort-AV: E=Sophos;i="5.56,328,1539619200"; d="scan'208";a="101012018" Received: from mail-by2nam03lp2056.outbound.protection.outlook.com (HELO NAM03-BY2-obe.outbound.protection.outlook.com) ([104.47.42.56]) by ob1.hgst.iphmx.com with ESMTP; 08 Dec 2018 08:47:08 +0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector1-wdc-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=TvEpWKnf0KyR1eBhDDGD2pXIWcok1mpGk1RP5UIS3+s=; b=g6mkhlxVt+Q34f2HVCBg8BjdXyB0rRB17oVfBo4VUlnw9lD8FU9fPJqEGyPxMGQUsJQJ7zN8bhnGb2IWcjASkgYRVKAC6w4e0LGfeFrg3aUw+4EJtbAvlp0dq8megHCgW/tFxR5hQ3GeKkHXSci9OMSzMwyExmbxf7d5ovXfrpI= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB3725.namprd04.prod.outlook.com (10.172.169.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.18; Sat, 8 Dec 2018 00:47:07 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5%9]) with mapi id 15.20.1404.021; Sat, 8 Dec 2018 00:47:07 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [RFC v3 06/24] riscv: Add the tcg-target header file Thread-Index: AQHUjo+LE0kiNpAe6UOGYMz7METQrg== Date: Sat, 8 Dec 2018 00:47:06 +0000 Message-ID: <810cef5206da8c26708aed72c48da0659ffcb0fc.1544229872.git.alistair.francis@wdc.com> References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.19.1 x-clientproxiedby: BYAPR04CA0016.namprd04.prod.outlook.com (2603:10b6:a03:40::29) To MWHPR04MB0401.namprd04.prod.outlook.com (2603:10b6:300:70::18) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Alistair.Francis@wdc.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [199.255.44.250] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; MWHPR04MB3725; 6:1YMuk5RgB0/OPhEW2ynk7+42ynSNtOde+7t8m0XqFMbYH0cNPgGx6bndmcagIlDD56fiB7eWBqatpEyTfClVuouf+tQAc8eEx+FgqYcJrfRJ0F/GcL1x0pmNispEdYOAtx8SL1AfeLTcJALIF7DCRzUQYUV5XWNdpcqURm/h8Z16lzqXKSq1+hI9WB+iHHr3MtJwLg5AEJ5vdZGiHrqJWemniaeH2qIw+vnx13yPPdCfCqvgjXfSxOIGxDS2UbAYOY0IRCsTe0LrO2fIImTzLzMxZcgqaoyVzNj42NBkqPHmrDNkvCLDLjnkKb1pXwe5NOvsGgqC0gvco5ykY4BhAHuaQfde/6bOwns3krDd3iUAIN+1fypXAUrxBAX+2/sfg6xaQ4aAgkPWNdFQyAgp2rsdelTwoeWJmjKJO+LL3qOrAOZdL1Vxj/QTgmNsPxzXvpqa8Mzx24BbgsWDgGZ3TQ==; 5:xjc38ZibncLs240pZiuLhT4R2iEs89mKfD0only8RVSLx/XY2/3x9cBZyglQAORrpgIHxy+mhS/C4a43crw5DiGXjxmubXHOROWds7stVA5VsCBYiuD3tJlO14fa7DNfyfJWg5QBVrnK5sDNbFp1h2Yc2+WpQoBQacpwYYrkCKk=; 7:DadHRlBZWcRpg3YuOE4GNoUHggQgpbjlZNdcP9t7FUt3z39MFbPxtONXvJXgZR2CR96ZDFg2fx4BjtI/x962lXhCmOZHV0039YNlTwTJoIg1P/IbqrFjyOc1gvTLJdDoeAhtbV4YXNM0ISZnlQHIzw== x-ms-office365-filtering-correlation-id: ea5b078b-ba6a-4a94-8fc1-08d65ca6ad9d x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:MWHPR04MB3725; x-ms-traffictypediagnostic: MWHPR04MB3725: wdcipoutbound: EOP-TRUE x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(3002001)(93006095)(93001095)(3231455)(999002)(944501520)(52105112)(6055026)(148016)(149066)(150057)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123560045)(20161123558120)(20161123564045)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB3725; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB3725; x-forefront-prvs: 0880FB6EC1 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(376002)(366004)(346002)(136003)(39860400002)(396003)(189003)(199004)(68736007)(476003)(53936002)(71200400001)(8676002)(71190400001)(11346002)(44832011)(446003)(2616005)(106356001)(486006)(4326008)(66066001)(6512007)(39060400002)(5660300001)(86362001)(81156014)(118296001)(81166006)(386003)(2906002)(8936002)(6506007)(14454004)(99286004)(3846002)(52116002)(478600001)(6116002)(25786009)(72206003)(305945005)(97736004)(6436002)(6486002)(76176011)(14444005)(26005)(7736002)(186003)(36756003)(110136005)(105586002)(2501003)(50226002)(102836004)(54906003)(316002)(256004); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB3725; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; x-microsoft-antispam-message-info: IZVvZmNTpQM7sEzXMwXegn+EOtrxdom/cWPNtQLo2PEObTaYN4X4ufFlmpfRJcsVC01uKg30cLDXeEuE2Q5B2JouHUskWR5yIlGrWZfvEae5HSLlybxEBcRDQ1hitn5uSjpxPCIUY1JqUicuTyb/ouzmXJK4sbR1XteqQWQqneB+ADcGWtnhpDk8jRCRXrRivp2yPtn0Nw3WOR17Y+KG/igkH/vgwUemvg2ta5D9aghdPj6ErXjWm+2sEmAhyjgx12w1fEsmOMJngxI+zBSJ0CDEVQ1MKf+BSBRWqcSstQZi5BXL3OJBhpeLOmxsu67BA0HQPElskKpOrD0vnptak29fTuM8aS6LS6A3ujyAcVs= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: ea5b078b-ba6a-4a94-8fc1-08d65ca6ad9d X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Dec 2018 00:47:06.8966 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB3725 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.141 Subject: [Qemu-devel] [RFC v3 06/24] riscv: Add the tcg-target header file 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: "alistair23@gmail.com" , "richard.henderson@linaro.org" , Alistair Francis 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: Alistair Francis Signed-off-by: Michael Clark Reviewed-by: Richard Henderson --- MAINTAINERS | 1 + tcg/riscv/tcg-target.h | 175 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 176 insertions(+) create mode 100644 tcg/riscv/tcg-target.h diff --git a/MAINTAINERS b/MAINTAINERS index ddfeb32c6c..aa88ee176e 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -262,6 +262,7 @@ S: Maintained F: target/riscv/ F: hw/riscv/ F: include/hw/riscv/ +F: tcg/riscv/ F: linux-user/host/riscv32/ F: linux-user/host/riscv64/ F: disas/riscv.c diff --git a/tcg/riscv/tcg-target.h b/tcg/riscv/tcg-target.h new file mode 100644 index 0000000000..cb6720a031 --- /dev/null +++ b/tcg/riscv/tcg-target.h @@ -0,0 +1,175 @@ +/* + * Tiny Code Generator for QEMU + * + * Copyright (c) 2018 SiFive, Inc + * + * 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. + */ + +#ifndef RISCV_TCG_TARGET_H +#define RISCV_TCG_TARGET_H + +#if __riscv_xlen == 32 +# define TCG_TARGET_REG_BITS 32 +#elif __riscv_xlen == 64 +# define TCG_TARGET_REG_BITS 64 +#endif + +#define TCG_TARGET_INSN_UNIT_SIZE 4 +#define TCG_TARGET_TLB_DISPLACEMENT_BITS 20 +#define TCG_TARGET_NB_REGS 32 + +typedef enum { + TCG_REG_ZERO, + TCG_REG_RA, + TCG_REG_SP, + TCG_REG_GP, + TCG_REG_TP, + TCG_REG_T0, + TCG_REG_T1, + TCG_REG_T2, + TCG_REG_S0, + TCG_REG_S1, + TCG_REG_A0, + TCG_REG_A1, + TCG_REG_A2, + TCG_REG_A3, + TCG_REG_A4, + TCG_REG_A5, + TCG_REG_A6, + TCG_REG_A7, + 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, + TCG_REG_T3, + TCG_REG_T4, + TCG_REG_T5, + TCG_REG_T6, + + /* aliases */ + TCG_AREG0 = TCG_REG_S0, + TCG_GUEST_BASE_REG = TCG_REG_S1, + TCG_REG_TMP0 = TCG_REG_T6, + TCG_REG_TMP1 = TCG_REG_T5, + TCG_REG_TMP2 = TCG_REG_T4, +} TCGReg; + +/* used for function call generation */ +#define TCG_REG_CALL_STACK TCG_REG_SP +#define TCG_TARGET_STACK_ALIGN 16 +#define TCG_TARGET_CALL_ALIGN_ARGS 1 +#define TCG_TARGET_CALL_STACK_OFFSET 0 + +/* optional instructions */ +#define TCG_TARGET_HAS_goto_ptr 1 +#define TCG_TARGET_HAS_movcond_i32 0 +#define TCG_TARGET_HAS_div_i32 1 +#define TCG_TARGET_HAS_rem_i32 1 +#define TCG_TARGET_HAS_div2_i32 0 +#define TCG_TARGET_HAS_rot_i32 0 +#define TCG_TARGET_HAS_deposit_i32 0 +#define TCG_TARGET_HAS_extract_i32 0 +#define TCG_TARGET_HAS_sextract_i32 0 +#define TCG_TARGET_HAS_add2_i32 1 +#define TCG_TARGET_HAS_sub2_i32 1 +#define TCG_TARGET_HAS_mulu2_i32 0 +#define TCG_TARGET_HAS_muls2_i32 0 +#define TCG_TARGET_HAS_muluh_i32 (TCG_TARGET_REG_BITS == 32) +#define TCG_TARGET_HAS_mulsh_i32 (TCG_TARGET_REG_BITS == 32) +#define TCG_TARGET_HAS_ext8s_i32 1 +#define TCG_TARGET_HAS_ext16s_i32 1 +#define TCG_TARGET_HAS_ext8u_i32 1 +#define TCG_TARGET_HAS_ext16u_i32 1 +#define TCG_TARGET_HAS_bswap16_i32 0 +#define TCG_TARGET_HAS_bswap32_i32 0 +#define TCG_TARGET_HAS_not_i32 1 +#define TCG_TARGET_HAS_neg_i32 1 +#define TCG_TARGET_HAS_andc_i32 0 +#define TCG_TARGET_HAS_orc_i32 0 +#define TCG_TARGET_HAS_eqv_i32 0 +#define TCG_TARGET_HAS_nand_i32 0 +#define TCG_TARGET_HAS_nor_i32 0 +#define TCG_TARGET_HAS_clz_i32 0 +#define TCG_TARGET_HAS_ctz_i32 0 +#define TCG_TARGET_HAS_ctpop_i32 0 +#define TCG_TARGET_HAS_direct_jump 0 +#define TCG_TARGET_HAS_brcond2 1 +#define TCG_TARGET_HAS_setcond2 1 + +#if TCG_TARGET_REG_BITS == 64 +#define TCG_TARGET_HAS_movcond_i64 0 +#define TCG_TARGET_HAS_div_i64 1 +#define TCG_TARGET_HAS_rem_i64 1 +#define TCG_TARGET_HAS_div2_i64 0 +#define TCG_TARGET_HAS_rot_i64 0 +#define TCG_TARGET_HAS_deposit_i64 0 +#define TCG_TARGET_HAS_extract_i64 0 +#define TCG_TARGET_HAS_sextract_i64 0 +#define TCG_TARGET_HAS_extrl_i64_i32 1 +#define TCG_TARGET_HAS_extrh_i64_i32 1 +#define TCG_TARGET_HAS_ext8s_i64 1 +#define TCG_TARGET_HAS_ext16s_i64 1 +#define TCG_TARGET_HAS_ext32s_i64 1 +#define TCG_TARGET_HAS_ext8u_i64 1 +#define TCG_TARGET_HAS_ext16u_i64 1 +#define TCG_TARGET_HAS_ext32u_i64 1 +#define TCG_TARGET_HAS_bswap16_i64 0 +#define TCG_TARGET_HAS_bswap32_i64 0 +#define TCG_TARGET_HAS_bswap64_i64 0 +#define TCG_TARGET_HAS_not_i64 1 +#define TCG_TARGET_HAS_neg_i64 1 +#define TCG_TARGET_HAS_andc_i64 0 +#define TCG_TARGET_HAS_orc_i64 0 +#define TCG_TARGET_HAS_eqv_i64 0 +#define TCG_TARGET_HAS_nand_i64 0 +#define TCG_TARGET_HAS_nor_i64 0 +#define TCG_TARGET_HAS_clz_i64 0 +#define TCG_TARGET_HAS_ctz_i64 0 +#define TCG_TARGET_HAS_ctpop_i64 0 +#define TCG_TARGET_HAS_add2_i64 1 +#define TCG_TARGET_HAS_sub2_i64 1 +#define TCG_TARGET_HAS_mulu2_i64 0 +#define TCG_TARGET_HAS_muls2_i64 0 +#define TCG_TARGET_HAS_muluh_i64 1 +#define TCG_TARGET_HAS_mulsh_i64 1 +#endif + +static inline void flush_icache_range(uintptr_t start, uintptr_t stop) +{ + __builtin___clear_cache((char *)start, (char *)stop); +} + +/* not defined -- call should be eliminated at compile time */ +void tb_target_set_jmp_target(uintptr_t, uintptr_t, uintptr_t); + +#define TCG_TARGET_DEFAULT_MO (0) + +#ifdef CONFIG_SOFTMMU +#define TCG_TARGET_NEED_LDST_LABELS +#endif +#define TCG_TARGET_NEED_POOL_LABELS + +#endif From patchwork Sat Dec 8 00:47:16 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 10719055 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 9936D1731 for ; Sat, 8 Dec 2018 00:54:03 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 849EA2B194 for ; Sat, 8 Dec 2018 00:54:03 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 72FCC2B8E5; Sat, 8 Dec 2018 00:54:03 +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=-7.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI 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 9E37D2B194 for ; Sat, 8 Dec 2018 00:54:02 +0000 (UTC) Received: from localhost ([::1]:48552 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVQsb-0000YU-EY for patchwork-qemu-devel@patchwork.kernel.org; Fri, 07 Dec 2018 19:54:01 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39508) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVQmM-0000Df-VC for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:47:37 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gVQmI-0000ds-Vv for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:47:34 -0500 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:8136) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gVQmF-0000YC-Am; Fri, 07 Dec 2018 19:47:30 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1544230047; x=1575766047; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=Ih4s0j5UAUWM2vvyAEuaXwzWIhBR/JhRlby3oIb/bRg=; b=fyJFbT030s2lBSePrntrrxNTk5VWqfa0/z/PNn+30I8yyHFccv9A00vT XwaZVmk/rrneoU69CFOQQMwwpBaPd7VQNDR9U0auJGTSdRpdb51A0WXhf Rz1WIoEvDEwIE8R3/8QHiTm8LCDbcH7IpxqNrcr1+a4N4CUCltTSX2RYC 1Wzeej28Bv2muxiQD6rXcLDixbzoIlC4ny2npy3kBEHbS1rV45Sm6vgZy cUh6hjolyNYe6Y1/Di/BURtehBy7bxTG2aPj64q/VSaVqqcI9SAKCmK/D De/LlI8dfRrK6SRvRKZL37s36OBfMZGfRuLq73XK0hAQiKWEEFcyFTuco g==; X-IronPort-AV: E=Sophos;i="5.56,328,1539619200"; d="scan'208";a="101012020" Received: from mail-by2nam03lp2056.outbound.protection.outlook.com (HELO NAM03-BY2-obe.outbound.protection.outlook.com) ([104.47.42.56]) by ob1.hgst.iphmx.com with ESMTP; 08 Dec 2018 08:47:17 +0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector1-wdc-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PMkJjGCCwTgm+EjotCUxyhOgpuzIVBUaKRzpR54mzHE=; b=GAfcS8WHYaF5uZsOkaq/TU5wySfS02sa+pVcA3lg1EUctQfUrg0zzdT9BdmJ2VvF45FZRMd09Lu8Y6HYZFIcVMxW4kajidt3IHxLgb6mpDhHNLuLfhPq23rPHUwqiHVRLgnHMq0Q9kiWfpCSZpYlua8MM5y1HtUJqWhX9WCsZRM= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB3725.namprd04.prod.outlook.com (10.172.169.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.18; Sat, 8 Dec 2018 00:47:16 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5%9]) with mapi id 15.20.1404.021; Sat, 8 Dec 2018 00:47:16 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [RFC v3 07/24] riscv: Add the tcg target registers Thread-Index: AQHUjo+QSBT3wdcamEqGPNR7PW98ug== Date: Sat, 8 Dec 2018 00:47:16 +0000 Message-ID: <85cb20ee870652a43e658f0eb98e03f6358f2417.1544229872.git.alistair.francis@wdc.com> References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.19.1 x-clientproxiedby: BYAPR04CA0025.namprd04.prod.outlook.com (2603:10b6:a03:40::38) To MWHPR04MB0401.namprd04.prod.outlook.com (2603:10b6:300:70::18) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Alistair.Francis@wdc.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [199.255.44.250] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; MWHPR04MB3725; 6:Zwy3QSjz4AR99d13MzG1mzJ/6lvGYqzsZ8o884PmaFmW9AuZx769YXEqEZLhdRIOrB/Bt4HWiDy9a45E2iRHvLLRg80v5wUkV1EsCGGSkwxlGGCq3xdSp9X72lkRs6jb4jBMsqh0kFtWV0m9EiDvTOgNqM4AOQCgLh+PgSFN0dgUtJaQVGwyHkJ3A7JjTOkLTmKhxNc1xbKAoHPX5E31xHn+ytXMODAu8jwj15CdHSML5U92s4u2Z+VqFynZzgs+4wV2IASsb8rtVCxKwZH9gF+ObqAlupT7OqzKMO+Fq5J5IEXi5Z+79WDur4ww4v/q3grSzE7SlemJZ6r5Gg4BABX1cEz5QpSgdyQZbrSzEY3d5xrho95uOMdl/B7AiXKHLTgMT4QwwbUURU6gIXdZ/NNJ05Txw+6Pld9gMVPMaSR0U3JketJvts+cMUHQwY+WWgEvJp2xx7HrjRX9DH6xUQ==; 5:82sPYfq/JGmNPWL8nDy65CpCDNdsJqg6+TQG/c8Ev+ukBGKeRdCaj3H1ITxnLPhPRKWwK/3hr071AFDIZ50ru+50iRfwsVha1u18sXdoaMJ8wpxj4qIIiNQQ4WKamYsW+ySCVDssvF6C7mFpZoV48KEdFRveyWI/zl7QOX3HOZo=; 7:3EoUIPzisV2BQ3zD68J8zdfLGCU59B6Xrf5d/9HcZytQFkhCY0JjD9o1von6YaEAn8R/yZ7h2oxiHJYI/7dPs+VIeV9aGT+GwqarGzhkoZjY46/J3iTbUrUzRTvIAJEO7LvTlRpWZpjT1AB+jiPQNQ== x-ms-office365-filtering-correlation-id: c13ea404-86a7-40e9-bcfc-08d65ca6b30d x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:MWHPR04MB3725; x-ms-traffictypediagnostic: MWHPR04MB3725: wdcipoutbound: EOP-TRUE x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(3002001)(93006095)(93001095)(3231455)(999002)(944501520)(52105112)(6055026)(148016)(149066)(150057)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123560045)(20161123558120)(20161123564045)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB3725; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB3725; x-forefront-prvs: 0880FB6EC1 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(376002)(366004)(346002)(136003)(39860400002)(396003)(189003)(199004)(68736007)(476003)(53936002)(71200400001)(8676002)(71190400001)(11346002)(44832011)(446003)(2616005)(106356001)(486006)(4326008)(66066001)(6512007)(39060400002)(5660300001)(86362001)(81156014)(118296001)(81166006)(386003)(2906002)(8936002)(6506007)(14454004)(99286004)(3846002)(52116002)(478600001)(6116002)(25786009)(72206003)(305945005)(97736004)(6436002)(6486002)(76176011)(14444005)(26005)(7736002)(186003)(36756003)(110136005)(105586002)(2501003)(50226002)(102836004)(54906003)(316002)(256004); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB3725; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; x-microsoft-antispam-message-info: 5U5vH2Vdss1uMeuNfurSxBqFLJMZd6PLKVErE2MIqP21vDCyaakv6vjsOfgTiTQvf/IUTvQycJHOn7vgAS5VHiNuLE+odIgB4BdmZzCFl8cHRFvlliBUM51Re8yao1kiCDoEAkdoYMcMF2/x7xO5wJPtxYanfBqXbllAZxp2eVvCzOO7RJgC2XSMYWL8oNf59UIVMMdk1c5JOgY0LdXdsJSSEfbZOswMW9BkVMfA5cp2KkZXpXfho8kgd8SduCoC9MyAidN2aqSL+OzzjOrTdFHMtyczbTwWrEUs2WzgYUJPIK4pUFi1N8iMwozksb6IdTJ/sBjqpX285UB2qqJLwQXE1eZji4ZXAqxzB06yWK8= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: c13ea404-86a7-40e9-bcfc-08d65ca6b30d X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Dec 2018 00:47:16.0234 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB3725 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.141 Subject: [Qemu-devel] [RFC v3 07/24] 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: "alistair23@gmail.com" , "richard.henderson@linaro.org" , Alistair Francis 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: Alistair Francis Signed-off-by: Michael Clark Reviewed-by: Richard Henderson --- tcg/riscv/tcg-target.inc.c | 118 +++++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 tcg/riscv/tcg-target.inc.c 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, +}; From patchwork Sat Dec 8 00:47:25 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 10719061 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 34FDA1750 for ; Sat, 8 Dec 2018 00:54:44 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 210322B194 for ; Sat, 8 Dec 2018 00:54:44 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 130F92B8E5; Sat, 8 Dec 2018 00:54:44 +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=-7.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI 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 6F8072B194 for ; Sat, 8 Dec 2018 00:54:43 +0000 (UTC) Received: from localhost ([::1]:48554 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVQtG-000135-My for patchwork-qemu-devel@patchwork.kernel.org; Fri, 07 Dec 2018 19:54:42 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39546) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVQmO-0000Di-TU for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:47:37 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gVQmK-0000hH-SD for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:47:36 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:52386) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gVQmJ-0000bj-21; Fri, 07 Dec 2018 19:47:31 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1544230056; x=1575766056; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=reKoOHriVE6sM/G8Fkk56nl1k9/wgAdX5pMLmBk9O6I=; b=DjP1HaCbu244pXpVwbzVCg88XVCZaK99bYWvRFmineoluKphF/foqkXz HyJ/9WdwqoV2mcC2v4BO6TD61rg54rHKgM/QsAW3OudjQjjcsNramYuCN I4Ygu0JEDr+nCsN8N/h7LJCk4VRKm0TqYzbsq63f28k0SCXHGgeStptlD XJw+knzxWYnbtTh1DYswlm+ZT/aXd7G3uTapsQnI6ZCWozJA7ALRgJrWf 3HLLAHyrTn9Q1uB47YDRP8Sf4A3sgQnrvTpmiwuRuv5dEyqPVQ+oqzhd2 yTX2NevG+KZQJ5kpgNtGZ4tTM/vzjgYlnlGDMpJmuMnXVogsrpMVBRpdy Q==; X-IronPort-AV: E=Sophos;i="5.56,328,1539619200"; d="scan'208";a="194003402" Received: from mail-sn1nam04lp2051.outbound.protection.outlook.com (HELO NAM04-SN1-obe.outbound.protection.outlook.com) ([104.47.44.51]) by ob1.hgst.iphmx.com with ESMTP; 08 Dec 2018 08:47:30 +0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector1-wdc-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=saBe9NHewzpzR35RzPQlaBdbpAL5JHJSRUf2RN0zr3g=; b=FvZ2LhLAq+cATAlqmkUe33GbyK++6WEQyWnyzRB2TIqi8MZ/8knhiZV58zwoq7wJIsCF4Y4AJyuT99W11BR1wcpOWP2yDTOMZDy/9zfcqF7k8ij/a58vZnJGZ0fdNaoMk6UiWgYTBidf/5JkTyfWgQgCETAGWX5CkYKUPJ3Cnno= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB3725.namprd04.prod.outlook.com (10.172.169.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.18; Sat, 8 Dec 2018 00:47:26 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5%9]) with mapi id 15.20.1404.021; Sat, 8 Dec 2018 00:47:26 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [RFC v3 08/24] riscv: tcg-target: Add support for the constraints Thread-Index: AQHUjo+WZP4vJ7bHqEy8V6YtlfP0Yg== Date: Sat, 8 Dec 2018 00:47:25 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.19.1 x-clientproxiedby: BYAPR03CA0009.namprd03.prod.outlook.com (2603:10b6:a02:a8::22) To MWHPR04MB0401.namprd04.prod.outlook.com (2603:10b6:300:70::18) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Alistair.Francis@wdc.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [199.255.44.171] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; MWHPR04MB3725; 6:fbTYCzg/RSkGzlB/6xGEMmNqQTVANJPTa+kOU+Gs9Zw7PSwPHi8qA188KritkAumdP9bbtHXdAYnF7Yn9G5TKgDBfAefnKdaaYPK8aJUEovuH2kS1oaYoVNVW4N/9VpqlH9Ripf7qC2e+lyY+xRosBrEe1MaRMUhIqwE4e06vv7qqKwMb6v4Rv/k65vJlzPyVTJbhkFI9ONBw6sfIvQ4leFvFwReMdn4SvGMCKrf80clP0RZsf3Uv6zqNnqqZZt3xTk5vFV2m4ECjziABmeVbuLADWl+8NKXRN6hgRyAJFezK4NpIh9XPBwKDZw351Ca/nbKEkr7fh11HwyCPv9XbQic3eFvItqDQhB1UXuCu95Sg7gBXj6u2uwbpNR03I/bslCraGl+QUsytJ80OIyh4WBYJJ1YV3nRrkcAnlcYXOhMJQAl0/YhyUaqtQ7vXh6SmbrfYta4BAp700OpULKNxw==; 5:FboxbGCk98MgXIH/l/cI+VaX2x4VlTv19gRZT29y5VJ6ESxFt8BY1PBTcYSdasHDOTk5hDcd24NvXZxZ7EdgXmFlqvIQ3F3+yL5mH5fjezmoWNYSEXCgygv67cWzakoZmfFkfraPYmf6ll4S55M91z88BTWs2K47GKciHaG3xZM=; 7:37wRbtr+rfBZ6VVNj/1pFlQwuRNgaAcqGIN6ToqX1Fq8jPEY+1xsjuJiBviZcRI98rjP+elTyDwN2jvb8UPhTPlDeCPiH6Qq9CUlmOgf5/7Zrxlsm0ygI+qiX9F4FZwo2F2ngV/r7ZFOo/kX75O2lw== x-ms-office365-filtering-correlation-id: 2edd068a-0835-4211-83bb-08d65ca6b8be x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:MWHPR04MB3725; x-ms-traffictypediagnostic: MWHPR04MB3725: wdcipoutbound: EOP-TRUE x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(3002001)(93006095)(93001095)(3231455)(999002)(944501520)(52105112)(6055026)(148016)(149066)(150057)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123560045)(20161123558120)(20161123564045)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB3725; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB3725; x-forefront-prvs: 0880FB6EC1 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(376002)(366004)(346002)(136003)(39860400002)(396003)(189003)(199004)(68736007)(476003)(53936002)(71200400001)(8676002)(71190400001)(11346002)(44832011)(446003)(2616005)(106356001)(486006)(4326008)(66066001)(6512007)(39060400002)(5660300001)(86362001)(81156014)(118296001)(81166006)(386003)(2906002)(8936002)(6506007)(14454004)(99286004)(3846002)(52116002)(478600001)(6116002)(25786009)(72206003)(305945005)(97736004)(6436002)(6486002)(76176011)(26005)(7736002)(186003)(36756003)(110136005)(105586002)(2501003)(50226002)(102836004)(54906003)(316002)(256004); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB3725; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; x-microsoft-antispam-message-info: VlBJRdbCxYogfZL8ggpM1UzQOsCmXfwl1bMwvVT2S02ieY9zaGYEklc0qG/PLhY/zvkGfvvu+azdzJnt9ePERWc9Efw7IZL4Q4TQUju6oqI4PdceB8sAP4BhdXD6fDJ7tmhu9FvLMbm5MtdvV/xP+mdmBN4sdVCvsiD87QWn+MLjFyrEhfkGf463F+iC8wL0YYR2UQUUclN5Y4d1f16f1LDzto5a7ecRnuopxBXI5862KKmAMmJm+/aJ8U3bHD1taLmmDkhfSiSD63DIIUB7ogftbkpk8EMs7Lwo1ls7XNC6UEulzhcJ3Mhe5k2U6751jINRc18GC+4TYur9YnVM1XjDjsuWAlqJyq0sc2QC94o= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2edd068a-0835-4211-83bb-08d65ca6b8be X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Dec 2018 00:47:25.7887 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB3725 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 68.232.143.124 Subject: [Qemu-devel] [RFC v3 08/24] riscv: tcg-target: Add support for the constraints 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: "alistair23@gmail.com" , "richard.henderson@linaro.org" , Alistair Francis 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: Alistair Francis Signed-off-by: Michael Clark Signed-off-by: Richard Henderson Reviewed-by: Richard Henderson --- tcg/riscv/tcg-target.inc.c | 168 +++++++++++++++++++++++++++++++++++++ 1 file changed, 168 insertions(+) diff --git a/tcg/riscv/tcg-target.inc.c b/tcg/riscv/tcg-target.inc.c index 6c969e3973..af1d2c235a 100644 --- a/tcg/riscv/tcg-target.inc.c +++ b/tcg/riscv/tcg-target.inc.c @@ -116,3 +116,171 @@ static const int tcg_target_call_oarg_regs[] = { TCG_REG_A0, TCG_REG_A1, }; + +#define TCG_CT_CONST_ZERO 0x100 +#define TCG_CT_CONST_S12 0x200 +#define TCG_CT_CONST_N12 0x400 +#define TCG_CT_CONST_M12 0x800 + +static inline tcg_target_long sextreg(tcg_target_long val, int pos, int len) +{ + if (TCG_TARGET_REG_BITS == 32) { + return sextract32(val, pos, len); + } else { + return sextract64(val, pos, len); + } +} + +/* parse target specific constraints */ +static const char *target_parse_constraint(TCGArgConstraint *ct, + const char *ct_str, TCGType type) +{ + switch (*ct_str++) { + case 'r': + ct->ct |= TCG_CT_REG; + ct->u.regs = 0xffffffff; + break; + case 'L': + /* qemu_ld/qemu_st constraint */ + ct->ct |= TCG_CT_REG; + ct->u.regs = 0xffffffff; + /* qemu_ld/qemu_st uses TCG_REG_TMP0 */ +#if defined(CONFIG_SOFTMMU) + tcg_regset_reset_reg(ct->u.regs, tcg_target_call_iarg_regs[0]); + tcg_regset_reset_reg(ct->u.regs, tcg_target_call_iarg_regs[1]); + tcg_regset_reset_reg(ct->u.regs, tcg_target_call_iarg_regs[2]); + tcg_regset_reset_reg(ct->u.regs, tcg_target_call_iarg_regs[3]); + tcg_regset_reset_reg(ct->u.regs, tcg_target_call_iarg_regs[4]); +#endif + break; + case 'I': + ct->ct |= TCG_CT_CONST_S12; + break; + case 'N': + ct->ct |= TCG_CT_CONST_N12; + break; + case 'M': + ct->ct |= TCG_CT_CONST_M12; + break; + case 'Z': + /* we can use a zero immediate as a zero register argument. */ + ct->ct |= TCG_CT_CONST_ZERO; + break; + default: + return NULL; + } + return ct_str; +} + +/* test if a constant matches the constraint */ +static int tcg_target_const_match(tcg_target_long val, TCGType type, + const TCGArgConstraint *arg_ct) +{ + int ct = arg_ct->ct; + if (ct & TCG_CT_CONST) { + return 1; + } + if ((ct & TCG_CT_CONST_ZERO) && val == 0) { + return 1; + } + if ((ct & TCG_CT_CONST_S12) && val == sextreg(val, 0, 12)) { + return 1; + } + if ((ct & TCG_CT_CONST_N12) && val == sextreg(-val, 0, 12)) { + return 1; + } + if ((ct & TCG_CT_CONST_M12) && val >= -0xfff && val <= 0xfff) { + return 1; + } + return 0; +} + +/* + * RISC-V Base ISA opcodes (IM) + */ + +typedef enum { + OPC_ADD = 0x33, + OPC_ADDI = 0x13, + OPC_AND = 0x7033, + OPC_ANDI = 0x7013, + OPC_AUIPC = 0x17, + OPC_BEQ = 0x63, + OPC_BGE = 0x5063, + OPC_BGEU = 0x7063, + OPC_BLT = 0x4063, + OPC_BLTU = 0x6063, + OPC_BNE = 0x1063, + OPC_DIV = 0x2004033, + OPC_DIVU = 0x2005033, + OPC_JAL = 0x6f, + OPC_JALR = 0x67, + OPC_LB = 0x3, + OPC_LBU = 0x4003, + OPC_LD = 0x3003, + OPC_LH = 0x1003, + OPC_LHU = 0x5003, + OPC_LUI = 0x37, + OPC_LW = 0x2003, + OPC_LWU = 0x6003, + OPC_MUL = 0x2000033, + OPC_MULH = 0x2001033, + OPC_MULHSU = 0x2002033, + OPC_MULHU = 0x2003033, + OPC_OR = 0x6033, + OPC_ORI = 0x6013, + OPC_REM = 0x2006033, + OPC_REMU = 0x2007033, + OPC_SB = 0x23, + OPC_SD = 0x3023, + OPC_SH = 0x1023, + OPC_SLL = 0x1033, + OPC_SLLI = 0x1013, + OPC_SLT = 0x2033, + OPC_SLTI = 0x2013, + OPC_SLTIU = 0x3013, + OPC_SLTU = 0x3033, + OPC_SRA = 0x40005033, + OPC_SRAI = 0x40005013, + OPC_SRL = 0x5033, + OPC_SRLI = 0x5013, + OPC_SUB = 0x40000033, + OPC_SW = 0x2023, + OPC_XOR = 0x4033, + OPC_XORI = 0x4013, + +#if TCG_TARGET_REG_BITS == 64 + OPC_ADDIW = 0x1b, + OPC_ADDW = 0x3b, + OPC_DIVUW = 0x200503b, + OPC_DIVW = 0x200403b, + OPC_MULW = 0x200003b, + OPC_REMUW = 0x200703b, + OPC_REMW = 0x200603b, + OPC_SLLIW = 0x101b, + OPC_SLLW = 0x103b, + OPC_SRAIW = 0x4000501b, + OPC_SRAW = 0x4000503b, + OPC_SRLIW = 0x501b, + OPC_SRLW = 0x503b, + OPC_SUBW = 0x4000003b, +#else + /* Simplify code throughout by defining aliases for RV32. */ + OPC_ADDIW = OPC_ADDI, + OPC_ADDW = OPC_ADD, + OPC_DIVUW = OPC_DIVU, + OPC_DIVW = OPC_DIV, + OPC_MULW = OPC_MUL, + OPC_REMUW = OPC_REMU, + OPC_REMW = OPC_REM, + OPC_SLLIW = OPC_SLLI, + OPC_SLLW = OPC_SLL, + OPC_SRAIW = OPC_SRAI, + OPC_SRAW = OPC_SRA, + OPC_SRLIW = OPC_SRLI, + OPC_SRLW = OPC_SRL, + OPC_SUBW = OPC_SUB, +#endif + + OPC_FENCE = 0x0000000f, +} RISCVInsn; From patchwork Sat Dec 8 00:47:35 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 10719053 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 574A913BF for ; Sat, 8 Dec 2018 00:52:10 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 4240E2DE84 for ; Sat, 8 Dec 2018 00:52:10 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 337962DEC5; Sat, 8 Dec 2018 00:52:10 +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=-7.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI 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 A46282DE84 for ; Sat, 8 Dec 2018 00:52:09 +0000 (UTC) Received: from localhost ([::1]:48531 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVQqm-0005fD-QY for patchwork-qemu-devel@patchwork.kernel.org; Fri, 07 Dec 2018 19:52:08 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39645) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVQmU-0000KH-Ms for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:47:46 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gVQmQ-0000k2-Ix for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:47:42 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:52393) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gVQmQ-0000jK-8L; Fri, 07 Dec 2018 19:47:38 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1544230067; x=1575766067; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=9tbAH7zUjUK0UWCIDYnjapyrphnFegBfBsvLK6FcLOs=; b=TKsn7rHp19jsL5D2eUB5xgTSMKe3Lkxg6LpW1oKHaICVQZz+YOzdev3p Wzafcmq9CGlOvy7mK/1XGCDqDNZPGrfppST7a60/3P35S0Qgyq5hUr3PN 7izyHI0O4qMzXHJqcHaRbvR1PVzFYW14l06SgdMbcTBPujMHdkUkty62+ 32RZ8zRy97O5Oqc9N/pkV3hF7b6xadjFYQci3qvmWCmN9I+Gf/yNOYG0h 4ACEc73RAnOenbZ7JgI+zA0/vl5rBX13xk+EbjzQoDiM+aGPNw4tLjD3v rfmQtkzuq2XsYqCrbSmHygEv3nNhKPX4v9j2B28pPsil9eobb8iWEYThU g==; X-IronPort-AV: E=Sophos;i="5.56,328,1539619200"; d="scan'208";a="194003425" Received: from mail-sn1nam04lp2053.outbound.protection.outlook.com (HELO NAM04-SN1-obe.outbound.protection.outlook.com) ([104.47.44.53]) by ob1.hgst.iphmx.com with ESMTP; 08 Dec 2018 08:47:44 +0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector1-wdc-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=U7b1Y0L8GK2oyN5rM93wUVjtWX6OOQjDTYbpA4nyr54=; b=EA0QNsHxkaGxla1IdPDLtHPnly6H/jd7Q9MJk1lHfY+mQLaze88CJUN/4NsYWHQjiFeCa5tVvvKETQhRm+Qb6jSexux5h5R2CIOQw2T99WxVvFIIk14kUNf7dsbfovMCRrxlm3HBZGoqt20RxDD9OYJ+HeoTcjN2zZC/hVBIk7Q= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB3725.namprd04.prod.outlook.com (10.172.169.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.18; Sat, 8 Dec 2018 00:47:35 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5%9]) with mapi id 15.20.1404.021; Sat, 8 Dec 2018 00:47:35 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [RFC v3 09/24] riscv: tcg-target: Add the immediate encoders Thread-Index: AQHUjo+c3edfsf4vKkWw+I8KCVykeA== Date: Sat, 8 Dec 2018 00:47:35 +0000 Message-ID: <2e6df8dd71cfdc9391131548c483ef65fe858428.1544229872.git.alistair.francis@wdc.com> References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.19.1 x-clientproxiedby: BYAPR05CA0037.namprd05.prod.outlook.com (2603:10b6:a03:74::14) To MWHPR04MB0401.namprd04.prod.outlook.com (2603:10b6:300:70::18) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Alistair.Francis@wdc.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [199.255.44.250] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; MWHPR04MB3725; 6:h0QDFjeB85CX+hJV6oknRk1y0P0H5DRkDU0934ONxgn7S920F1J39wOe3hJbWXl0awCklhqf3Zjh8YnGS+8XKK87jvZYX0NePTiI2MH3XAfkUVuNPi8vEE+hrVp/tLwLhzzG22Cc5llLLaCp8lZQxjOE9KvvTcX5G16J/Q62qZBgMqRpS15nXOXB5monqh5OKqIdjr/Li7dn2dRBomABNveubkhq80XQ/WaFGJg4hs+cozsNGOP7nU0da0IL3gteRE4wbib2ujE8PDUYLQwiNi8uMlMoJQw2UUsqklnNxrHFATERH1VdEUSYrqKMPL6o2C3bQxaeG5uE2pqHop47HkiZmpcG1VEv5EZaA6b8sCe/rwVxzWo2ftgp4Y5KpZcaeu+MQkS9CywspNBt+rtDhVkmrMAgqwru+sIxfC/MTHugny+6+DeS7bCnq7Gr7asBA3yCg0KQrxCM2UMO8X+nhA==; 5:5/Tz/hh4AY8w6lAY4IBfJbrbErGet0c826KvSjY3iFMzZNfAGz6qEGWDFiuIT5Lw5xg2oePtv0UwEPhBLt7BlZSYPtgbF7QLpWR36kPXwhyEfCCrjK+rFFKEnAOcRTgHYGD8EUYuJFco9gyZ1fRTMfz/cRlQqOx4vCB9LCFuOAg=; 7:S6ffLIw71bcnQspabqQslCV3UmCOGp0BCNAmNgSAQQBmUt+3o6zSQEzqJ0ZujPwqrDvPqRyZOXDizE9SHuxrfF4jmUit/+bUJxBTQAuv4AbQSis6KfxfXYs8eJnygn3fbCEbknVcvzT6iXnvPyKEpA== x-ms-office365-filtering-correlation-id: 2843d977-a129-47b2-99b9-08d65ca6be64 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:MWHPR04MB3725; x-ms-traffictypediagnostic: MWHPR04MB3725: wdcipoutbound: EOP-TRUE x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(3002001)(93006095)(93001095)(3231455)(999002)(944501520)(52105112)(6055026)(148016)(149066)(150057)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123560045)(20161123558120)(20161123564045)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB3725; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB3725; x-forefront-prvs: 0880FB6EC1 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(376002)(366004)(346002)(136003)(39860400002)(396003)(189003)(199004)(68736007)(476003)(53936002)(71200400001)(8676002)(71190400001)(11346002)(44832011)(446003)(2616005)(106356001)(486006)(4326008)(66066001)(6512007)(39060400002)(5660300001)(86362001)(81156014)(118296001)(81166006)(575784001)(386003)(2906002)(8936002)(6506007)(14454004)(99286004)(3846002)(52116002)(478600001)(6116002)(25786009)(72206003)(305945005)(97736004)(6436002)(6486002)(76176011)(26005)(7736002)(186003)(36756003)(110136005)(105586002)(2501003)(50226002)(102836004)(54906003)(316002)(256004)(14773001); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB3725; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; x-microsoft-antispam-message-info: cHFREYuxzpJLaje5cW6AqUxPvBdu6oeMUZ1detc6DC6Oun+nR3TIYP3MBdKVfOPtxQrxiQTYxDEOmPH6IoaCxeUai9sLjgdOMBBMl89fUVJR8nZ7fKvf/XrM53Kpvj8keYFLTBc6smrVpZSW5owJuR/IeLgB7fnAqyOL9bZxRo1eJfJ60i+W/tya3b53eWPOaRfxaNv3hevoFN64vPcylhloj6Pec43pHZA+HHTkEWtf5N+E5vqUO8hV80skmi6Z/Wead++s1iU5ffRlRobpfPJKJvLeZQPCv41u8wfFhzWIzig8T85SH5DRZx2499SCjN7sLgIjZ/VF4SoQhUJWmKark7bspm0ZdS2iab27RK8= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2843d977-a129-47b2-99b9-08d65ca6be64 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Dec 2018 00:47:35.0576 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB3725 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 68.232.143.124 Subject: [Qemu-devel] [RFC v3 09/24] riscv: tcg-target: Add the immediate encoders 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: "alistair23@gmail.com" , "richard.henderson@linaro.org" , Alistair Francis 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: Alistair Francis Signed-off-by: Michael Clark Signed-off-by: Richard Henderson Reviewed-by: Richard Henderson --- tcg/riscv/tcg-target.inc.c | 90 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/tcg/riscv/tcg-target.inc.c b/tcg/riscv/tcg-target.inc.c index af1d2c235a..c385ff68ae 100644 --- a/tcg/riscv/tcg-target.inc.c +++ b/tcg/riscv/tcg-target.inc.c @@ -284,3 +284,93 @@ typedef enum { OPC_FENCE = 0x0000000f, } RISCVInsn; + +/* + * RISC-V immediate and instruction encoders (excludes 16-bit RVC) + */ + +/* Type-R */ + +static int32_t encode_r(RISCVInsn opc, TCGReg rd, TCGReg rs1, TCGReg rs2) +{ + return opc | (rd & 0x1f) << 7 | (rs1 & 0x1f) << 15 | (rs2 & 0x1f) << 20; +} + +/* Type-I */ + +static int32_t encode_imm12(uint32_t imm) +{ + return (imm & 0xfff) << 20; +} + +static int32_t encode_i(RISCVInsn opc, TCGReg rd, TCGReg rs1, uint32_t imm) +{ + return opc | (rd & 0x1f) << 7 | (rs1 & 0x1f) << 15 | encode_imm12(imm); +} + +/* Type-S */ + +static int32_t encode_simm12(uint32_t imm) +{ + int32_t ret = 0; + + ret |= (imm & 0xFE0) << 20; + ret |= (imm & 0x1F) << 7; + + return ret; +} + +static int32_t encode_s(RISCVInsn opc, TCGReg rs1, TCGReg rs2, uint32_t imm) +{ + return opc | (rs1 & 0x1f) << 15 | (rs2 & 0x1f) << 20 | encode_simm12(imm); +} + +/* Type-SB */ + +static int32_t encode_sbimm12(uint32_t imm) +{ + int32_t ret = 0; + + ret |= (imm & 0x1000) << 19; + ret |= (imm & 0x7e0) << 20; + ret |= (imm & 0x1e) << 7; + ret |= (imm & 0x800) >> 4; + + return ret; +} + +static int32_t encode_sb(RISCVInsn opc, TCGReg rs1, TCGReg rs2, uint32_t imm) +{ + return opc | (rs1 & 0x1f) << 15 | (rs2 & 0x1f) << 20 | encode_sbimm12(imm); +} + +/* Type-U */ + +static int32_t encode_uimm20(uint32_t imm) +{ + return imm & 0xfffff000; +} + +static int32_t encode_u(RISCVInsn opc, TCGReg rd, uint32_t imm) +{ + return opc | (rd & 0x1f) << 7 | encode_uimm20(imm); +} + +/* Type-UJ */ + +static int32_t encode_ujimm20(uint32_t imm) +{ + int32_t ret = 0; + + ret |= (imm & 0x0007fe) << (21 - 1); + ret |= (imm & 0x000800) << (20 - 11); + ret |= (imm & 0x0ff000) << (12 - 12); + ret |= (imm & 0x100000) << (31 - 20); + + return ret; +} + +static int32_t encode_uj(RISCVInsn opc, TCGReg rd, uint32_t imm) +{ + return opc | (rd & 0x1f) << 7 | encode_ujimm20(imm); +} From patchwork Sat Dec 8 00:47:44 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 10719073 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 23C721731 for ; Sat, 8 Dec 2018 00:59:08 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0DAF42DC5C for ; Sat, 8 Dec 2018 00:59:08 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id F40142DCCC; Sat, 8 Dec 2018 00:59:07 +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=-7.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI 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 761462DC5C for ; Sat, 8 Dec 2018 00:59:07 +0000 (UTC) Received: from localhost ([::1]:48585 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVQxW-0004Xx-4n for patchwork-qemu-devel@patchwork.kernel.org; Fri, 07 Dec 2018 19:59:06 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39721) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVQmd-0000e3-TQ for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:47:55 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gVQmZ-0000nE-Vc for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:47:51 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:52404) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gVQmZ-0000mp-MX; Fri, 07 Dec 2018 19:47:47 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1544230081; x=1575766081; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=4kCmf0yuVT1ipSFz/eCq/75FgpnqDLs5RBRVTCwW0/I=; b=Ht/jPJZdEm1FmqagUFijjljY90pUJvSeUqAU8nFyfMnuC3cXVEYre54n bOFLAUs4XfsNwOXwx52OLxmVP3jYmm2mCQZIpChGC2WpJWOHOgyjD+ytI yRA7WCGKiLHLN9fjvRPcL0BPYhPuPLpDGQ8HEFez3vSatLDAENAkdhIUv KnpbuzIPiw4hAoyXvob9JHoimTxmfd80PsSZfavo1kPlXYUKQXSRWstMF Icqzc7GlntfK0arbVjLZdj2sIDe+XfShfNlA7fmJX06aw9FiVVcD85cZG k+ug7dS4uW0tF7uvIcjoq0wVwR6Pj7jlHkBBr+56hHSlKN/QEyXpOGwN0 g==; X-IronPort-AV: E=Sophos;i="5.56,328,1539619200"; d="scan'208";a="194003447" Received: from mail-sn1nam04lp2059.outbound.protection.outlook.com (HELO NAM04-SN1-obe.outbound.protection.outlook.com) ([104.47.44.59]) by ob1.hgst.iphmx.com with ESMTP; 08 Dec 2018 08:47:59 +0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector1-wdc-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1L5KRbnyMBrHa+dhbL4PUA0DURaVeKMyXRPSoZIDsXE=; b=gS8ZK7cJtLVrARhWzmXkcM6v15OFE8WLu1ccMxG2D2HbrXvCA7yI3wEWYrmksD4+w2Lny08zBg3skec6elnn0ur6RkdL63KaGOlShbu3FJZfXJE3lIEVFHAhA44M5TZ1h/n2IP9inmt9r17nIt6H1UW99kEa50Vokv6ovUg6AY4= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB3725.namprd04.prod.outlook.com (10.172.169.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.18; Sat, 8 Dec 2018 00:47:44 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5%9]) with mapi id 15.20.1404.021; Sat, 8 Dec 2018 00:47:44 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [RFC v3 10/24] riscv: tcg-target: Add the instruction emitters Thread-Index: AQHUjo+hLbAfx7+fKkCPCDFZ+cwTHA== Date: Sat, 8 Dec 2018 00:47:44 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.19.1 x-clientproxiedby: BYAPR05CA0080.namprd05.prod.outlook.com (2603:10b6:a03:e0::21) To MWHPR04MB0401.namprd04.prod.outlook.com (2603:10b6:300:70::18) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Alistair.Francis@wdc.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [199.255.44.250] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; MWHPR04MB3725; 6:EHtHHu9gttkHCctoICR7KU8wq+3UCHH/jQDOa1/pfZ3vo5wwgHHG77BKvi0qzmVNRKrqjvaX+3Mjzd4PYszad+CO7+Nh0+jkeeHCcODmVKIKPwqrspMIupiRjegofm3jttAxDh8LicEInKCp3KVdf1oLR0tOiSVtkdAYGu92DjslxXV+bi0QYVvx9uNeXG+uKWM+A7qdXctPs+Edwv3Fuq60Cotx4SbNUD2MSU4mCOVaOv3/XS0Uj3/kuHOyBX18I7dslsZbr/6NlK6HqD5llwHBCbMURtHud9CkZCmjyls8BkKSJcz/AZBLao2H+0LnH+x47/5n9hqhIvN104XqbZOqTE2OfyqouSaSY3pva7vNkiVmhihI5XhE72As8ITJaztS75iE8AKKSBX2r/bSIxhXyFW4AgS8KW8DvqNf6jBJcj6aAn7ETata3YmivtHgTOl/6OeiJr5Kd9FWKXd9qA==; 5:mdt3m6MRNtE0kglJ+ZPu9s+L+dPYd0kA7RHv7CxmKxC5NGhtRIch/7bcH9g2CC5W5Tlwewk6UvzjuUMiOu1W1+PWowk4Fs1oFc3H01hEBNxvcSFLvndXw4RniQqEitzg0t4+eytyfMoeuijOBSKsR1UvUmPk6IH51HPgCkI5Uro=; 7:f92SG1VAgCMe0gYwdgjdjweZrEX0G+gSFI5mk3vh/1I2HeMyS5tOCR5TtHHWd6koQFJEpHeBfi6Pe9NCg4NlwIXTcI9WNq+/MTTyN7O/5uOiPbFMToEzz1U66VvoycrONi/mWrqu8U28e6MKb9xtQQ== x-ms-office365-filtering-correlation-id: a8190dcb-ee81-4e13-7a19-08d65ca6c431 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:MWHPR04MB3725; x-ms-traffictypediagnostic: MWHPR04MB3725: wdcipoutbound: EOP-TRUE x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(3002001)(93006095)(93001095)(3231455)(999002)(944501520)(52105112)(6055026)(148016)(149066)(150057)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123560045)(20161123558120)(20161123564045)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB3725; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB3725; x-forefront-prvs: 0880FB6EC1 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(376002)(366004)(346002)(136003)(39860400002)(396003)(189003)(199004)(68736007)(476003)(53936002)(71200400001)(8676002)(71190400001)(11346002)(44832011)(446003)(2616005)(106356001)(486006)(4326008)(66066001)(6512007)(39060400002)(5660300001)(86362001)(81156014)(118296001)(81166006)(386003)(2906002)(8936002)(6506007)(14454004)(99286004)(3846002)(52116002)(478600001)(6116002)(25786009)(72206003)(305945005)(97736004)(6436002)(6486002)(76176011)(26005)(7736002)(186003)(36756003)(110136005)(105586002)(2501003)(50226002)(102836004)(54906003)(316002)(256004); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB3725; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; x-microsoft-antispam-message-info: 5sAxfXETaJXnjYHiB5qa6L75JpOqe+S2dZ/Rt2AWqOXXbYU3WgnviLB0cdQ32xi3Q/3qzbobJ+5qlX93iKSPYr5xbVPcE496o6ukHizSE3AdsI5IEJXaQahOWF9SqPFm1ffKu6d2eVJSZ44JxSp+Hvd/mK2eZLGLqynObPsWcZ6cKhQ7HXzcGmm73ZTgNGzgNjixrX3QsWZDt2cWm28Owoll+Mi7+zBhaLKWKyhM6AKdqv+BKzFiX1YWZ6vMDJ+sCDxErNYnP6PtJ5nmu2wqh4pQ3EifQZ+r6lmNLBCJ2e4zZmXjNs/RkLguoFwMTIrRL8HGyYl2Kz92tp754VTEFFMB7hzMyQ3uVQdJaSPVY0Y= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: a8190dcb-ee81-4e13-7a19-08d65ca6c431 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Dec 2018 00:47:44.7899 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB3725 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 68.232.143.124 Subject: [Qemu-devel] [RFC v3 10/24] riscv: tcg-target: Add the instruction emitters 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: "alistair23@gmail.com" , "richard.henderson@linaro.org" , Alistair Francis 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: Alistair Francis Signed-off-by: Michael Clark Reviewed-by: Richard Henderson --- tcg/riscv/tcg-target.inc.c | 48 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/tcg/riscv/tcg-target.inc.c b/tcg/riscv/tcg-target.inc.c index c385ff68ae..cfcab9c716 100644 --- a/tcg/riscv/tcg-target.inc.c +++ b/tcg/riscv/tcg-target.inc.c @@ -374,3 +374,51 @@ static int32_t encode_uj(RISCVInsn opc, TCGReg rd, uint32_t imm) { return opc | (rd & 0x1f) << 7 | encode_ujimm20(imm); } + +/* + * RISC-V instruction emitters + */ + +static void tcg_out_opc_reg(TCGContext *s, RISCVInsn opc, + TCGReg rd, TCGReg rs1, TCGReg rs2) +{ + tcg_out32(s, encode_r(opc, rd, rs1, rs2)); +} + +static void tcg_out_opc_imm(TCGContext *s, RISCVInsn opc, + TCGReg rd, TCGReg rs1, TCGArg imm) +{ + tcg_out32(s, encode_i(opc, rd, rs1, imm)); +} + +static void tcg_out_opc_store(TCGContext *s, RISCVInsn opc, + TCGReg rs1, TCGReg rs2, uint32_t imm) +{ + tcg_out32(s, encode_s(opc, rs1, rs2, imm)); +} + +static void tcg_out_opc_branch(TCGContext *s, RISCVInsn opc, + TCGReg rs1, TCGReg rs2, uint32_t imm) +{ + tcg_out32(s, encode_sb(opc, rs1, rs2, imm)); +} + +static void tcg_out_opc_upper(TCGContext *s, RISCVInsn opc, + TCGReg rd, uint32_t imm) +{ + tcg_out32(s, encode_u(opc, rd, imm)); +} + +static void tcg_out_opc_jump(TCGContext *s, RISCVInsn opc, + TCGReg rd, uint32_t imm) +{ + tcg_out32(s, encode_uj(opc, rd, imm)); +} + +static void tcg_out_nop_fill(tcg_insn_unit *p, int count) +{ + int i; + for (i = 0; i < count; ++i) { + p[i] = encode_i(OPC_ADDI, TCG_REG_ZERO, TCG_REG_ZERO, 0); + } +} From patchwork Sat Dec 8 00:47:54 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 10719065 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 36B4F1731 for ; Sat, 8 Dec 2018 00:55:13 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 22FAC2DE84 for ; Sat, 8 Dec 2018 00:55:13 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 139222DEC5; Sat, 8 Dec 2018 00:55:13 +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=-7.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI 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 83B302DE84 for ; Sat, 8 Dec 2018 00:55:12 +0000 (UTC) Received: from localhost ([::1]:48557 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVQtj-0001Qw-Lw for patchwork-qemu-devel@patchwork.kernel.org; Fri, 07 Dec 2018 19:55:11 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39799) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVQmp-00019p-Jq for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:48:07 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gVQml-0000rc-J2 for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:48:03 -0500 Received: from esa5.hgst.iphmx.com ([216.71.153.144]:41933) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gVQml-0000qR-9p; Fri, 07 Dec 2018 19:47:59 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1544230080; x=1575766080; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=Nn3ISBK7kSNc6pvwOhjuBbDe2AQv9dTLiJDJElWkxCU=; b=hYOSqqbiqlTx73kufxwCwNNjhwsZ2+RQsyyL0yzEOKNOo3sGO+y0yygb saDYmYC72NnWd87CsffmGoc2N9HZYZugILnF1gx4KqA4iP6kbixJwngRe Ez/gdto9WGj5+3luGeo4mbIUyYBo2uQl1UYMJBDI88M15H13eAj9cWfdn GhFOs4p69Ol0X9QPqZQQ8tQiCUDwcq8akESMCbR0txah4+NbHUPYlnLFa REhvaFLKkQr9S788nak8EKsq5Dr8f6gHGDkPBrxLnLl5bUfxuekJFl4Dg LXoPdtwlWwtQD+jedYaSsrvBnmhSzI2/AzT4T/KkzYBSAT6WGItWwBpcb Q==; X-IronPort-AV: E=Sophos;i="5.56,328,1539619200"; d="scan'208";a="97343777" Received: from mail-sn1nam01lp2052.outbound.protection.outlook.com (HELO NAM01-SN1-obe.outbound.protection.outlook.com) ([104.47.32.52]) by ob1.hgst.iphmx.com with ESMTP; 08 Dec 2018 08:47:58 +0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector1-wdc-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=b2klMBFMKEmXbbdBrZJzBUyVqGEm54gBevLbCEkLYp0=; b=BP4P1VcAbWSOC9gwGHnZoTdHI+CsEeZaE4rTnFOLI5CSOm+GfI4bEuSi1V3XYrCKaj4ZUE+KcslL0i1ZddExkLismsb06xQ2eqAPDCc5RWWCgLueQNEn71PBNsKpv1EjeHTHaB9OrGBsfgzVa8ZjmAxKBkOJvlkGG+sWuOmWacg= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB0304.namprd04.prod.outlook.com (10.169.202.138) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.20; Sat, 8 Dec 2018 00:47:54 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5%9]) with mapi id 15.20.1404.021; Sat, 8 Dec 2018 00:47:54 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [RFC v3 11/24] riscv: tcg-target: Add the relocation functions Thread-Index: AQHUjo+naaupg6knikKE1XFGtveoNw== Date: Sat, 8 Dec 2018 00:47:54 +0000 Message-ID: <4b09385f9d320719fe5ed5eb77a7f53581b667e9.1544229872.git.alistair.francis@wdc.com> References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.19.1 x-clientproxiedby: BYAPR05CA0073.namprd05.prod.outlook.com (2603:10b6:a03:e0::14) To MWHPR04MB0401.namprd04.prod.outlook.com (2603:10b6:300:70::18) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Alistair.Francis@wdc.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [199.255.44.250] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; MWHPR04MB0304; 6:6WIRA1sPrm9sIGzzazRyvS6dOSMWpV78EryUEzdYC5dPwtiluL7Kw+sakik8+oKWGwB3CdGdOvWYVwWdhwgzf3J31bat4SIVBIcw1sWFTQXeaH+Y2wyK5erVsplWhbrW6IViktr4gthdcgwiRAmZMp5vs9wOj0S7ax9Itkug9fYWuBkJLaQxGupI7pXz0hQVhyVNVsnnJa0BBpDWHcjynUWVWZfLFqPFlmAgnN+RPodYQEWhOflv/dXGJde2ypoI7g6zVkaF2d1o3qij51W4Bou1kTjnK5r9OxFiWS382TeUtUe+DAmmcFQKJdB9PmYR/I72gFES4qAkQkShgiQ5VFIGLyYXvJk0g9O2cj9iLR5mF1rmUOsum1Jow6DtnMmLNO/C3a1alW5ncEhU/5Du/rCGnHoP7u/X9mrs5qxIPY2vqS4r/tH1CwCkUL/ohV9ftHx0ZY3PNrHHaHx1hUeMTA==; 5:YNiwHSmQZItQ1P6yaMbAFkysw+cwN+ugeTo6QB6XhrE4oDWZrwI2PgeX48snPmYbVznZ65f0E0p0z1QfvV3CM1FR6Pw1xSlYWHIa6tZqoTeShofuek8eAoX5JUAh5xRQAzW0/qe5hmKcgylR0sWD3Qu+ye/oK3mtTATxBzcS+HI=; 7:/4MygXYedFfHALzf9gpE8Kqv9XDqL7bWHS00N1htlheCJgXfc9WogMhXaJY1XEwu4DRzu9IcyGMcXDJQQM1J8VQ3qjg0zlWlUoREbBL3k8eHC6KKVpaVI6/I1SgaE8FhEM2LWsmvvNCUCN/NtnUPew== x-ms-office365-filtering-correlation-id: 23b0852c-897d-4f6d-adee-08d65ca6ca10 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:MWHPR04MB0304; x-ms-traffictypediagnostic: MWHPR04MB0304: wdcipoutbound: EOP-TRUE x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(93001095)(3231455)(999002)(944501520)(52105112)(3002001)(10201501046)(6055026)(148016)(149066)(150057)(6041310)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123558120)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB0304; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB0304; x-forefront-prvs: 0880FB6EC1 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(346002)(396003)(39860400002)(366004)(376002)(136003)(189003)(199004)(54906003)(110136005)(44832011)(386003)(6506007)(5660300001)(68736007)(2906002)(71190400001)(25786009)(71200400001)(86362001)(316002)(99286004)(14454004)(66066001)(102836004)(2501003)(6512007)(53936002)(4326008)(11346002)(6116002)(478600001)(81166006)(81156014)(3846002)(72206003)(8936002)(105586002)(256004)(118296001)(106356001)(39060400002)(446003)(6436002)(36756003)(6486002)(486006)(76176011)(186003)(2616005)(305945005)(26005)(97736004)(52116002)(476003)(50226002)(7736002)(8676002); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB0304; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; x-microsoft-antispam-message-info: 6PmUHH8SZJoS6iq77wKN+g1JQqi8gJ4knalPF0PTKBSG8geQtjqG8HIPLGTDqB8WAz5yDo8T3YSNm3CwQKwv6cYlac61jjzZpHR7DEpKVLHCK3xO8/7Sma9zcQzS3ZwkF2pQg18ZK99U8WhJy3gkSuAyX42hgJs1eq2GASUYows6g0RtFLJ+n+CvveoNfQNvcb3+8xgfeIL3oJMOdbql27PVDzaGFtcf3YOaAYU0U+ypJl/N0zfSabGWT6x5q7duORoxNN1vho/1GqUcgFOzI8QK0rnxZpOMinNtsRqnTy1h4iPjepr/2g/1Tqt7AzyPHjKCk7qPjem2q8+N5OH7KyKRxCHhp/xxTN5QUiMt/mY= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: 23b0852c-897d-4f6d-adee-08d65ca6ca10 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Dec 2018 00:47:54.7514 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB0304 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.144 Subject: [Qemu-devel] [RFC v3 11/24] riscv: tcg-target: Add the relocation functions 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: "alistair23@gmail.com" , "richard.henderson@linaro.org" , Alistair Francis 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: Alistair Francis Signed-off-by: Michael Clark Signed-off-by: Richard Henderson --- tcg/riscv/tcg-target.inc.c | 75 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/tcg/riscv/tcg-target.inc.c b/tcg/riscv/tcg-target.inc.c index cfcab9c716..05e85805d2 100644 --- a/tcg/riscv/tcg-target.inc.c +++ b/tcg/riscv/tcg-target.inc.c @@ -422,3 +422,78 @@ static void tcg_out_nop_fill(tcg_insn_unit *p, int count) p[i] = encode_i(OPC_ADDI, TCG_REG_ZERO, TCG_REG_ZERO, 0); } } + +/* + * Relocations + */ + +static void reloc_sbimm12(tcg_insn_unit *code_ptr, tcg_insn_unit *target) +{ + intptr_t offset = (intptr_t)target - (intptr_t)code_ptr; + tcg_debug_assert(offset == sextreg(offset, 1, 12) << 1); + + code_ptr[0] |= encode_sbimm12(offset); +} + +static void reloc_jimm20(tcg_insn_unit *code_ptr, tcg_insn_unit *target) +{ + intptr_t offset = (intptr_t)target - (intptr_t)code_ptr; + tcg_debug_assert(offset == sextreg(offset, 1, 20) << 1); + + code_ptr[0] |= encode_ujimm20(offset); +} + +static void reloc_call(tcg_insn_unit *code_ptr, tcg_insn_unit *target) +{ + intptr_t offset = (intptr_t)target - (intptr_t)code_ptr; + int32_t lo = sextreg(offset, 0, 12); + int32_t hi = offset - lo; + + tcg_debug_assert(offset == hi + lo); + + code_ptr[0] |= encode_uimm20(hi); + code_ptr[1] |= encode_imm12(lo); +} + +static void patch_reloc(tcg_insn_unit *code_ptr, int type, + intptr_t value, intptr_t addend) +{ + uint32_t insn = *code_ptr; + intptr_t diff; + bool short_jmp; + + tcg_debug_assert(addend == 0); + + switch (type) { + case R_RISCV_BRANCH: + diff = value - (uintptr_t)code_ptr; + short_jmp = diff == sextreg(diff, 0, 12); + if (short_jmp) { + reloc_sbimm12(code_ptr, (tcg_insn_unit *)value); + } else { + /* Invert the condition */ + insn = insn ^ (1 << 12); + /* Clear the offset */ + insn &= 0x01fff07f; + /* Set the offset to the PC + 8 */ + insn |= encode_sbimm12(8); + + /* Move forward */ + code_ptr[0] = insn; + + /* Overwrite the NOP with jal x0,value */ + diff = value - (uintptr_t)(code_ptr + 1); + insn = encode_uj(OPC_JAL, TCG_REG_ZERO, diff); + code_ptr[1] = insn; + } + break; + case R_RISCV_JAL: + reloc_jimm20(code_ptr, (tcg_insn_unit *)value); + break; + case R_RISCV_CALL: + reloc_call(code_ptr, (tcg_insn_unit *)value); + break; + default: + tcg_abort(); + } +} From patchwork Sat Dec 8 00:48:04 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 10719069 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 686541731 for ; Sat, 8 Dec 2018 00:57:29 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 527D82DE84 for ; Sat, 8 Dec 2018 00:57:29 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 40A752DEC5; Sat, 8 Dec 2018 00:57:29 +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=-7.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI 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 ACDF82DE84 for ; Sat, 8 Dec 2018 00:57:28 +0000 (UTC) Received: from localhost ([::1]:48573 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVQvv-00039e-Pl for patchwork-qemu-devel@patchwork.kernel.org; Fri, 07 Dec 2018 19:57:27 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39904) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVQmx-0001Zc-Nl for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:48:15 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gVQmt-0000uw-Nj for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:48:11 -0500 Received: from esa5.hgst.iphmx.com ([216.71.153.144]:41940) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gVQmt-0000u8-9c; Fri, 07 Dec 2018 19:48:07 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1544230088; x=1575766088; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=GHIXbk3XEx0AyyJwjkwyHEaVBo9XdjNzQrw2ziZfXys=; b=Q4mgqtxVfpl/0YbsUMX/3GLO0R0zRphwsmFavluqhwf+2HAU0rw8WKi5 YbNF7V9AcsMVztp5OmmesS9KdVvrrXou5FGEJt1y2joG5RCnpNQ/h40OQ /pvRMQGZO6TesyCqugYD9ZtqZU9n8OhGBaWK1bSvV5aM9pH9r/CQ2y9G5 7RZ871ZVUnQazLGq8w7px7hAmSMdASlO5p9/MrcXL6P9o0CK5YzFzr8iu 7oQPyWBMoP7cqg5+Ak2q1N2P9RS7C2ao4/wsKAO1EUmPRSIM0uDibIiQQ ilX3honKucYzYnIZhpJFE4tlvJBuyudSz0/IVbCJq0Fh9LXG5cV9FNoOc w==; X-IronPort-AV: E=Sophos;i="5.56,328,1539619200"; d="scan'208";a="97343780" Received: from mail-sn1nam01lp2056.outbound.protection.outlook.com (HELO NAM01-SN1-obe.outbound.protection.outlook.com) ([104.47.32.56]) by ob1.hgst.iphmx.com with ESMTP; 08 Dec 2018 08:48:07 +0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector1-wdc-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=c1YcWlkggEHdAwd875KOzdfaSRyT+e0qNS5YHVAUh1I=; b=hkD0dpmzJaWwb/bmVr6Q4VKzhjblZbEU4fJvozUbuSjhekZmnXy8hkIIgA7XiRlUfGsBJNB818693O28givPm6lL5Di+QihXc5U7j8O1DCdzD8G6sqyfzx9Vryim8CavWJTHltODj4uT6VjyCYNHTsaq3MzrPRncvohb4Ya0f+o= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB0304.namprd04.prod.outlook.com (10.169.202.138) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.20; Sat, 8 Dec 2018 00:48:04 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5%9]) with mapi id 15.20.1404.021; Sat, 8 Dec 2018 00:48:04 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [RFC v3 12/24] riscv: tcg-target: Add the mov and movi instruction Thread-Index: AQHUjo+t6PW2QHlG0Eqx6Qtw1zUtIQ== Date: Sat, 8 Dec 2018 00:48:04 +0000 Message-ID: <8370208ff307f7dcbf6b44913ae0556cb2fe596c.1544229872.git.alistair.francis@wdc.com> References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.19.1 x-clientproxiedby: BYAPR05CA0079.namprd05.prod.outlook.com (2603:10b6:a03:e0::20) To MWHPR04MB0401.namprd04.prod.outlook.com (2603:10b6:300:70::18) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Alistair.Francis@wdc.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [199.255.44.250] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; MWHPR04MB0304; 6:pZBoShZu8fZgqB75t/wlLZHO3gmvI7aciNi0M5zFKbqTX0rJQo6IOCAKA7C0YRwNuDiG6VFXFERQFST23OB0Y8ju1ddgojI+tVciBHQALehOCKKah6r1NrJK7assFsdqhxe77hj2YHNUE59UhjZTZun0EJUenp35akghVFuXEUf+QxOGo0Wxw1+vJrYCMHOpi2g82LMLKbYZflw2UT9C1xZnP62FK5zmApcYOfT/u9fA4vXz4C3G/jVHXSSM3BkxnvEjWCBbp3vNtM6HT+Ui6g/7jQjHZvA1HGPPa0vvO6Okul1v8ia74jlu5JVCQVSBrfQRfDeKDP8FI5CQ9MUPQ0ps6oF0KnCoRDzkOYJfzqLmwK2KS5+qxZQIv4YW+e/8SF6Bde05s2OTR5oKHVTb/rYmTPivFlMLVmh1L/gRDgqFgois7pqoTTxUYgxrmnGR1uo3BtXHIdSQNIS4Wob6GQ==; 5:tJjjE83FqKtBFUo8yG73KpJyDCCOLVtMGHp8DG1gXmqE3bnGd5pWIjDpQV5cV7S9vosjGcjbeRWzqFWmq6+0Akt9FKrfk72vem2Y82B8tajwWvP3md+vycn452K8ZwktWApODepjwqK/u9IePYQqCWcRdEo1+yFMjxrHkfO7IzQ=; 7:tJQebl+B+g0OMgB3kuNnFWko6yF4+XbWH0f7xhx4hUqn5KvaGbZZlU0CGh9SK+QZ4xBz27hDLAgdoUjGD668Atr5U/teei05jRBTYadPs9WfSu6ONwfIXGbQASdY/9YcmVPIRnqsa2ZylKeX4sidLw== x-ms-office365-filtering-correlation-id: 13b565e8-6af1-4529-d9d8-08d65ca6cfd4 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:MWHPR04MB0304; x-ms-traffictypediagnostic: MWHPR04MB0304: wdcipoutbound: EOP-TRUE x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(93001095)(3231455)(999002)(944501520)(52105112)(3002001)(10201501046)(6055026)(148016)(149066)(150057)(6041310)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123558120)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB0304; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB0304; x-forefront-prvs: 0880FB6EC1 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(346002)(396003)(39860400002)(366004)(376002)(136003)(189003)(199004)(54906003)(110136005)(44832011)(386003)(6506007)(5660300001)(68736007)(2906002)(71190400001)(25786009)(71200400001)(86362001)(316002)(99286004)(14454004)(66066001)(102836004)(2501003)(6512007)(53936002)(4326008)(11346002)(6116002)(478600001)(81166006)(81156014)(3846002)(72206003)(8936002)(105586002)(256004)(118296001)(106356001)(39060400002)(446003)(6436002)(36756003)(6486002)(486006)(76176011)(186003)(2616005)(305945005)(26005)(97736004)(52116002)(476003)(50226002)(7736002)(8676002); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB0304; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; x-microsoft-antispam-message-info: QoGz/uUXZaGxqo3o0RHOSkKD535IH8bx07wxQpZDfyRPuIHAeByq5SyksIzSNwSV0ims/Mc0YiWzY5PhAI7OCdbeSOz85yDu4jf19wGX7dEmzJ9VL//C0sdrk/rU5OwIZXJQZLTyAAFPypxCMx19ZL0BLzHnqxfkuo9uE2LhETw4ZgCfSAOcLUG4qsEktyzB7Ay2bA1WItEeUQmiZlfZjO+pqFHfisyY+BUVTog+q2aL09xvctYYP914gAvOq1jpkqgjX5bJCbNgQ4YSj66m2G9b3bg1l0f8AeFm/eKc354oEPgUWwJc++u6803gZlfln/3yqx7vMRnhuJVbXzBsdQg0zDBk9enwHNF7h+FQLV8= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: 13b565e8-6af1-4529-d9d8-08d65ca6cfd4 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Dec 2018 00:48:04.4576 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB0304 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.144 Subject: [Qemu-devel] [RFC v3 12/24] riscv: tcg-target: Add the mov and movi instruction 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: "alistair23@gmail.com" , "richard.henderson@linaro.org" , Alistair Francis 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: Alistair Francis Signed-off-by: Michael Clark Signed-off-by: Richard Henderson --- tcg/riscv/tcg-target.inc.c | 85 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) diff --git a/tcg/riscv/tcg-target.inc.c b/tcg/riscv/tcg-target.inc.c index 05e85805d2..29275d6ac9 100644 --- a/tcg/riscv/tcg-target.inc.c +++ b/tcg/riscv/tcg-target.inc.c @@ -497,3 +497,88 @@ static void patch_reloc(tcg_insn_unit *code_ptr, int type, tcg_abort(); } } + +/* + * TCG intrinsics + */ + +static void tcg_out_mov(TCGContext *s, TCGType type, TCGReg ret, TCGReg arg) +{ + if (ret == arg) { + return; + } + switch (type) { + case TCG_TYPE_I32: + case TCG_TYPE_I64: + tcg_out_opc_imm(s, OPC_ADDI, ret, arg, 0); + break; + default: + g_assert_not_reached(); + } +} + +static void tcg_out_movi(TCGContext *s, TCGType type, TCGReg rd, + tcg_target_long val) +{ + tcg_target_long lo, hi, tmp; + int shift; + + if (TCG_TARGET_REG_BITS == 64 && type == TCG_TYPE_I32) { + val = (int32_t)val; + } + + lo = sextreg(val, 0, 12); + if (val == lo) { + tcg_out_opc_imm(s, OPC_ADDI, rd, TCG_REG_ZERO, lo); + return; + } + + hi = val - lo; + if (TCG_TARGET_REG_BITS == 32 || val == (int32_t)val) { + tcg_out_opc_upper(s, OPC_LUI, rd, hi); + if (lo != 0) { + tcg_out_opc_imm(s, OPC_ADDIW, rd, rd, lo); + } + return; + } + + /* We can only be here if TCG_TARGET_REG_BITS != 32 */ + tmp = tcg_pcrel_diff(s, (void *)val); + if (tmp == (int32_t)tmp) { + tcg_out_opc_upper(s, OPC_AUIPC, rd, 0); + tcg_out_opc_imm(s, OPC_ADDI, rd, rd, 0); + reloc_call(s->code_ptr - 2, (tcg_insn_unit *)val); + return; + } + + /* Look for a single 20-bit section. */ + shift = ctz64(val); + tmp = val >> shift; + if (tmp == sextreg(tmp, 0, 20)) { + tcg_out_opc_upper(s, OPC_LUI, rd, tmp << 12); + if (shift > 12) { + tcg_out_opc_imm(s, OPC_SLLI, rd, rd, shift - 12); + } else { + tcg_out_opc_imm(s, OPC_SRAI, rd, rd, 12 - shift); + } + return; + } + + /* Look for a few high zero bits, with lots of bits set in the middle. */ + shift = clz64(val); + tmp = val << shift; + if (tmp == sextreg(tmp, 12, 20) << 12) { + tcg_out_opc_upper(s, OPC_LUI, rd, tmp); + tcg_out_opc_imm(s, OPC_SRLI, rd, rd, shift); + return; + } else if (tmp == sextreg(tmp, 0, 12)) { + tcg_out_opc_imm(s, OPC_ADDI, rd, TCG_REG_ZERO, tmp); + tcg_out_opc_imm(s, OPC_SRLI, rd, rd, shift); + return; + } + + /* Drop into the constant pool. */ + new_pool_label(s, val, R_RISCV_CALL, s->code_ptr, 0); + tcg_out_opc_upper(s, OPC_AUIPC, rd, 0); + tcg_out_opc_imm(s, OPC_LD, rd, rd, 0); +} From patchwork Sat Dec 8 00:48:14 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 10719057 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 8178C13BF for ; Sat, 8 Dec 2018 00:54:27 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 701BD2B194 for ; Sat, 8 Dec 2018 00:54:27 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 61D432B8E5; Sat, 8 Dec 2018 00:54:27 +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=-7.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI 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 CDB2C2B194 for ; Sat, 8 Dec 2018 00:54:26 +0000 (UTC) Received: from localhost ([::1]:48553 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVQt0-0000rT-31 for patchwork-qemu-devel@patchwork.kernel.org; Fri, 07 Dec 2018 19:54:26 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39959) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVQn7-00023V-B4 for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:48:25 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gVQn3-0000xH-BR for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:48:21 -0500 Received: from esa5.hgst.iphmx.com ([216.71.153.144]:41948) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gVQn3-0000x0-2M; Fri, 07 Dec 2018 19:48:17 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1544230098; x=1575766098; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=x2ZQ7EmMntfJcxRVJOPs8IOwZIsP2DfoYvC20nEU9O0=; b=MFnFUP+rgmVEdY+6zl/MVG1JAcx215bOy4SlVFs+qPOKJzGThOXSlNR+ LduIhrdQO6IjIE+T6PK0SOTTC2aAu1v5RNTYPDXe7XlWIS6WyfAfhYp8b y2ZhGzGOQOF0UDCRU+rVefLB05fzqJlPQ9sJoWw6B9miSc/sDg8lnw7Oe yKyqkJFY5+0b4QPxTDb/i7nOi2ihH/9uO9g8vJaMZW/v7VyFF0OTvQd+f g80XsQ6ZakO3TUFIRsZ/6Jykwx8BXH5VKmjo2InTGzmbDaSQez1/UC8Pe ktt6l5kVyN0rQ3FvURYxWkPbXEpYr7htBllN0sjHym5VfRhqcaaM8qty6 Q==; X-IronPort-AV: E=Sophos;i="5.56,328,1539619200"; d="scan'208";a="97343810" Received: from mail-sn1nam01lp2057.outbound.protection.outlook.com (HELO NAM01-SN1-obe.outbound.protection.outlook.com) ([104.47.32.57]) by ob1.hgst.iphmx.com with ESMTP; 08 Dec 2018 08:48:16 +0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector1-wdc-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Pj7X/a+xt3zQpAyRQir0j9okfmvyMvTWCM/uOWt8EgA=; b=Ixq0V2ZZ/y9zghGRGwMHpmAbmoKUj0M3Yybxf02ute6KZ9YNQb2V1uC7B9SPaCCHQN686IyA/bhLZ+uUWwtWU+swrEsCR7Pns8BXiw1BgNprNwC8qO35hQDZgkzKKzWI5p/LCe0F1NrIkSvZ8gH2wmug3Mc+G9ky3GuVwQ5vmI8= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB0304.namprd04.prod.outlook.com (10.169.202.138) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.20; Sat, 8 Dec 2018 00:48:14 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5%9]) with mapi id 15.20.1404.021; Sat, 8 Dec 2018 00:48:14 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [RFC v3 13/24] riscv: tcg-target: Add the extract instructions Thread-Index: AQHUjo+zTvY9loeM5EGr/NxoxygpUg== Date: Sat, 8 Dec 2018 00:48:14 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.19.1 x-clientproxiedby: BYAPR05CA0091.namprd05.prod.outlook.com (2603:10b6:a03:e0::32) To MWHPR04MB0401.namprd04.prod.outlook.com (2603:10b6:300:70::18) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Alistair.Francis@wdc.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [199.255.44.250] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; MWHPR04MB0304; 6:3f/XOWDzX3N4EwflrF3dnodQ1vrfK4WD3vgWTe/n5Ovg9NIROBZ+63jY/M6z2jcEPEkGksPmrdORhSkyLycd2ff+mQ2ARsK+zkWMxFFfvNcvBXzqXrBq5cIaXzw1r0fk+4OFiAw1J6lCHVBtCR1H7MalqM/NOrY8cbE2hZXvoqhBtMZmhLZ2ZJiCf7Jq2V446Bo63WUJggdT4kSE8lm4ktGjmlicpbEXrVvJqCLvnsiod3EPxDUNkbLBcBLioMntGyUT3RPbOXAxrBpd2F4VIW6YarLqaB9tCbanxWZd8OLNJ5l77qrX0yBsJ111bhzuYDki+7i9xly7PpQav6qtYzcnEiYyMxhk9/kLqagultevZ7nH6FDTHdqQ5A5FBVA8prJAaM60JDsuUujT44HJG1370BOjYavELWkivYt9+o/sMSxSFhSRENdXfmcdNcQN8Q7KnaQhDYtq7iTk1KKpVA==; 5:wFx0KTt8VvaGlQ4r9pPyqkGrxaL09XeuR403rqM/AijBL0ZiWQx9hpvQg5s9zUW9xlHM7OVq2+dIajNILuemkl+NShjIhHqOEKSULI91c2j1ba1iQCzrZP2WK3gPjsNbDYEu3Bmczf7ktM5jpWl0p3P1/lElPNVldrDxAjx5DyQ=; 7:VHeNhIkNurDTxE+mJwhtsKyVPQC8vKKD9f/MLvhTVV9dNFh1dMb8owCgp1ph+qsRShMPbdNfvRDD02kjChg3dEyyNFj3/RZabXlllWAQ/l5/N2SabLb1Qfpa2k0l9/tQwplx41dAyQJWvn7GIsZRnQ== x-ms-office365-filtering-correlation-id: c5ce521a-a627-4f8e-a64f-08d65ca6d5b6 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:MWHPR04MB0304; x-ms-traffictypediagnostic: MWHPR04MB0304: wdcipoutbound: EOP-TRUE x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(93001095)(3231455)(999002)(944501520)(52105112)(3002001)(10201501046)(6055026)(148016)(149066)(150057)(6041310)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123558120)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB0304; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB0304; x-forefront-prvs: 0880FB6EC1 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(346002)(396003)(39860400002)(366004)(376002)(136003)(189003)(199004)(54906003)(110136005)(44832011)(386003)(6506007)(5660300001)(68736007)(2906002)(71190400001)(25786009)(71200400001)(86362001)(316002)(99286004)(14454004)(66066001)(102836004)(2501003)(6512007)(53936002)(4326008)(11346002)(6116002)(478600001)(81166006)(81156014)(3846002)(72206003)(8936002)(105586002)(256004)(118296001)(106356001)(39060400002)(446003)(6436002)(36756003)(6486002)(486006)(76176011)(186003)(2616005)(305945005)(26005)(97736004)(52116002)(476003)(50226002)(7736002)(8676002); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB0304; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; x-microsoft-antispam-message-info: qayzVF6A8mCAZdtOutdJFFix7ytszn4SyGCFfwmx1BQMtywuNKkVuMQDO9obR2Tp8RqDfcnf8u3XqFE761UJ6J1yqEFeVo0qW4OyjRY5S7T+dITAX9dqM/5ZBsLue7G3TB6U4ffcvAUAhBM4+hYEhLFERQ1vSJy66TCQ43NZQdBeLasVr4yG6Q95+7VFmdwDxhtY2RTUiZU1Ho04CyFZRvMmMD/5JpR/1B+MzHWWk13IAxnAS3hHCIg+RyAOnvCGLPN7PYWl1xOCZcxH2YMfRBjtmxVljlBCnCE7g4ajMMjLnl8+u3khLVP3bPWIbBeGb3lpygy3JlsMxa2/d9K2AwlfHIp7Rj/HZrw4PRMCJio= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: c5ce521a-a627-4f8e-a64f-08d65ca6d5b6 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Dec 2018 00:48:14.1449 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB0304 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.144 Subject: [Qemu-devel] [RFC v3 13/24] riscv: tcg-target: Add the extract instructions 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: "alistair23@gmail.com" , "richard.henderson@linaro.org" , Alistair Francis 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: Alistair Francis Signed-off-by: Michael Clark Signed-off-by: Richard Henderson Reviewed-by: Richard Henderson --- tcg/riscv/tcg-target.inc.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/tcg/riscv/tcg-target.inc.c b/tcg/riscv/tcg-target.inc.c index 29275d6ac9..b7de24e5c8 100644 --- a/tcg/riscv/tcg-target.inc.c +++ b/tcg/riscv/tcg-target.inc.c @@ -582,3 +582,37 @@ static void tcg_out_movi(TCGContext *s, TCGType type, TCGReg rd, tcg_out_opc_upper(s, OPC_AUIPC, rd, 0); tcg_out_opc_imm(s, OPC_LD, rd, rd, 0); } + +static void tcg_out_ext8u(TCGContext *s, TCGReg ret, TCGReg arg) +{ + tcg_out_opc_imm(s, OPC_ANDI, ret, arg, 0xff); +} + +static void tcg_out_ext16u(TCGContext *s, TCGReg ret, TCGReg arg) +{ + tcg_out_opc_imm(s, OPC_SLLIW, ret, arg, 16); + tcg_out_opc_imm(s, OPC_SRLIW, ret, ret, 16); +} + +static void tcg_out_ext32u(TCGContext *s, TCGReg ret, TCGReg arg) +{ + tcg_out_opc_imm(s, OPC_SLLI, ret, arg, 32); + tcg_out_opc_imm(s, OPC_SRLI, ret, ret, 32); +} + +static void tcg_out_ext8s(TCGContext *s, TCGReg ret, TCGReg arg) +{ + tcg_out_opc_imm(s, OPC_SLLIW, ret, arg, 24); + tcg_out_opc_imm(s, OPC_SRAIW, ret, ret, 24); +} + +static void tcg_out_ext16s(TCGContext *s, TCGReg ret, TCGReg arg) +{ + tcg_out_opc_imm(s, OPC_SLLIW, ret, arg, 16); + tcg_out_opc_imm(s, OPC_SRAIW, ret, ret, 16); +} + +static void tcg_out_ext32s(TCGContext *s, TCGReg ret, TCGReg arg) +{ + tcg_out_opc_imm(s, OPC_ADDIW, ret, arg, 0); +} From patchwork Sat Dec 8 00:48:23 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 10719071 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id AB8351759 for ; Sat, 8 Dec 2018 00:57:39 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9A2532DE84 for ; Sat, 8 Dec 2018 00:57:39 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 8D2202DEC5; Sat, 8 Dec 2018 00:57:39 +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=-7.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI 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 10C462DE84 for ; Sat, 8 Dec 2018 00:57:39 +0000 (UTC) Received: from localhost ([::1]:48576 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVQw6-0003Fb-B8 for patchwork-qemu-devel@patchwork.kernel.org; Fri, 07 Dec 2018 19:57:38 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40016) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVQnH-0002qr-2Y for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:48:33 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gVQnD-0000yr-Gj for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:48:30 -0500 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:8207) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gVQnD-0000yb-0j; Fri, 07 Dec 2018 19:48:27 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1544230107; x=1575766107; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=mqZga6OWxRAUOnZeao6lzdgKMbeiaRAgfZdIn9gX0vQ=; b=eKvais533WXq4gwYW85QYSi+LeoZtTgEGfEobnSXEZFvLnnWKLT7JFHc y0i1xvOnKynakq4hCcDIog5H+b1ofoQQ6yBIUxyW+MYi5I5LfzZbuzeTt hNuhdELunfrDJgD/oO9Ohn3aUM6x0mdwsMvEmoWpSF1hqU/KEtYC+Yerc 1eq0P3dRgXv2JMjW+FckymDsEyz+DPNiah2hLWzsqDuLCyvVC/1X6ixBc m0pmWc+3IzHPvxt3BGHeKCGdO4aU9TDZAkni83tnKxt0eAZom7po09Ium TyISzRlc7ARvYEjMgTZrX2CqcffnYRuQv7Jonyo/id3jYNzvSlGD80dBi A==; X-IronPort-AV: E=Sophos;i="5.56,328,1539619200"; d="scan'208";a="101012137" Received: from mail-sn1nam01lp2050.outbound.protection.outlook.com (HELO NAM01-SN1-obe.outbound.protection.outlook.com) ([104.47.32.50]) by ob1.hgst.iphmx.com with ESMTP; 08 Dec 2018 08:48:25 +0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector1-wdc-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=j73FdEGo1PDS0uC/cNhV51N7M/cyP+Cv27MCmS91TZI=; b=NguwCFCyv/u5T5LVUjXoWagtxgQxKnQgTCKppXRy+/uhB/CZ7gTRgpqLlwoD2rqZir0bA7uY/aRe68gZ/7ONIGiMoy+hoYy23c57ERvFgNRYoScAiKig4fEiYRfT9uLrRJNITXcGbrsqe5tt0uTMklUM6sSKtVMld7kr0NW6vzU= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB0304.namprd04.prod.outlook.com (10.169.202.138) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.20; Sat, 8 Dec 2018 00:48:23 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5%9]) with mapi id 15.20.1404.021; Sat, 8 Dec 2018 00:48:23 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [RFC v3 14/24] riscv: tcg-target: Add the out load and store instructions Thread-Index: AQHUjo+4KT9F3KH0v06UY50gdwLVQw== Date: Sat, 8 Dec 2018 00:48:23 +0000 Message-ID: <1db9a31231907cfb7630b1570ece72b80f7f8bde.1544229872.git.alistair.francis@wdc.com> References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.19.1 x-clientproxiedby: BYAPR08CA0032.namprd08.prod.outlook.com (2603:10b6:a03:100::45) To MWHPR04MB0401.namprd04.prod.outlook.com (2603:10b6:300:70::18) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Alistair.Francis@wdc.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [199.255.44.250] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; MWHPR04MB0304; 6:MkBJHvHKMeeIbry3YVK+L8rldyueNcgGpPIFHyCqqmlACtug4xOZv4BCZVPfoUgx5kp8eDvsEbvY248jSdPYFTqFKgxcGPpieBuBvIgqFKHTMkhJsvke/Er6Cp3XnqvsQU23G9CdJyaGPhE1MV2poCl2G16Gqmwqw9ISDCq7oC5nkvdwgsZ+Xv7okA0OjLfOTDXEH+eS3iumvzvznjGU8G3wHCd1oTnTCcYk0p8WI2kuloKjanQALsKOdqsuDHWzjkQiI0fHwnEX0CtwEs09bLW73sY7iL7qjD1+t3megE9o/op3KxVgIpu71uwFoMjfq8L5ACvypYSTOUuO/XO9r+MjCJEwnmCUZuDR2RAcPP5psVDRSWVBB1kVfvIt0i9PkGDheNYu6ruicG4h6v1NNqpO3rpn82shiCMqGydpZoC0rwAqv0z7q7vibxV9BEe3xcNpjTIBHvzIaM2vG1YXRQ==; 5:RiQosFi2QKuo4BBnrTQFGaep4mSyxGFh5BD35AVHvF+lCt4z+x2BBIA04myZDBZ5u5smX7mR6YHw7ZMraOzPewZiT1Vy7vMfhDuppQUIS6NZp8KWLD6842PZMfEKVaxlwFXA+HF8EXaXtnLiqmNxbkvNMx5wF1PvJ+Zup3ePvyU=; 7:jScU1eRw/dpxSyPtvZfyCg2ePV6aNZ/GAT1fxrvD4Ow43nlIXTPgg8MiIFoQoYgshpBNer204NaeRhN4GszXJtrvPB6z7SW/K19eeihCE7lWaQYWifaQHTAPUK6cIvNqXLDc5mZKt2Cv1+dvZaI88A== x-ms-office365-filtering-correlation-id: f61533bf-5af3-444c-1081-08d65ca6db45 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:MWHPR04MB0304; x-ms-traffictypediagnostic: MWHPR04MB0304: wdcipoutbound: EOP-TRUE x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(93001095)(3231455)(999002)(944501520)(52105112)(3002001)(10201501046)(6055026)(148016)(149066)(150057)(6041310)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123558120)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB0304; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB0304; x-forefront-prvs: 0880FB6EC1 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(346002)(396003)(39860400002)(366004)(376002)(136003)(189003)(199004)(54906003)(110136005)(44832011)(386003)(6506007)(5660300001)(68736007)(2906002)(71190400001)(25786009)(71200400001)(86362001)(316002)(99286004)(14454004)(66066001)(102836004)(2501003)(6512007)(53936002)(4326008)(11346002)(6116002)(478600001)(81166006)(81156014)(3846002)(72206003)(8936002)(105586002)(256004)(118296001)(106356001)(39060400002)(446003)(6436002)(36756003)(6486002)(486006)(76176011)(186003)(2616005)(305945005)(26005)(97736004)(52116002)(476003)(50226002)(7736002)(8676002); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB0304; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; x-microsoft-antispam-message-info: 5HmTtpRk07iYG7kZQ1F076yUwV+/kWQR8mx7WIqMVJwhl2Y29I/lXAcJQF/N9t6rqRCImfaP2K2iqj0XymQna/4VJAHuYYxrcHbeYkIidhYf+0Bu5Q5UmHULGmOqIgfJXnvqks65E7bK6vy3r/2a9nS7gZOXQ0XTAfyhx6mldCkkBcUj9on6Abj3Cm8Jh7qM1kjz+t7S4Dv4EmAi7no8gsC7neDbmuxlEItcbFgqVCj4yyiic86a1+QBy7OGyfgLMUQWCxYUUsmRVZDy+OT36L3JdCZv2HyzVdit0ZCr6j1CzHCG+LH6ud24Sbl9V3m8xLEZ050moeSHPFZTIa9z8FPXRssL30DKRNef9xpzs+s= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: f61533bf-5af3-444c-1081-08d65ca6db45 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Dec 2018 00:48:23.5649 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB0304 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.141 Subject: [Qemu-devel] [RFC v3 14/24] riscv: tcg-target: Add the out load and store instructions 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: "alistair23@gmail.com" , "richard.henderson@linaro.org" , Alistair Francis 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: Alistair Francis Signed-off-by: Michael Clark Signed-off-by: Richard Henderson Reviewed-by: Richard Henderson --- tcg/riscv/tcg-target.inc.c | 65 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/tcg/riscv/tcg-target.inc.c b/tcg/riscv/tcg-target.inc.c index b7de24e5c8..04e81f811a 100644 --- a/tcg/riscv/tcg-target.inc.c +++ b/tcg/riscv/tcg-target.inc.c @@ -616,3 +616,68 @@ static void tcg_out_ext32s(TCGContext *s, TCGReg ret, TCGReg arg) { tcg_out_opc_imm(s, OPC_ADDIW, ret, arg, 0); } + +static void tcg_out_ldst(TCGContext *s, RISCVInsn opc, TCGReg data, + TCGReg addr, intptr_t offset) +{ + intptr_t imm12 = sextreg(offset, 0, 12); + + if (offset != imm12) { + intptr_t diff = offset - (uintptr_t)s->code_ptr; + + if (addr == TCG_REG_ZERO && diff == (int32_t)diff) { + imm12 = sextreg(diff, 0, 12); + tcg_out_opc_upper(s, OPC_AUIPC, TCG_REG_TMP2, diff - imm12); + } else { + tcg_out_movi(s, TCG_TYPE_PTR, TCG_REG_TMP2, offset - imm12); + if (addr != TCG_REG_ZERO) { + tcg_out_opc_reg(s, OPC_ADD, TCG_REG_TMP2, TCG_REG_TMP2, addr); + } + } + addr = TCG_REG_TMP2; + } + + switch (opc) { + case OPC_SB: + case OPC_SH: + case OPC_SW: + case OPC_SD: + tcg_out_opc_store(s, opc, addr, data, imm12); + break; + case OPC_LB: + case OPC_LBU: + case OPC_LH: + case OPC_LHU: + case OPC_LW: + case OPC_LWU: + case OPC_LD: + tcg_out_opc_imm(s, opc, data, addr, imm12); + break; + default: + g_assert_not_reached(); + } +} + +static void tcg_out_ld(TCGContext *s, TCGType type, TCGReg arg, + TCGReg arg1, intptr_t arg2) +{ + bool is32bit = (TCG_TARGET_REG_BITS == 32 || type == TCG_TYPE_I32); + tcg_out_ldst(s, is32bit ? OPC_LW : OPC_LD, arg, arg1, arg2); +} + +static void tcg_out_st(TCGContext *s, TCGType type, TCGReg arg, + TCGReg arg1, intptr_t arg2) +{ + bool is32bit = (TCG_TARGET_REG_BITS == 32 || type == TCG_TYPE_I32); + tcg_out_ldst(s, is32bit ? OPC_SW : OPC_SD, arg, arg1, arg2); +} + +static bool tcg_out_sti(TCGContext *s, TCGType type, TCGArg val, + TCGReg base, intptr_t ofs) +{ + if (val == 0) { + tcg_out_st(s, type, TCG_REG_ZERO, base, ofs); + return true; + } + return false; +} From patchwork Sat Dec 8 00:48:33 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 10719079 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id B2E861750 for ; Sat, 8 Dec 2018 01:00:44 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A264A2DD7B for ; Sat, 8 Dec 2018 01:00:44 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 96A842DD98; Sat, 8 Dec 2018 01:00:44 +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=-7.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI 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 204ED2DD7B for ; Sat, 8 Dec 2018 01:00:44 +0000 (UTC) Received: from localhost ([::1]:48595 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVQz5-0005nc-8l for patchwork-qemu-devel@patchwork.kernel.org; Fri, 07 Dec 2018 20:00:43 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40077) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVQnP-0002wQ-JK for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:48:41 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gVQnM-00012b-CM for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:48:39 -0500 Received: from esa5.hgst.iphmx.com ([216.71.153.144]:41965) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gVQnM-00012L-31; Fri, 07 Dec 2018 19:48:36 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1544230117; x=1575766117; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=CzvW7mcRtXKr6q8Kmlz0alSjMiU4Z9NX6WPfNdgIDqY=; b=F/3jgv0EXMi8d6nFVQ8vAPItV+/0o2+uwqE6BMOmX8YQoofsl7hGLqod UqTA6+ipMGu+2bvt2chmQrP1mRuf6cKbcGjyDmiyxCa3mD2mKQu6C0zJM yD17aU+nh/k8pGphvm3+bJYFkyxjVM0ZEPS1/js2yJ1XR3U6eAhgRKIwk nMCAVS4jPZ7bp9QVFi11slx8pRRCYy9WhCYz/p4AxIQUXKefHkkR2rZeL X+RhgzUv2UUlL+diRObsPtRHssadlzUP1cXHBgplgpECNcBsKN+BbV9tV rRDhxQsHykAtymD4xJaAOh0ewYa9xyAtGgwL9mvXS/FyfZamOODx5vX6c g==; X-IronPort-AV: E=Sophos;i="5.56,328,1539619200"; d="scan'208";a="97343869" Received: from mail-sn1nam01lp2050.outbound.protection.outlook.com (HELO NAM01-SN1-obe.outbound.protection.outlook.com) ([104.47.32.50]) by ob1.hgst.iphmx.com with ESMTP; 08 Dec 2018 08:48:35 +0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector1-wdc-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=OccawXRfKz+SNz4sVEbwWf6enUtmIT0qSMeedXP9S2g=; b=MUdUg6zWb5Kjvv5fIjpOCDfWhpsdyK+cjHlwIlaPQIl1+L/BVrykBlIW9+iRtOsWKbH56sO///h2MbGH3CHXvwZJ/6n4DHbg+ZugGSd2j2xuRX9XWlhFoYvK8XFM7M5GoJhKOBo6M+c/YJOdeW6KBO0WRnXrlE2p/AE4pYU/7fg= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB0304.namprd04.prod.outlook.com (10.169.202.138) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.20; Sat, 8 Dec 2018 00:48:33 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5%9]) with mapi id 15.20.1404.021; Sat, 8 Dec 2018 00:48:33 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [RFC v3 15/24] riscv: tcg-target: Add the add2 and sub2 instructions Thread-Index: AQHUjo++AZsqsf1IFUC0cksiTPwMvw== Date: Sat, 8 Dec 2018 00:48:33 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.19.1 x-clientproxiedby: BYAPR11CA0081.namprd11.prod.outlook.com (2603:10b6:a03:f4::22) To MWHPR04MB0401.namprd04.prod.outlook.com (2603:10b6:300:70::18) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Alistair.Francis@wdc.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [199.255.44.250] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; MWHPR04MB0304; 6:qMJlAT9TJPRDh8EQDPgWsTzxdlzS9+yNyngheOXl5BBfCDoplm5aiftlfxgenlCwAY05hgYUrHoUImE6DwDypaFuU/NM+d7DZlC2o6gucwPu0g5SOG5gIH33ZutWSaXcO4m8MXJhn5ZUpI2rMyfVZBob1TdwXyQRHCzEs4BE+ptOt/htTIvweubPPuuaci2JthG9MYJtkNJWHny3dGWYZf1HUlXo32VhrEL+AWk1jojjpTnAixsFd2ow2oPB4EKWoE8uwyztY4ljjmGleslF5EoEydb1jasL3qDxx3kPomVGbx5GTucMnfJKl1spKSE1NOYmQroMpeI5oH/CdBNUQKtKUFcFuQYPw+XGk+If0NKiQvGLKRfF0Gga5g7rPOU3D8Dg++5uNlvBCN5gNvqkiS9LS36BzkWBTVxo00AFhOoCUE2MTHLl8nWCFr4x5B9BqO/Vl1bbycB4TyQojw2g4g==; 5:3sx2IL62Eu9wb43PQuOyqlldGcUGuvrDRRANHqXuliaf4uuU+k/dI5A9FSvGU7M9uRXwscWRg3Fe34HahR1Albie5XcvhYTh4R8kygmJS3JZsmpNI/VJNjq5Mg2C+ZyheN/EFj++BRQNzLNlgBiprSgtStGk6JYZFiIQbgmLbzQ=; 7:2z4fnKvpQWwYbewJNHfVVNMHG0HU3mDG096d5AuEB32H9Mawz/Qr6jXcv811DK2Im2FiW64k6K51KU8ZUnCdxc05FWw5YcEaVhaKxsxAfTe6KQ4swoLa8MsrNvsG6jrYO3iI/OqUcn6lq1MFpnYf4w== x-ms-office365-filtering-correlation-id: 3f1457c9-37aa-48a8-0763-08d65ca6e106 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:MWHPR04MB0304; x-ms-traffictypediagnostic: MWHPR04MB0304: wdcipoutbound: EOP-TRUE x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(93001095)(3231455)(999002)(944501520)(52105112)(3002001)(10201501046)(6055026)(148016)(149066)(150057)(6041310)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123558120)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB0304; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB0304; x-forefront-prvs: 0880FB6EC1 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(346002)(396003)(39860400002)(366004)(376002)(136003)(189003)(199004)(54906003)(110136005)(44832011)(386003)(6506007)(5660300001)(68736007)(2906002)(71190400001)(25786009)(71200400001)(86362001)(316002)(99286004)(14454004)(66066001)(102836004)(2501003)(6512007)(53936002)(4326008)(11346002)(6116002)(478600001)(81166006)(81156014)(3846002)(72206003)(8936002)(105586002)(256004)(118296001)(106356001)(14444005)(39060400002)(446003)(6436002)(36756003)(6486002)(486006)(76176011)(186003)(2616005)(305945005)(26005)(97736004)(52116002)(476003)(50226002)(7736002)(8676002); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB0304; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; x-microsoft-antispam-message-info: QZkLTRoAEJ/Cl+SGtBRxyt6n6HRNkWcCO1zctbUHAmf54rkqTiB4WbwqcMsIXRq9G3StwLI4JSjcQmDyTjLkuTZ05cm8U0m2WE6hHkDE3zV1lkAUQGHHjxnZvZ2N/o18KdIrYsTKfrGwTGlF+mdYpEIUOtj0QKyPpPBaALi4s/r4NYXHM5C1mBe9Bkt3ctZdjuRzhMnBjM2jgaOzTHSUiP7taLyEtB0cG0lFOxRlrl5N6fk5Bf4OuFn+Hl6ofXtU03VrGkkzXUIlajtBNGVkUq9VANhEYRnviklifknesruulDwyiiFnjoUMAv1sJz0aGp0q0Z+mZA7Uv6Z7bDkBEggXjD1tGZ8w8T+PGdcnWUY= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3f1457c9-37aa-48a8-0763-08d65ca6e106 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Dec 2018 00:48:33.1210 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB0304 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.144 Subject: [Qemu-devel] [RFC v3 15/24] riscv: tcg-target: Add the add2 and sub2 instructions 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: "alistair23@gmail.com" , "richard.henderson@linaro.org" , Alistair Francis 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: Alistair Francis Reviewed-by: Richard Henderson --- tcg/riscv/tcg-target.inc.c | 55 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/tcg/riscv/tcg-target.inc.c b/tcg/riscv/tcg-target.inc.c index 04e81f811a..10bd007cd4 100644 --- a/tcg/riscv/tcg-target.inc.c +++ b/tcg/riscv/tcg-target.inc.c @@ -681,3 +681,58 @@ static bool tcg_out_sti(TCGContext *s, TCGType type, TCGArg val, } return false; } + +static void tcg_out_addsub2(TCGContext *s, + TCGReg rl, TCGReg rh, + TCGReg al, TCGReg ah, + TCGReg bl, TCGReg bh, + bool cbl, bool cbh, bool is_sub, bool is32bit) +{ + const RISCVInsn opc_add = is32bit ? OPC_ADDW : OPC_ADD; + const RISCVInsn opc_addi = is32bit ? OPC_ADDIW : OPC_ADDI; + const RISCVInsn opc_sub = is32bit ? OPC_SUBW : OPC_SUB; + TCGReg th = TCG_REG_TMP1; + + /* If we have a negative constant such that negating it would + make the high part zero, we can (usually) eliminate one insn. */ + if (cbl && cbh && bh == -1 && bl != 0) { + bl = -bl; + bh = 0; + is_sub = !is_sub; + } + + /* By operating on the high part first, we get to use the final + carry operation to move back from the temporary. */ + if (!cbh) { + tcg_out_opc_reg(s, (is_sub ? opc_sub : opc_add), th, ah, bh); + } else if (bh != 0 || ah == rl) { + tcg_out_opc_imm(s, opc_addi, th, ah, (is_sub ? -bh : bh)); + } else { + th = ah; + } + + /* Note that tcg optimization should eliminate the bl == 0 case. */ + if (is_sub) { + if (cbl) { + tcg_out_opc_imm(s, OPC_SLTIU, TCG_REG_TMP0, al, bl); + tcg_out_opc_imm(s, opc_addi, rl, al, -bl); + } else { + tcg_out_opc_reg(s, OPC_SLTU, TCG_REG_TMP0, al, bl); + tcg_out_opc_reg(s, opc_sub, rl, al, bl); + } + tcg_out_opc_reg(s, opc_sub, rh, th, TCG_REG_TMP0); + } else { + if (cbl) { + tcg_out_opc_imm(s, opc_addi, rl, al, bl); + tcg_out_opc_imm(s, OPC_SLTIU, TCG_REG_TMP0, rl, bl); + } else if (rl == al && rl == bl) { + tcg_out_opc_imm(s, OPC_SLTI, TCG_REG_TMP0, al, 0); + tcg_out_opc_reg(s, opc_addi, rl, al, bl); + } else { + tcg_out_opc_reg(s, opc_add, rl, al, bl); + tcg_out_opc_reg(s, OPC_SLTU, TCG_REG_TMP0, + rl, (rl == bl ? al : bl)); + } + tcg_out_opc_reg(s, opc_add, rh, th, TCG_REG_TMP0); + } +} From patchwork Sat Dec 8 00:48:42 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 10719081 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 393331750 for ; Sat, 8 Dec 2018 01:03:41 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1A9132DE3B for ; Sat, 8 Dec 2018 01:03:41 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 08B002DE4C; Sat, 8 Dec 2018 01:03:41 +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=-7.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI 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 6738D2DE3B for ; Sat, 8 Dec 2018 01:03:39 +0000 (UTC) Received: from localhost ([::1]:48618 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVR1t-0002eg-Hz for patchwork-qemu-devel@patchwork.kernel.org; Fri, 07 Dec 2018 20:03:37 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40143) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVQnY-00035l-US for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:48:49 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gVQnV-00015j-Mk for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:48:48 -0500 Received: from esa5.hgst.iphmx.com ([216.71.153.144]:41973) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gVQnV-00015P-Bj; Fri, 07 Dec 2018 19:48:45 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1544230126; x=1575766126; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=3oGiV26nLPZ2WJrmqvCc4oJo0ocGadG/LzTzxN8xiqg=; b=NHYNNc0LFuN0YBF0CoofZcvBAbX8VIXdcXECzlHE+zRlKBQx0H8F7BHr HGGpSGGxKzjPx7T3jMSK7tV5gTel866p9cWL5APUUNoYyN14uOWF5MVsl /VzOuZVlCXY2pQ8IJhdv+SdSKfAbykaLGB0WySSH6VJ5/Iotu7f1w0oIF tpRijlvttagAIwmn+ixio3UoI2rIwnbBJu8U5zhHPwLUuuoDSk8SwL0tt U0NTqCCh6Z+PZFmYQyBW49w4FeZsuNmbdIxd/Blh3ls74LD5eBHqnHNLy ypreXG+w1DWm9r88jXQklelYecgUexnam41HWSqN42ceOEXpzPglegSC6 w==; X-IronPort-AV: E=Sophos;i="5.56,328,1539619200"; d="scan'208";a="97343888" Received: from mail-sn1nam01lp2054.outbound.protection.outlook.com (HELO NAM01-SN1-obe.outbound.protection.outlook.com) ([104.47.32.54]) by ob1.hgst.iphmx.com with ESMTP; 08 Dec 2018 08:48:45 +0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector1-wdc-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=JrAjeZA5O4S488yPwzSnT0UyIvda6GcnOyT/8kS/et4=; b=OrBynks856Aq2Dgv8zCErbEpuiatQZIfoi/PS1ULS6WefUBbxFOpUsVFvnM7Q1kqIORG7gXWtVCaPd4oI3myrqL//R/ZtqPZUGeRCQBRJZeamEFEA5UBR4S7oiV2sGKwrBU7b0YXgMEjkKIK2qVJA2j4Jgo5BJXkxxlOB1ObuFg= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB0304.namprd04.prod.outlook.com (10.169.202.138) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.20; Sat, 8 Dec 2018 00:48:42 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5%9]) with mapi id 15.20.1404.021; Sat, 8 Dec 2018 00:48:42 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [RFC v3 16/24] riscv: tcg-target: Add branch and jump instructions Thread-Index: AQHUjo/EFc8MKJx8qUSf86VB7dnaHQ== Date: Sat, 8 Dec 2018 00:48:42 +0000 Message-ID: <4369495a6e303d93663e99b3c2239c8d2a1eccba.1544229872.git.alistair.francis@wdc.com> References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.19.1 x-clientproxiedby: BYAPR04CA0020.namprd04.prod.outlook.com (2603:10b6:a03:40::33) To MWHPR04MB0401.namprd04.prod.outlook.com (2603:10b6:300:70::18) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Alistair.Francis@wdc.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [199.255.44.250] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; MWHPR04MB0304; 6:FQArYEsc6TNwQimDr2jVTPD37sZtlZ86/QixfYGMEiRc17n0Dk7XgWa/qUyy2HllDXf3nm7Ej2CWX18496y5NTVN8C7LVcFgiohkFvy5wxzDLMR+CAB4l8a3f04Nr9oDzCaSUmCDY+G0MHeMX5ziFmaFI1cQdS8KCyjS64kZLfrOtm9xhBCCs1/6Q3kxEsYABFtImGKeIWeIxWPhUARexalE3ucK8nuFw4hiof9WQN//8pbKgkdxQMDMnLa7Fk9eXlSIbskNU/g7ZdNlH2ROJZSd+yxJwUC4aKP8I+daoT4F8emfvpUgx+UhEm2DywvnWLeq9dY1WQk7uo6Byq9R0WkPtp1EbaKT9a64meNbydevZEUx8w6AcqzIqiomf2V66M8W/C+6+hPJiqWk07wVKvGEX5jWUfjNZ4w3VDWZnOt5Q9GiX2ZujA7bytFiK0zi/rKh8oss+MVHodsJhx9+pA==; 5:grxSwYgoiSjeoVuwa6IzurObNybabX3AIXqF3mwzTGghtsq0Uvrg58whZm1Ulj5dQ76GzydHKUKaIMgKuXpl4U+avEvB8RYUAtBAr89bU3Ybu3gkIO0LM7pc6ZrAYLA8agd2C7wFRULTDhTJSkbirg2VMkUZ7GfiQPkxJ/7cV0Q=; 7:AtGPhaEU/5iyAzXBcTM1vlmqJeS/PWOtTOWy56KUFZzwNLVLAXs/1YkfslyEAowQoml5vZr48p1m8zUvggWawywErn2V9mtbcy7McGcGZsAbplF2Xzq1SAXbfYHD+fhdzmCcyebTn96DBByPkCc+JA== x-ms-office365-filtering-correlation-id: b31c996e-d273-41e8-7072-08d65ca6e69f x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:MWHPR04MB0304; x-ms-traffictypediagnostic: MWHPR04MB0304: wdcipoutbound: EOP-TRUE x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(93001095)(3231455)(999002)(944501520)(52105112)(3002001)(10201501046)(6055026)(148016)(149066)(150057)(6041310)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123558120)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB0304; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB0304; x-forefront-prvs: 0880FB6EC1 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(346002)(396003)(39860400002)(366004)(376002)(136003)(189003)(199004)(54906003)(110136005)(44832011)(386003)(6506007)(5660300001)(68736007)(2906002)(71190400001)(25786009)(71200400001)(86362001)(316002)(99286004)(14454004)(66066001)(102836004)(2501003)(6512007)(53936002)(4326008)(11346002)(6116002)(478600001)(81166006)(81156014)(3846002)(72206003)(8936002)(105586002)(256004)(118296001)(106356001)(39060400002)(446003)(6436002)(36756003)(6486002)(486006)(76176011)(186003)(2616005)(305945005)(26005)(97736004)(52116002)(476003)(50226002)(7736002)(8676002); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB0304; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; x-microsoft-antispam-message-info: 44bU155RgbbdrzS2Bpd9enawxl9TykoS49DCb9MqZTqKA4+gNwSRuALGps+Qxa8wRlvbuDNO2udaVWkg+WjfMbrROJQHwfqwFeCbtwXaSy4YnUnEIsWMCACt9Nqfe7K/mB71Ow8aCIO5bGt5TCS2QEXyIWrI7UuCSj4FoXh36wHxn57M74Yl7WC3KuSpr36KKr7gGqa5LvM3T4/9Aw3NT0pVZvdZPRnsVFxSHBV0rI+RubEpzVFVgksp/3ZmSnDhueA2eVCdf2/RkzQZQJI7JHypONH+D2ms7+2v40rXR+jwQBwieEDUYLgVAAlHtpUUaqJQFw3BDiW2xgxME6ezj30C3vJ0UYY5MfyKSU0uH1k= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: b31c996e-d273-41e8-7072-08d65ca6e69f X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Dec 2018 00:48:42.5481 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB0304 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.144 Subject: [Qemu-devel] [RFC v3 16/24] riscv: tcg-target: Add branch and jump instructions 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: "alistair23@gmail.com" , "richard.henderson@linaro.org" , Alistair Francis 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: Alistair Francis Signed-off-by: Michael Clark Signed-off-by: Richard Henderson --- tcg/riscv/tcg-target.inc.c | 142 +++++++++++++++++++++++++++++++++++++ 1 file changed, 142 insertions(+) diff --git a/tcg/riscv/tcg-target.inc.c b/tcg/riscv/tcg-target.inc.c index 10bd007cd4..a00bbe8ff1 100644 --- a/tcg/riscv/tcg-target.inc.c +++ b/tcg/riscv/tcg-target.inc.c @@ -736,3 +736,145 @@ static void tcg_out_addsub2(TCGContext *s, tcg_out_opc_reg(s, opc_add, rh, th, TCG_REG_TMP0); } } + +static const struct { + RISCVInsn op; + bool swap; +} tcg_brcond_to_riscv[] = { + [TCG_COND_EQ] = { OPC_BEQ, false }, + [TCG_COND_NE] = { OPC_BNE, false }, + [TCG_COND_LT] = { OPC_BLT, false }, + [TCG_COND_GE] = { OPC_BGE, false }, + [TCG_COND_LE] = { OPC_BGE, true }, + [TCG_COND_GT] = { OPC_BLT, true }, + [TCG_COND_LTU] = { OPC_BLTU, false }, + [TCG_COND_GEU] = { OPC_BGEU, false }, + [TCG_COND_LEU] = { OPC_BGEU, true }, + [TCG_COND_GTU] = { OPC_BLTU, true } +}; + +static void tcg_out_brcond(TCGContext *s, TCGCond cond, TCGReg arg1, + TCGReg arg2, TCGLabel *l) +{ + RISCVInsn op = tcg_brcond_to_riscv[cond].op; + + tcg_debug_assert(op != 0); + + if (tcg_brcond_to_riscv[cond].swap) { + TCGReg t = arg1; + arg1 = arg2; + arg2 = t; + } + + if (l->has_value) { + intptr_t diff = tcg_pcrel_diff(s, l->u.value_ptr); + if (diff == sextreg(diff, 0, 12)) { + tcg_out_opc_branch(s, op, arg1, arg2, diff); + } else { + /* Invert the conditional branch. */ + tcg_out_opc_branch(s, op ^ (1 << 12), arg1, arg2, 8); + tcg_out_opc_jump(s, OPC_JAL, TCG_REG_ZERO, diff - 4); + } + } else { + tcg_out_reloc(s, s->code_ptr, R_RISCV_BRANCH, l, 0); + tcg_out_opc_branch(s, op, arg1, arg2, 0); + /* NOP to allow patching later */ + tcg_out_opc_imm(s, OPC_ADDI, TCG_REG_ZERO, TCG_REG_ZERO, 0); + } +} + +static void tcg_out_setcond(TCGContext *s, TCGCond cond, TCGReg ret, + TCGReg arg1, TCGReg arg2) +{ + switch (cond) { + case TCG_COND_EQ: + tcg_out_opc_reg(s, OPC_SUB, ret, arg1, arg2); + tcg_out_opc_imm(s, OPC_SLTIU, ret, ret, 1); + break; + case TCG_COND_NE: + tcg_out_opc_reg(s, OPC_SUB, ret, arg1, arg2); + tcg_out_opc_reg(s, OPC_SLTU, ret, TCG_REG_ZERO, ret); + break; + case TCG_COND_LT: + tcg_out_opc_reg(s, OPC_SLT, ret, arg1, arg2); + break; + case TCG_COND_GE: + tcg_out_opc_reg(s, OPC_SLT, ret, arg1, arg2); + tcg_out_opc_imm(s, OPC_XORI, ret, ret, 1); + break; + case TCG_COND_LE: + tcg_out_opc_reg(s, OPC_SLT, ret, arg2, arg1); + tcg_out_opc_imm(s, OPC_XORI, ret, ret, 1); + break; + case TCG_COND_GT: + tcg_out_opc_reg(s, OPC_SLT, ret, arg2, arg1); + break; + case TCG_COND_LTU: + tcg_out_opc_reg(s, OPC_SLTU, ret, arg1, arg2); + break; + case TCG_COND_GEU: + tcg_out_opc_reg(s, OPC_SLTU, ret, arg1, arg2); + tcg_out_opc_imm(s, OPC_XORI, ret, ret, 1); + break; + case TCG_COND_LEU: + tcg_out_opc_reg(s, OPC_SLTU, ret, arg2, arg1); + tcg_out_opc_imm(s, OPC_XORI, ret, ret, 1); + break; + case TCG_COND_GTU: + tcg_out_opc_reg(s, OPC_SLTU, ret, arg2, arg1); + break; + default: + g_assert_not_reached(); + break; + } +} + +static void tcg_out_brcond2(TCGContext *s, TCGCond cond, TCGReg al, TCGReg ah, + TCGReg bl, TCGReg bh, TCGLabel *l) +{ + /* todo */ + g_assert_not_reached(); +} + +static void tcg_out_setcond2(TCGContext *s, TCGCond cond, TCGReg ret, + TCGReg al, TCGReg ah, TCGReg bl, TCGReg bh) +{ + /* todo */ + g_assert_not_reached(); +} + +static inline void tcg_out_goto(TCGContext *s, tcg_insn_unit *target) +{ + ptrdiff_t offset = tcg_pcrel_diff(s, target); + tcg_debug_assert(offset == sextreg(offset, 1, 20) << 1); + tcg_out_opc_jump(s, OPC_JAL, TCG_REG_ZERO, offset); +} + +static void tcg_out_call_int(TCGContext *s, tcg_insn_unit *arg, bool tail) +{ + TCGReg link = tail ? TCG_REG_ZERO : TCG_REG_RA; + ptrdiff_t offset = tcg_pcrel_diff(s, arg); + if (offset == sextreg(offset, 1, 20) << 1) { + /* short jump: -2097150 to 2097152 */ + tcg_out_opc_jump(s, OPC_JAL, link, offset); + } else if (TCG_TARGET_REG_BITS == 32 || + offset == sextreg(offset, 1, 31) << 1) { + /* long jump: -2147483646 to 2147483648 */ + tcg_out_opc_upper(s, OPC_AUIPC, TCG_REG_TMP0, 0); + tcg_out_opc_imm(s, OPC_JALR, link, TCG_REG_TMP0, 0); + reloc_call(s->code_ptr - 2, arg); + } else if (TCG_TARGET_REG_BITS == 64) { + /* far jump: 64-bit */ + tcg_target_long imm = sextreg((tcg_target_long)arg, 0, 12); + tcg_target_long base = (tcg_target_long)arg - imm; + tcg_out_movi(s, TCG_TYPE_PTR, TCG_REG_TMP0, base); + tcg_out_opc_imm(s, OPC_JALR, link, TCG_REG_TMP0, imm); + } else { + g_assert_not_reached(); + } +} + +static void tcg_out_call(TCGContext *s, tcg_insn_unit *arg) +{ + tcg_out_call_int(s, arg, false); +} From patchwork Sat Dec 8 00:48:51 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 10719075 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id DB72815A6 for ; Sat, 8 Dec 2018 01:00:39 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C9AA02DD6F for ; Sat, 8 Dec 2018 01:00:39 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id BD9732DD8A; Sat, 8 Dec 2018 01:00:39 +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=-7.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI 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 D7D4E2DD7B for ; Sat, 8 Dec 2018 01:00:38 +0000 (UTC) Received: from localhost ([::1]:48592 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVQz0-0005hb-5L for patchwork-qemu-devel@patchwork.kernel.org; Fri, 07 Dec 2018 20:00:38 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40240) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVQni-0003CE-Ik for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:49:00 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gVQnf-0001AC-77 for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:48:58 -0500 Received: from esa5.hgst.iphmx.com ([216.71.153.144]:41992) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gVQne-00019t-RY; Fri, 07 Dec 2018 19:48:55 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1544230136; x=1575766136; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=2I/5/jioIo0xz+N1LcZxy2pLjaMUXNuaR4pFbfFsGW4=; b=MswR5Yv0wl1JjaRAHnCNJdj/3KjeIazVHEl96dAH25iKY+aFB4pp7LWL fEekh5e8zNbvK8eXjsFt/D0Pzrl0m2qSnCkj3flhMwjKOXgYmFsizxlzO R+14z2uNQ8L1dO5xtBFXjiONv6h662qPIqnxP9O18qC8vdjVA8S0/1vjg 3OLqhwrHdI47RSUfUl3e7Wg1zZReOIUcTsGmTle6NwvBvu6pY7biSZsCb j/cX4XqnuQZvfRnjh6iSamPFcTqf++m1cN//JqKmDMD7R07h9+H3imPZu jJQQLOwrB8iJs/7+3N+mmWGVt7jCfaYAJkqEMTp3PBLHwpWijNKi0OP2X w==; X-IronPort-AV: E=Sophos;i="5.56,328,1539619200"; d="scan'208";a="97343908" Received: from mail-sn1nam01lp2051.outbound.protection.outlook.com (HELO NAM01-SN1-obe.outbound.protection.outlook.com) ([104.47.32.51]) by ob1.hgst.iphmx.com with ESMTP; 08 Dec 2018 08:48:54 +0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector1-wdc-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DgTtvyxOfD7n5OHsKDJwOMkG8ROEn3ZjN8xZaJocq64=; b=IGMd2HnB9oUUCBq7IngwLk+a8Fz5VpFTIkNCGOzolK2Kbg77kiQtFHUEsAd5+i/bgNvX6iKMfUff2UATz0z5/uk+A1oZH4ccN56bFFkvvD7m/awIzUBcIZeUj7gUtkrXvOH+i1gJ18aso5lkAWXVWGxrqPsmSbWEAM9rLua990g= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB0304.namprd04.prod.outlook.com (10.169.202.138) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.20; Sat, 8 Dec 2018 00:48:51 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5%9]) with mapi id 15.20.1404.021; Sat, 8 Dec 2018 00:48:51 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [RFC v3 17/24] riscv: tcg-target: Add slowpath load and store instructions Thread-Index: AQHUjo/J9I53cmioSEKzl0bnlWrgxg== Date: Sat, 8 Dec 2018 00:48:51 +0000 Message-ID: <989024c7cf2a45f6e4a7d793f7760c90e1b36e45.1544229872.git.alistair.francis@wdc.com> References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.19.1 x-clientproxiedby: BYAPR04CA0020.namprd04.prod.outlook.com (2603:10b6:a03:40::33) To MWHPR04MB0401.namprd04.prod.outlook.com (2603:10b6:300:70::18) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Alistair.Francis@wdc.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [199.255.44.250] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; MWHPR04MB0304; 6:qJ9DFTgko0TgnZnRWd7cXzo+jVU5rdySWpvxU4g9tlm/x9wpCKtu5gTHLrZu9j2jQ5eVqKOpp6UAv2umW3i7Zc1QVm4X1qN+zk877a6TC6tJxy/DMP5x0dqxq2eVeqY9KN7kfQiC+VS/3384CXpdQ/RX+3kzyiHZlbmveyxhUUyaIze7BMqOKSS1hcJni7n4uOLk9QHgBTv6CBUqD7NT1yT0clgKIj2piTUkLEfjqwhBicYBXbhYLkQ0TFbVfPk0KL4rAGE34ghak9IUY8CDNCcqx7hpEnvjTfyZeEcdIzDaEfP2EubUpW64pADHufiueU7uxWAxXXhxAY8J4qODJNYAvzc4ziZBTohYsamafjD7WMO3DVWm42TKg7Yak/AgW7zsg6z/1cDnRNm9hDn3b2nmzluuuquRUB7hWW1rk04GAdFw1nxWb78H1HnSCqaKS+Z1HMkKv2JSiu5agwTgzQ==; 5:ACaUg54Yzmg2goJTQWwa4rrqaAHTSWPZGKTg8Ocgo2d4UltTSxqJwlnShsdb0Eg/8qsYNHJaS5mhGNdcD+gqzpb/I+PrpVj5xGeNknfT7LaG+u5DELy5TbfFjDAbbKddVVMdF3RqP/wyYcV+lzDmZWpxmJgtDNXKNo/PN53TatY=; 7:reUARGCNrtLQDmPQ4JWZQVb3zQ4MyfaEtPo7R9OMW88LC1Yz7TkMNmn8UibCK2Z10buxqTPU4skaPOZvDXo4Gl8lGEcVqJwYYWt+T/zRBxePl61SURNhl0wEP1i33HGORVfJwh0EEVjjpcJeuMcnFQ== x-ms-office365-filtering-correlation-id: 5a6f446f-36e7-4319-ee80-08d65ca6ec18 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:MWHPR04MB0304; x-ms-traffictypediagnostic: MWHPR04MB0304: wdcipoutbound: EOP-TRUE x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(93001095)(3231455)(999002)(944501520)(52105112)(3002001)(10201501046)(6055026)(148016)(149066)(150057)(6041310)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123558120)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB0304; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB0304; x-forefront-prvs: 0880FB6EC1 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(346002)(396003)(39860400002)(366004)(376002)(136003)(189003)(199004)(54906003)(110136005)(44832011)(386003)(6506007)(5660300001)(68736007)(2906002)(71190400001)(25786009)(71200400001)(86362001)(316002)(99286004)(14454004)(6306002)(66066001)(102836004)(2501003)(6512007)(53936002)(4326008)(11346002)(6116002)(478600001)(81166006)(81156014)(3846002)(72206003)(8936002)(105586002)(256004)(118296001)(106356001)(39060400002)(446003)(6436002)(36756003)(6486002)(486006)(76176011)(186003)(2616005)(305945005)(26005)(97736004)(52116002)(476003)(50226002)(7736002)(966005)(8676002); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB0304; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; x-microsoft-antispam-message-info: HMm/XcJenuagAoyvOOJt2qQ5dcZdC9LUzsbsF25Ehd3LB6xSt82GZiFcuy7UHunwK38Dbp8m4IxopIsNLbVgRQbF4fu3Zfx62YllHJiQCj9uLCv2dMxsOlFCrsFQ7+SdU6S/ZihopCu3qxAvj4fxp0CfzTdePIEzvPLu9uuOc07Ikdr4DtomB9Eupr4ervkgOM9HOPCsKiP6HNnXf2Jh9+CiE0wBuS7hw/fKrVmOQulHBys2i+I/EF+e3/XQdpW8lGAP017Y6Nrfgu2KqvnenTbl/SLXAAoYquYv4uZtOl8gWVv+/h3RUyUX50ETsVkC2r9wX7E47Sl5HmrxLNXZRVIJyH4bbrcCJ8T9RThyMfg= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5a6f446f-36e7-4319-ee80-08d65ca6ec18 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Dec 2018 00:48:51.7439 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB0304 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.144 Subject: [Qemu-devel] [RFC v3 17/24] riscv: tcg-target: Add slowpath load and store instructions 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: "alistair23@gmail.com" , "richard.henderson@linaro.org" , Alistair Francis 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: Alistair Francis Signed-off-by: Michael Clark Signed-off-by: Richard Henderson --- tcg/riscv/tcg-target.inc.c | 254 +++++++++++++++++++++++++++++++++++++ 1 file changed, 254 insertions(+) diff --git a/tcg/riscv/tcg-target.inc.c b/tcg/riscv/tcg-target.inc.c index a00bbe8ff1..9d07d5ecde 100644 --- a/tcg/riscv/tcg-target.inc.c +++ b/tcg/riscv/tcg-target.inc.c @@ -878,3 +878,257 @@ static void tcg_out_call(TCGContext *s, tcg_insn_unit *arg) { tcg_out_call_int(s, arg, false); } + +static void tcg_out_mb(TCGContext *s, TCGArg a0) +{ + tcg_insn_unit insn = OPC_FENCE; + + if (a0 & TCG_MO_LD_LD) { + insn |= 0x02200000; + } + if (a0 & TCG_MO_ST_LD) { + insn |= 0x01200000; + } + if (a0 & TCG_MO_LD_ST) { + insn |= 0x02100000; + } + if (a0 & TCG_MO_ST_ST) { + insn |= 0x02200000; + } + tcg_out32(s, insn); +} + +/* + * Load/store and TLB + */ + +#if defined(CONFIG_SOFTMMU) +#include "tcg-ldst.inc.c" + +/* helper signature: helper_ret_ld_mmu(CPUState *env, target_ulong addr, + * TCGMemOpIdx oi, uintptr_t ra) + */ +static void * const qemu_ld_helpers[16] = { + [MO_UB] = helper_ret_ldub_mmu, + [MO_SB] = helper_ret_ldsb_mmu, + [MO_LEUW] = helper_le_lduw_mmu, + [MO_LESW] = helper_le_ldsw_mmu, + [MO_LEUL] = helper_le_ldul_mmu, +#if TCG_TARGET_REG_BITS == 64 + [MO_LESL] = helper_le_ldsl_mmu, +#endif + [MO_LEQ] = helper_le_ldq_mmu, + [MO_BEUW] = helper_be_lduw_mmu, + [MO_BESW] = helper_be_ldsw_mmu, + [MO_BEUL] = helper_be_ldul_mmu, +#if TCG_TARGET_REG_BITS == 64 + [MO_BESL] = helper_be_ldsl_mmu, +#endif + [MO_BEQ] = helper_be_ldq_mmu, +}; + +/* helper signature: helper_ret_st_mmu(CPUState *env, target_ulong addr, + * uintxx_t val, TCGMemOpIdx oi, + * uintptr_t ra) + */ +static void * const qemu_st_helpers[16] = { + [MO_UB] = helper_ret_stb_mmu, + [MO_LEUW] = helper_le_stw_mmu, + [MO_LEUL] = helper_le_stl_mmu, + [MO_LEQ] = helper_le_stq_mmu, + [MO_BEUW] = helper_be_stw_mmu, + [MO_BEUL] = helper_be_stl_mmu, + [MO_BEQ] = helper_be_stq_mmu, +}; + +static void tcg_out_tlb_load(TCGContext *s, TCGReg addrl, + TCGReg addrh, TCGMemOpIdx oi, + tcg_insn_unit **label_ptr, bool is_load) +{ + TCGMemOp opc = get_memop(oi); + unsigned s_bits = opc & MO_SIZE; + unsigned a_bits = get_alignment_bits(opc); + target_ulong mask; + int mem_index = get_mmuidx(oi); + int cmp_off + = (is_load + ? offsetof(CPUArchState, tlb_table[mem_index][0].addr_read) + : offsetof(CPUArchState, tlb_table[mem_index][0].addr_write)); + int add_off = offsetof(CPUArchState, tlb_table[mem_index][0].addend); + RISCVInsn load_cmp_op = (TARGET_LONG_BITS == 64 ? OPC_LD : + TCG_TARGET_REG_BITS == 64 ? OPC_LWU : OPC_LW); + RISCVInsn load_add_op = TCG_TARGET_REG_BITS == 64 ? OPC_LD : OPC_LW; + TCGReg base = TCG_AREG0; + + /* We don't support oversize guests */ + if (TCG_TARGET_REG_BITS < TARGET_LONG_BITS) { + g_assert_not_reached(); + } + + /* We don't support unaligned accesses. */ + if (a_bits < s_bits) { + a_bits = s_bits; + } + mask = (target_ulong)TARGET_PAGE_MASK | ((1 << a_bits) - 1); + + + /* Compensate for very large offsets. */ + if (add_off >= 0x1000) { + int adj; + base = TCG_REG_TMP2; + if (cmp_off <= 2 * 0xfff) { + adj = 0xfff; + tcg_out_opc_imm(s, OPC_ADDI, base, TCG_AREG0, adj); + } else { + adj = cmp_off - sextreg(cmp_off, 0, 12); + tcg_debug_assert(add_off - adj >= -0x1000 + && add_off - adj < 0x1000); + + tcg_out_opc_upper(s, OPC_LUI, base, adj); + tcg_out_opc_reg(s, OPC_ADD, base, base, TCG_AREG0); + } + add_off -= adj; + cmp_off -= adj; + } + + /* Extract the page index. */ + if (CPU_TLB_BITS + CPU_TLB_ENTRY_BITS < 12) { + tcg_out_opc_imm(s, OPC_SRLI, TCG_REG_TMP0, addrl, + TARGET_PAGE_BITS - CPU_TLB_ENTRY_BITS); + tcg_out_opc_imm(s, OPC_ANDI, TCG_REG_TMP0, TCG_REG_TMP0, + MAKE_64BIT_MASK(CPU_TLB_ENTRY_BITS, CPU_TLB_BITS)); + } else if (TARGET_PAGE_BITS >= 12) { + tcg_out_opc_upper(s, OPC_LUI, TCG_REG_TMP0, + MAKE_64BIT_MASK(TARGET_PAGE_BITS, CPU_TLB_BITS)); + tcg_out_opc_reg(s, OPC_AND, TCG_REG_TMP0, TCG_REG_TMP0, addrl); + tcg_out_opc_imm(s, OPC_SRLI, TCG_REG_TMP0, TCG_REG_TMP0, + CPU_TLB_BITS - CPU_TLB_ENTRY_BITS); + } else { + tcg_out_opc_imm(s, OPC_SRLI, TCG_REG_TMP0, addrl, TARGET_PAGE_BITS); + tcg_out_opc_imm(s, OPC_ANDI, TCG_REG_TMP0, TCG_REG_TMP0, + MAKE_64BIT_MASK(0, CPU_TLB_BITS)); + tcg_out_opc_imm(s, OPC_SLLI, TCG_REG_TMP0, TCG_REG_TMP0, + CPU_TLB_ENTRY_BITS); + } + + /* Add that to the base address to index the tlb. */ + tcg_out_opc_reg(s, OPC_ADD, TCG_REG_TMP2, base, TCG_REG_TMP0); + base = TCG_REG_TMP2; + + /* Load the tlb comparator and the addend. */ + tcg_out_ldst(s, load_cmp_op, TCG_REG_TMP0, base, cmp_off); + tcg_out_ldst(s, load_add_op, TCG_REG_TMP2, base, add_off); + + /* Clear the non-page, non-alignment bits from the address. */ + if (mask == sextreg(mask, 0, 12)) { + tcg_out_opc_imm(s, OPC_ANDI, TCG_REG_TMP1, addrl, mask); + } else { + tcg_out_movi(s, TCG_TYPE_REG, TCG_REG_TMP1, mask); + tcg_out_opc_reg(s, OPC_AND, TCG_REG_TMP1, TCG_REG_TMP1, addrl); + } + + /* Compare masked address with the TLB entry. */ + label_ptr[0] = s->code_ptr; + tcg_out_opc_branch(s, OPC_BNE, TCG_REG_TMP0, TCG_REG_TMP1, 0); + /* TODO: Move this out of line + * see: + * https://lists.nongnu.org/archive/html/qemu-devel/2018-11/msg02234.html + */ + + /* TLB Hit - translate address using addend. */ + if (TCG_TARGET_REG_BITS > TARGET_LONG_BITS) { + tcg_out_ext32u(s, TCG_REG_TMP0, addrl); + addrl = TCG_REG_TMP0; + } + tcg_out_opc_reg(s, OPC_ADD, TCG_REG_TMP0, TCG_REG_TMP2, addrl); +} + +static void add_qemu_ldst_label(TCGContext *s, int is_ld, TCGMemOpIdx oi, + TCGType ext, + TCGReg datalo, TCGReg datahi, + TCGReg addrlo, TCGReg addrhi, + void *raddr, tcg_insn_unit **label_ptr) +{ + TCGLabelQemuLdst *label = new_ldst_label(s); + + label->is_ld = is_ld; + label->oi = oi; + label->type = ext; + label->datalo_reg = datalo; + label->datahi_reg = datahi; + label->addrlo_reg = addrlo; + label->addrhi_reg = addrhi; + label->raddr = raddr; + label->label_ptr[0] = label_ptr[0]; +} + +static void tcg_out_qemu_ld_slow_path(TCGContext *s, TCGLabelQemuLdst *l) +{ + TCGMemOpIdx oi = l->oi; + TCGMemOp opc = get_memop(oi); + TCGReg a0 = tcg_target_call_iarg_regs[0]; + TCGReg a1 = tcg_target_call_iarg_regs[1]; + TCGReg a2 = tcg_target_call_iarg_regs[2]; + TCGReg a3 = tcg_target_call_iarg_regs[3]; + + /* We don't support oversize guests */ + if (TCG_TARGET_REG_BITS < TARGET_LONG_BITS) { + g_assert_not_reached(); + } + + /* resolve label address */ + reloc_sbimm12(l->label_ptr[0], s->code_ptr); + + /* call load helper */ + tcg_out_mov(s, TCG_TYPE_PTR, a0, TCG_AREG0); + tcg_out_mov(s, TCG_TYPE_PTR, a1, l->addrlo_reg); + tcg_out_movi(s, TCG_TYPE_PTR, a2, oi); + tcg_out_movi(s, TCG_TYPE_PTR, a3, (tcg_target_long)l->raddr); + + tcg_out_call(s, qemu_ld_helpers[opc & (MO_BSWAP | MO_SSIZE)]); + tcg_out_mov(s, (opc & MO_SIZE) == MO_64, l->datalo_reg, a0); + + tcg_out_goto(s, l->raddr); +} + +static void tcg_out_qemu_st_slow_path(TCGContext *s, TCGLabelQemuLdst *l) +{ + TCGMemOpIdx oi = l->oi; + TCGMemOp opc = get_memop(oi); + TCGMemOp s_bits = opc & MO_SIZE; + TCGReg a0 = tcg_target_call_iarg_regs[0]; + TCGReg a1 = tcg_target_call_iarg_regs[1]; + TCGReg a2 = tcg_target_call_iarg_regs[2]; + TCGReg a3 = tcg_target_call_iarg_regs[3]; + TCGReg a4 = tcg_target_call_iarg_regs[4]; + + /* We don't support oversize guests */ + if (TCG_TARGET_REG_BITS < TARGET_LONG_BITS) { + g_assert_not_reached(); + } + + /* resolve label address */ + reloc_sbimm12(l->label_ptr[0], s->code_ptr); + + /* call store helper */ + tcg_out_mov(s, TCG_TYPE_PTR, a0, TCG_AREG0); + tcg_out_mov(s, TCG_TYPE_PTR, a1, l->addrlo_reg); + tcg_out_mov(s, TCG_TYPE_PTR, a2, l->datalo_reg); + switch (s_bits) { + case MO_8: + tcg_out_ext8u(s, a2, a2); + break; + case MO_16: + tcg_out_ext16u(s, a2, a2); + break; + default: + break; + } + tcg_out_movi(s, TCG_TYPE_PTR, a3, oi); + tcg_out_movi(s, TCG_TYPE_PTR, a4, (tcg_target_long)l->raddr); + + tcg_out_call(s, qemu_st_helpers[opc & (MO_BSWAP | MO_SSIZE)]); + + tcg_out_goto(s, l->raddr); +} +#endif /* CONFIG_SOFTMMU */ From patchwork Sat Dec 8 00:49:01 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 10719083 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 458D81750 for ; Sat, 8 Dec 2018 01:04:25 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 346B72DE48 for ; Sat, 8 Dec 2018 01:04:25 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 28CBE2DE4E; Sat, 8 Dec 2018 01:04:25 +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=-7.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI 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 813B52DE48 for ; Sat, 8 Dec 2018 01:04:24 +0000 (UTC) Received: from localhost ([::1]:48619 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVR2d-0003Jq-Cj for patchwork-qemu-devel@patchwork.kernel.org; Fri, 07 Dec 2018 20:04:23 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40336) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVQns-0003L2-RK for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:49:11 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gVQnp-0001F8-Ib for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:49:08 -0500 Received: from esa5.hgst.iphmx.com ([216.71.153.144]:42005) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gVQno-0001EI-W8; Fri, 07 Dec 2018 19:49:05 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1544230146; x=1575766146; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=wM+EKt3q9F/PQXRZk+HLzILIrX6hY5ik+v94jK2Lo/s=; b=ofC6Vrq9jmUNZC8HgkzApT0fEBKYJah9h56tamRZrMbAvGmRIlZL1ELF Fyu4PpRcR0/5xb0lgYoidbwSUZ1J87YZUtdkenum5S3S2nLG0voBcFK7V MA4s5Tr+AY/se5ryf9b8x32cl6kd8Nycy6YWrpLsduvTJFOp6qGcaFmJI yvr+0Vvktvlk0VEAqHBDN1qZDfOWUBBGxuyqj9+zsCGoUH5At2r81GQa6 AhR4ubXv6Qfcf/PSihHkFVoT422WvNBkqiXuf81cynDN60sInWe0F50SL 7Sq3z1jh1xF6cWbfyRlPQpRfbed64tteRCG6ESci3LXTcRO/S8fYYAu+J Q==; X-IronPort-AV: E=Sophos;i="5.56,328,1539619200"; d="scan'208";a="97343920" Received: from mail-sn1nam01lp2057.outbound.protection.outlook.com (HELO NAM01-SN1-obe.outbound.protection.outlook.com) ([104.47.32.57]) by ob1.hgst.iphmx.com with ESMTP; 08 Dec 2018 08:49:04 +0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector1-wdc-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1T1pNVD4whFR58GL2UG8mjOT0A49IB5duqnHyjfqLOY=; b=QZ4qABV54v/peiJkkdlis9y3anJoQFQ+OnwTQjm/QzUuzNIsKySJG3OPU9yZ66vp0XryNJZJI+op+4Crq3kwnyxPJA7NwKoqG39xATat0hIctFBy8axjoENVFWyQS/5LyaBDeBAGuYAs1knknHi2Yn2pdby2cIgZlzdsfUzxV40= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB0304.namprd04.prod.outlook.com (10.169.202.138) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.20; Sat, 8 Dec 2018 00:49:02 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5%9]) with mapi id 15.20.1404.021; Sat, 8 Dec 2018 00:49:02 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [RFC v3 18/24] riscv: tcg-target: Add direct load and store instructions Thread-Index: AQHUjo/PDE74pUAMSU+EhX3hXisryw== Date: Sat, 8 Dec 2018 00:49:01 +0000 Message-ID: <1f6b3d26810eb969cf90f0ee978fe2817e6e6421.1544229872.git.alistair.francis@wdc.com> References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.19.1 x-clientproxiedby: BYAPR04CA0011.namprd04.prod.outlook.com (2603:10b6:a03:40::24) To MWHPR04MB0401.namprd04.prod.outlook.com (2603:10b6:300:70::18) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Alistair.Francis@wdc.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [199.255.44.250] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; MWHPR04MB0304; 6:DShM7qkii38Ox4rDL3B84ZMAqVXN+lcNinYXUIwWjWhzzelSDLO4nH+6xlmkPtQhElgZ67+U+SNn7fj4K5OeOTM0UpguhRH4q+Q8qZA4AWSOaYIN8h1DeppQNBDumQ1rT5PAFtC8j2rgm+FR2tCiuA2BlmcSIvE0lnlMGwbCKd58VRmR0Bv5/I3BdUs0unlxYaae9Q0TU2lNYUX+vQuYymFK5+CKpfw/rSBcJBLRozb4Y8crnXUJ1RqKPJMz7HzCf3x2FiC/r8GB8SIvPNXEkJ4XiyuZ4sxajFgz3RyRfAVuwn1ze4SoBg8iOoIRX0eeiK8dQZz1ztPPld7KZC6huAeyNDn2ALjpbahrs7Tab/CLieN5aNiYmzYUKAGtr0fkc3jMD/l4T41bz7vYmgK00tWdGHU/PPzTTFkqWu40p3mbHgGJC9ubXBZT6rJB7yvPlNbxvrxKiiVqjyxHPWZzug==; 5:8XPN5wAkux3upNNMomCqFO7p6SRjWiMqb2sP9bH8SCkNNBnTyjurrd782oQFf+fwySLW/hXSoUPeHdi4OaDTOhouSz8JrPQNs9zoh38DEM5mAx/hr7I7FYacBz97q1qjwHlsQdMSCafy69kGEr96a4ggMpxmzT9QewgcN7Bf2a8=; 7:IYsGdHFRAG1KKEcQDyamxjCgiN9ARVQX/TO/p/pNG4+nK930FgcpvaQU7nj9fkMX2VKA3jXcZCiGnWC2iKfxQruyNlI6RvITRxGiuRNO2NriJq0+oQxqUgF06h+Zzg8nnReRAcCMjdlgD6TA8WVcgQ== x-ms-office365-filtering-correlation-id: a09bb442-c4cc-48db-f97b-08d65ca6f22c x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:MWHPR04MB0304; x-ms-traffictypediagnostic: MWHPR04MB0304: wdcipoutbound: EOP-TRUE x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(93001095)(3231455)(999002)(944501520)(52105112)(3002001)(10201501046)(6055026)(148016)(149066)(150057)(6041310)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123558120)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB0304; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB0304; x-forefront-prvs: 0880FB6EC1 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(979002)(346002)(396003)(39860400002)(366004)(376002)(136003)(189003)(199004)(54906003)(110136005)(44832011)(386003)(6506007)(5660300001)(68736007)(2906002)(71190400001)(25786009)(71200400001)(86362001)(316002)(99286004)(14454004)(66066001)(102836004)(2501003)(6512007)(53936002)(4326008)(11346002)(6116002)(478600001)(81166006)(81156014)(3846002)(72206003)(8936002)(105586002)(256004)(118296001)(106356001)(39060400002)(446003)(6436002)(36756003)(6486002)(486006)(76176011)(186003)(2616005)(305945005)(26005)(97736004)(52116002)(476003)(50226002)(7736002)(8676002)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB0304; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; x-microsoft-antispam-message-info: VmTpZyme1PUal5TNPS6+DX/id7EpBM6y1nhVp4JYe1lg3Qe+ImHuppJahFtdT5AJQOrzbOf5E7khx3cfnwqooRgT26/yrcLEXUaKZ9XvIcuoVvOyMysW6MD58pHbEArvMaLLEJ8HHgRW28GCHG0ym1qGnmNhd0Q1Wh2NVC8VoMjJIuvc23BvugsQyFbOosUWmff+d5yDc0TTR5LeBsZr0xqG29axsd5evatb/fqDwFZW5/IjYevQMcxkiG6vs9qmth3uNEMM1gcrrc4bM5V960gmudg8Ui5bGWFpBzMKl7tsYzLxzhcISwdd+5M0ESHdnURExPA6GdYuyxJl88wpgOh3gzXGlLWvzofRAEFI9po= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: a09bb442-c4cc-48db-f97b-08d65ca6f22c X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Dec 2018 00:49:01.9045 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB0304 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.144 Subject: [Qemu-devel] [RFC v3 18/24] riscv: tcg-target: Add direct load and store instructions 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: "alistair23@gmail.com" , "richard.henderson@linaro.org" , Alistair Francis 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: Alistair Francis Signed-off-by: Michael Clark Reviewed-by: Richard Henderson --- tcg/riscv/tcg-target.inc.c | 158 +++++++++++++++++++++++++++++++++++++ 1 file changed, 158 insertions(+) diff --git a/tcg/riscv/tcg-target.inc.c b/tcg/riscv/tcg-target.inc.c index 9d07d5ecde..280ba699c9 100644 --- a/tcg/riscv/tcg-target.inc.c +++ b/tcg/riscv/tcg-target.inc.c @@ -1132,3 +1132,161 @@ static void tcg_out_qemu_st_slow_path(TCGContext *s, TCGLabelQemuLdst *l) tcg_out_goto(s, l->raddr); } #endif /* CONFIG_SOFTMMU */ + +static void tcg_out_qemu_ld_direct(TCGContext *s, TCGReg lo, TCGReg hi, + TCGReg base, TCGMemOp opc, bool is_64) +{ + const TCGMemOp bswap = opc & MO_BSWAP; + + /* We don't yet handle byteswapping, assert */ + g_assert(!bswap); + + switch (opc & (MO_SSIZE)) { + case MO_UB: + tcg_out_opc_imm(s, OPC_LBU, lo, base, 0); + break; + case MO_SB: + tcg_out_opc_imm(s, OPC_LB, lo, base, 0); + break; + case MO_UW: + tcg_out_opc_imm(s, OPC_LHU, lo, base, 0); + break; + case MO_SW: + tcg_out_opc_imm(s, OPC_LH, lo, base, 0); + break; + case MO_UL: + if (TCG_TARGET_REG_BITS == 64 && is_64) { + tcg_out_opc_imm(s, OPC_LWU, lo, base, 0); + break; + } + /* FALLTHRU */ + case MO_SL: + tcg_out_opc_imm(s, OPC_LW, lo, base, 0); + break; + case MO_Q: + /* Prefer to load from offset 0 first, but allow for overlap. */ + if (TCG_TARGET_REG_BITS == 64) { + tcg_out_opc_imm(s, OPC_LD, lo, base, 0); + } else if (lo != base) { + tcg_out_opc_imm(s, OPC_LW, lo, base, 0); + tcg_out_opc_imm(s, OPC_LW, hi, base, 4); + } else { + tcg_out_opc_imm(s, OPC_LW, hi, base, 4); + tcg_out_opc_imm(s, OPC_LW, lo, base, 0); + } + break; + default: + g_assert_not_reached(); + } +} + +static void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args, bool is_64) +{ + TCGReg addr_regl, addr_regh __attribute__((unused)); + TCGReg data_regl, data_regh; + TCGMemOpIdx oi; + TCGMemOp opc; +#if defined(CONFIG_SOFTMMU) + tcg_insn_unit *label_ptr[1]; +#endif + TCGReg base = TCG_REG_TMP0; + + data_regl = *args++; + data_regh = (TCG_TARGET_REG_BITS == 32 && is_64 ? *args++ : 0); + addr_regl = *args++; + addr_regh = (TCG_TARGET_REG_BITS < TARGET_LONG_BITS ? *args++ : 0); + oi = *args++; + opc = get_memop(oi); + +#if defined(CONFIG_SOFTMMU) + tcg_out_tlb_load(s, addr_regl, addr_regh, oi, label_ptr, 1); + tcg_out_qemu_ld_direct(s, data_regl, data_regh, base, opc, is_64); + add_qemu_ldst_label(s, 1, oi, + (is_64 ? TCG_TYPE_I64 : TCG_TYPE_I32), + data_regl, data_regh, addr_regl, addr_regh, + s->code_ptr, label_ptr); +#else + if (TCG_TARGET_REG_BITS > TARGET_LONG_BITS) { + tcg_out_ext32u(s, base, addr_regl); + addr_regl = base; + } + + if (guest_base == 0) { + tcg_out_opc_reg(s, OPC_ADD, base, addr_regl, TCG_REG_ZERO); + } else { + tcg_out_opc_reg(s, OPC_ADD, base, TCG_GUEST_BASE_REG, addr_regl); + } + tcg_out_qemu_ld_direct(s, data_regl, data_regh, base, opc, is_64); +#endif +} + +static void tcg_out_qemu_st_direct(TCGContext *s, TCGReg lo, TCGReg hi, + TCGReg base, TCGMemOp opc) +{ + const TCGMemOp bswap = opc & MO_BSWAP; + + /* We don't yet handle byteswapping, assert */ + g_assert(!bswap); + + switch (opc & (MO_SSIZE)) { + case MO_8: + tcg_out_opc_store(s, OPC_SB, base, lo, 0); + break; + case MO_16: + tcg_out_opc_store(s, OPC_SH, base, lo, 0); + break; + case MO_32: + tcg_out_opc_store(s, OPC_SW, base, lo, 0); + break; + case MO_64: + if (TCG_TARGET_REG_BITS == 64) { + tcg_out_opc_store(s, OPC_SD, base, lo, 0); + } else { + tcg_out_opc_store(s, OPC_SW, base, lo, 0); + tcg_out_opc_store(s, OPC_SW, base, hi, 4); + } + break; + default: + g_assert_not_reached(); + } +} + +static void tcg_out_qemu_st(TCGContext *s, const TCGArg *args, bool is_64) +{ + TCGReg addr_regl, addr_regh __attribute__((unused)); + TCGReg data_regl, data_regh; + TCGMemOpIdx oi; + TCGMemOp opc; +#if defined(CONFIG_SOFTMMU) + tcg_insn_unit *label_ptr[1]; +#endif + TCGReg base = TCG_REG_TMP0; + + data_regl = *args++; + data_regh = (TCG_TARGET_REG_BITS == 32 && is_64 ? *args++ : 0); + addr_regl = *args++; + addr_regh = (TCG_TARGET_REG_BITS < TARGET_LONG_BITS ? *args++ : 0); + oi = *args++; + opc = get_memop(oi); + +#if defined(CONFIG_SOFTMMU) + tcg_out_tlb_load(s, addr_regl, addr_regh, oi, label_ptr, 0); + tcg_out_qemu_st_direct(s, data_regl, data_regh, base, opc); + add_qemu_ldst_label(s, 0, oi, + (is_64 ? TCG_TYPE_I64 : TCG_TYPE_I32), + data_regl, data_regh, addr_regl, addr_regh, + s->code_ptr, label_ptr); +#else + if (TCG_TARGET_REG_BITS > TARGET_LONG_BITS) { + tcg_out_ext32u(s, base, addr_regl); + addr_regl = base; + } + + if (guest_base == 0) { + tcg_out_opc_reg(s, OPC_ADD, base, addr_regl, TCG_REG_ZERO); + } else { + tcg_out_opc_reg(s, OPC_ADD, base, TCG_GUEST_BASE_REG, addr_regl); + } + tcg_out_qemu_st_direct(s, data_regl, data_regh, base, opc); +#endif +} From patchwork Sat Dec 8 00:49:11 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 10719077 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id CA71F15A6 for ; Sat, 8 Dec 2018 01:00:43 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id B95752DD7B for ; Sat, 8 Dec 2018 01:00:43 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id ADB212DDA7; Sat, 8 Dec 2018 01:00:43 +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=-7.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI 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 A64342DD7B for ; Sat, 8 Dec 2018 01:00:42 +0000 (UTC) Received: from localhost ([::1]:48594 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVQz3-0005lz-SD for patchwork-qemu-devel@patchwork.kernel.org; Fri, 07 Dec 2018 20:00:41 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40410) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVQo3-0003S4-39 for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:49:21 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gVQnz-0001J1-P0 for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:49:19 -0500 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:8264) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gVQnz-0001Ie-Cs; Fri, 07 Dec 2018 19:49:15 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1544230155; x=1575766155; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=DZh2s8W9vMouu1cnYh0SPTyTE1GY1Yug5g8KY9MkxOI=; b=IF45k7/VE8pehyS5rk0zlE5PrRTclJ0ZQvd1U2yN6ZurhqAjLpqnwB+V SdrHMomSwrrJphwWRiwQJkC0EaaK5Ugjx/a79Omd+aj8mYUzBI497V+R9 ZhE13EMFmdatSP6GGNyfvWN+h5JG2Vk4yRqR0/uVhyfhQtykz36UOjfd8 cq1AfXFvb+HpIf4uxQ5vm6vkbzgQpDkHF76H9KpMUkD8YRuymqINhgoOi mbPnJsI1BIMZKe5/5v1ygg7eGSs8copAo+WK+bVDH7qxDR9jOQaHoJMrm x8pd4RTlxTt9N99TYPcpKJAY2qzYrSLv6fDt/4aA6eKmHyTikycMTNSES Q==; X-IronPort-AV: E=Sophos;i="5.56,328,1539619200"; d="scan'208";a="101012183" Received: from mail-bn3nam01lp2052.outbound.protection.outlook.com (HELO NAM01-BN3-obe.outbound.protection.outlook.com) ([104.47.33.52]) by ob1.hgst.iphmx.com with ESMTP; 08 Dec 2018 08:49:13 +0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector1-wdc-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jRbpvy4XJjyDMpPRY5KUKowJsOcBo0qhMsyJzHOwMCA=; b=AHbf8TUFzFQ4sZi/SJVwyy9dJEzL4c0FXTjyNVLsbCGeUJlhTxQmGEsZLRN8PekEjq56LodQsG27xIRJz7LDxOEYmrOjCm1QOSC9/iTduKfEZePrtxrNrnFYusXlGLc3G47k8iOT/qZqsfERj0UTVo/0ES1GJsljbuUK4Mlc4PY= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB1215.namprd04.prod.outlook.com (10.173.52.146) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.21; Sat, 8 Dec 2018 00:49:11 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5%9]) with mapi id 15.20.1404.021; Sat, 8 Dec 2018 00:49:11 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [RFC v3 19/24] riscv: tcg-target: Add the out op decoder Thread-Index: AQHUjo/Vb+SP6OkOqke88KJhkDsKWA== Date: Sat, 8 Dec 2018 00:49:11 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.19.1 x-clientproxiedby: BYAPR04CA0004.namprd04.prod.outlook.com (2603:10b6:a03:40::17) To MWHPR04MB0401.namprd04.prod.outlook.com (2603:10b6:300:70::18) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Alistair.Francis@wdc.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [199.255.44.250] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; MWHPR04MB1215; 6:rlUrXZ6Ij7cl7DPRVRYG2s+ij4oUNoombK4RN8ArnnlkHhY6yu5v0aUB2f79ttX+yYiE/0pt63s/ZXn5iRG3wfbmqcFP8TwPoln0ueWZKT8HoEeQiNMXPuJa6jBG61QNUoRApkqzK6qSkwbXlkfUs1gi8zxKj4uUUC3hgEZ1aPWoWS7r61gZetfbuQO+yv5dY4bwkNERLFW1LTbI7/VEoY31cCdp3ZhBOZ/SGgyzdXKDvCw7/Q3a3IKiHiYQGaYCHhIhBBqB6JwrbyNn7A3TmEiF7RwdnMLQKQNE4wRUQ4RW028z4m5THNHLKxSQX5Zhz3eY42sFdvEV2VbPgYDfaxFHRur3th74qscBupmJN+MinJXSYOtfci5E1R0UaNSnhr8VDf1KwtKUK+ScZEWt2nnym0oFV+Wx+8lHIYZo3nsGCGwhnc/BYMCtBvVw1cCj8WZr8KcogMiGfRiPNASu9A==; 5:OHetTp29p+p8CCYSdBlmAf5r3Pg7P4PYf6W0TDjzL9jKiqsNzanYwk/364AteTlbgK2TarjVHeGPIEvSenTzPzuCEITVxJ81jmjjnHlOJXMB/59D/XnfFtHXqyDS44XTWH8XyRtv6OTlzPGZXIpcHaoSM9MKlbLf4QStWQzNnXY=; 7:/bBkcZG5mv0zdump5e9htAmtajG6VoRl6NdJFNLI+qR71P+6JlMYmCzf/iKeSvdGiLz0NIx1MuOSHRr8KrjBs4GQnEEMO8Et799D+yaSPWSQ7Fk+jtA0dgDlQwoWeQi5UmAVR6CoOZP1E5J33ocZMg== x-ms-office365-filtering-correlation-id: fc35f73d-a534-4e45-7cef-08d65ca6f7cf x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(5600074)(711020)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060)(7193020); SRVR:MWHPR04MB1215; x-ms-traffictypediagnostic: MWHPR04MB1215: wdcipoutbound: EOP-TRUE x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(3002001)(3231455)(999002)(944501520)(52105112)(93006095)(93001095)(6055026)(148016)(149066)(150057)(6041310)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123562045)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB1215; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB1215; x-forefront-prvs: 0880FB6EC1 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(376002)(396003)(346002)(39860400002)(366004)(136003)(189003)(199004)(476003)(44832011)(305945005)(11346002)(7736002)(81156014)(8676002)(3846002)(2616005)(118296001)(5660300001)(106356001)(446003)(81166006)(6116002)(86362001)(486006)(105586002)(6506007)(50226002)(386003)(76176011)(2906002)(8936002)(102836004)(26005)(186003)(52116002)(66066001)(97736004)(2501003)(478600001)(4326008)(54906003)(99286004)(110136005)(68736007)(25786009)(4744004)(256004)(14454004)(39060400002)(71190400001)(71200400001)(6486002)(6512007)(72206003)(36756003)(53936002)(6436002)(53946003)(316002); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB1215; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; x-microsoft-antispam-message-info: luiZqt1FbmfrNZIKavUmpryqlaEbyD7D2B6Q9aJWm3wZ01vS3ChF69tnXoLeis3CYWgcxlm+BZcVT9l2JYQhAwZ1n9AUw47JKEsZzuWpJsdQdEwECbgDYi+St0EHd1AG84HR5bBVFx+B+DgECFgtMqEKkthqG4/gyjrlhOlWWa6e8Yxm+xL/oEXv6GMfKk9VXqwE0IDVxg9IjIPuvrxn+lLzfA4D/rkb26mpIZLDJWOmX/5byC/cQ9jdxr32eV2mMELqApcLGkaXIj402p8R77KeP347iOR6FHXgPaP8FNzDqUoyyFHlXZYmuHOZAAHeGWqik1b8lHdNs5keJR5P4liCkQjMjRQNskluIiL1jrs= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: fc35f73d-a534-4e45-7cef-08d65ca6f7cf X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Dec 2018 00:49:11.4193 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB1215 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.141 Subject: [Qemu-devel] [RFC v3 19/24] riscv: tcg-target: Add the out op decoder 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: "alistair23@gmail.com" , "richard.henderson@linaro.org" , Alistair Francis 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: Alistair Francis Signed-off-by: Michael Clark Signed-off-by: Richard Henderson Reviewed-by: Richard Henderson --- tcg/riscv/tcg-target.inc.c | 493 +++++++++++++++++++++++++++++++++++++ 1 file changed, 493 insertions(+) diff --git a/tcg/riscv/tcg-target.inc.c b/tcg/riscv/tcg-target.inc.c index 280ba699c9..29c8a30a7d 100644 --- a/tcg/riscv/tcg-target.inc.c +++ b/tcg/riscv/tcg-target.inc.c @@ -1290,3 +1290,496 @@ static void tcg_out_qemu_st(TCGContext *s, const TCGArg *args, bool is_64) tcg_out_qemu_st_direct(s, data_regl, data_regh, base, opc); #endif } + +static tcg_insn_unit *tb_ret_addr; + +static void tcg_out_op(TCGContext *s, TCGOpcode opc, + const TCGArg *args, const int *const_args) +{ + TCGArg a0 = args[0]; + TCGArg a1 = args[1]; + TCGArg a2 = args[2]; + int c2 = const_args[2]; + + switch (opc) { + case INDEX_op_exit_tb: + /* Reuse the zeroing that exists for goto_ptr. */ + if (a0 == 0) { + tcg_out_call_int(s, s->code_gen_epilogue, true); + } else { + tcg_out_movi(s, TCG_TYPE_PTR, TCG_REG_A0, a0); + tcg_out_call_int(s, tb_ret_addr, true); + } + break; + + case INDEX_op_goto_tb: + assert(s->tb_jmp_insn_offset == 0); + /* indirect jump method */ + tcg_out_ld(s, TCG_TYPE_PTR, TCG_REG_TMP0, TCG_REG_ZERO, + (uintptr_t)(s->tb_jmp_target_addr + a0)); + tcg_out_opc_imm(s, OPC_JALR, TCG_REG_ZERO, TCG_REG_TMP0, 0); + set_jmp_reset_offset(s, a0); + break; + + case INDEX_op_goto_ptr: + tcg_out_opc_imm(s, OPC_JALR, TCG_REG_ZERO, a0, 0); + break; + + case INDEX_op_br: + tcg_out_reloc(s, s->code_ptr, R_RISCV_JAL, arg_label(a0), 0); + tcg_out_opc_jump(s, OPC_JAL, TCG_REG_ZERO, 0); + break; + + case INDEX_op_ld8u_i32: + case INDEX_op_ld8u_i64: + tcg_out_ldst(s, OPC_LBU, a0, a1, a2); + break; + case INDEX_op_ld8s_i32: + case INDEX_op_ld8s_i64: + tcg_out_ldst(s, OPC_LB, a0, a1, a2); + break; + case INDEX_op_ld16u_i32: + case INDEX_op_ld16u_i64: + tcg_out_ldst(s, OPC_LHU, a0, a1, a2); + break; + case INDEX_op_ld16s_i32: + case INDEX_op_ld16s_i64: + tcg_out_ldst(s, OPC_LH, a0, a1, a2); + break; + case INDEX_op_ld32u_i64: + tcg_out_ldst(s, OPC_LWU, a0, a1, a2); + break; + case INDEX_op_ld_i32: + case INDEX_op_ld32s_i64: + tcg_out_ldst(s, OPC_LW, a0, a1, a2); + break; + case INDEX_op_ld_i64: + tcg_out_ldst(s, OPC_LD, a0, a1, a2); + break; + + case INDEX_op_st8_i32: + case INDEX_op_st8_i64: + tcg_out_ldst(s, OPC_SB, a0, a1, a2); + break; + case INDEX_op_st16_i32: + case INDEX_op_st16_i64: + tcg_out_ldst(s, OPC_SH, a0, a1, a2); + break; + case INDEX_op_st_i32: + case INDEX_op_st32_i64: + tcg_out_ldst(s, OPC_SW, a0, a1, a2); + break; + case INDEX_op_st_i64: + tcg_out_ldst(s, OPC_SD, a0, a1, a2); + break; + + case INDEX_op_add_i32: + if (c2) { + tcg_out_opc_imm(s, OPC_ADDIW, a0, a1, a2); + } else { + tcg_out_opc_reg(s, OPC_ADDW, a0, a1, a2); + } + break; + case INDEX_op_add_i64: + if (c2) { + tcg_out_opc_imm(s, OPC_ADDI, a0, a1, a2); + } else { + tcg_out_opc_reg(s, OPC_ADD, a0, a1, a2); + } + break; + + case INDEX_op_sub_i32: + if (c2) { + tcg_out_opc_imm(s, OPC_ADDIW, a0, a1, -a2); + } else { + tcg_out_opc_reg(s, OPC_SUBW, a0, a1, a2); + } + break; + case INDEX_op_sub_i64: + if (c2) { + tcg_out_opc_imm(s, OPC_ADDI, a0, a1, -a2); + } else { + tcg_out_opc_reg(s, OPC_SUB, a0, a1, a2); + } + break; + + case INDEX_op_and_i32: + case INDEX_op_and_i64: + if (c2) { + tcg_out_opc_imm(s, OPC_ANDI, a0, a1, a2); + } else { + tcg_out_opc_reg(s, OPC_AND, a0, a1, a2); + } + break; + + case INDEX_op_or_i32: + case INDEX_op_or_i64: + if (c2) { + tcg_out_opc_imm(s, OPC_ORI, a0, a1, a2); + } else { + tcg_out_opc_reg(s, OPC_OR, a0, a1, a2); + } + break; + + case INDEX_op_xor_i32: + case INDEX_op_xor_i64: + if (c2) { + tcg_out_opc_imm(s, OPC_XORI, a0, a1, a2); + } else { + tcg_out_opc_reg(s, OPC_XOR, a0, a1, a2); + } + break; + + case INDEX_op_not_i32: + case INDEX_op_not_i64: + tcg_out_opc_imm(s, OPC_XORI, a0, a1, -1); + break; + + case INDEX_op_neg_i32: + tcg_out_opc_reg(s, OPC_SUBW, a0, TCG_REG_ZERO, a1); + break; + case INDEX_op_neg_i64: + tcg_out_opc_imm(s, OPC_SUB, a0, TCG_REG_ZERO, a1); + break; + + case INDEX_op_mul_i32: + tcg_out_opc_reg(s, OPC_MULW, a0, a1, a2); + break; + case INDEX_op_mul_i64: + tcg_out_opc_reg(s, OPC_MUL, a0, a1, a2); + break; + + case INDEX_op_div_i32: + tcg_out_opc_reg(s, OPC_DIVW, a0, a1, a2); + break; + case INDEX_op_div_i64: + tcg_out_opc_reg(s, OPC_DIV, a0, a1, a2); + break; + + case INDEX_op_divu_i32: + tcg_out_opc_reg(s, OPC_DIVUW, a0, a1, a2); + break; + case INDEX_op_divu_i64: + tcg_out_opc_reg(s, OPC_DIVU, a0, a1, a2); + break; + + case INDEX_op_rem_i32: + tcg_out_opc_reg(s, OPC_REMW, a0, a1, a2); + break; + case INDEX_op_rem_i64: + tcg_out_opc_reg(s, OPC_REM, a0, a1, a2); + break; + + case INDEX_op_remu_i32: + tcg_out_opc_reg(s, OPC_REMUW, a0, a1, a2); + break; + case INDEX_op_remu_i64: + tcg_out_opc_reg(s, OPC_REMU, a0, a1, a2); + break; + + case INDEX_op_shl_i32: + if (c2) { + tcg_out_opc_imm(s, OPC_SLLIW, a0, a1, a2); + } else { + tcg_out_opc_reg(s, OPC_SLLW, a0, a1, a2); + } + break; + case INDEX_op_shl_i64: + if (c2) { + tcg_out_opc_imm(s, OPC_SLLI, a0, a1, a2); + } else { + tcg_out_opc_reg(s, OPC_SLL, a0, a1, a2); + } + break; + + case INDEX_op_shr_i32: + if (c2) { + tcg_out_opc_imm(s, OPC_SRLIW, a0, a1, a2); + } else { + tcg_out_opc_reg(s, OPC_SRLW, a0, a1, a2); + } + break; + case INDEX_op_shr_i64: + if (c2) { + tcg_out_opc_imm(s, OPC_SRLI, a0, a1, a2); + } else { + tcg_out_opc_reg(s, OPC_SRL, a0, a1, a2); + } + break; + + case INDEX_op_sar_i32: + if (c2) { + tcg_out_opc_imm(s, OPC_SRAIW, a0, a1, a2); + } else { + tcg_out_opc_reg(s, OPC_SRAW, a0, a1, a2); + } + break; + case INDEX_op_sar_i64: + if (c2) { + tcg_out_opc_imm(s, OPC_SRAI, a0, a1, a2); + } else { + tcg_out_opc_reg(s, OPC_SRA, a0, a1, a2); + } + break; + + case INDEX_op_add2_i32: + tcg_out_addsub2(s, a0, a1, a2, args[3], args[4], args[5], + const_args[4], const_args[5], false, true); + break; + case INDEX_op_add2_i64: + tcg_out_addsub2(s, a0, a1, a2, args[3], args[4], args[5], + const_args[4], const_args[5], false, false); + break; + case INDEX_op_sub2_i32: + tcg_out_addsub2(s, a0, a1, a2, args[3], args[4], args[5], + const_args[4], const_args[5], true, true); + break; + case INDEX_op_sub2_i64: + tcg_out_addsub2(s, a0, a1, a2, args[3], args[4], args[5], + const_args[4], const_args[5], true, false); + break; + + case INDEX_op_brcond_i32: + case INDEX_op_brcond_i64: + tcg_out_brcond(s, a2, a0, a1, arg_label(args[3])); + break; + case INDEX_op_brcond2_i32: + tcg_out_brcond2(s, args[4], a0, a1, a2, args[3], arg_label(args[5])); + break; + + case INDEX_op_setcond_i32: + case INDEX_op_setcond_i64: + tcg_out_setcond(s, args[3], a0, a1, a2); + break; + case INDEX_op_setcond2_i32: + tcg_out_setcond2(s, args[5], a0, a1, a2, args[3], args[4]); + break; + + case INDEX_op_qemu_ld_i32: + tcg_out_qemu_ld(s, args, false); + break; + case INDEX_op_qemu_ld_i64: + tcg_out_qemu_ld(s, args, true); + break; + case INDEX_op_qemu_st_i32: + tcg_out_qemu_st(s, args, false); + break; + case INDEX_op_qemu_st_i64: + tcg_out_qemu_st(s, args, true); + break; + + case INDEX_op_ext8u_i32: + case INDEX_op_ext8u_i64: + tcg_out_ext8u(s, a0, a1); + break; + + case INDEX_op_ext16u_i32: + case INDEX_op_ext16u_i64: + tcg_out_ext16u(s, a0, a1); + break; + + case INDEX_op_ext32u_i64: + case INDEX_op_extu_i32_i64: + tcg_out_ext32u(s, a0, a1); + break; + + case INDEX_op_ext8s_i32: + case INDEX_op_ext8s_i64: + tcg_out_ext8s(s, a0, a1); + break; + + case INDEX_op_ext16s_i32: + case INDEX_op_ext16s_i64: + tcg_out_ext16s(s, a0, a1); + break; + + case INDEX_op_ext32s_i64: + case INDEX_op_extrl_i64_i32: + case INDEX_op_extrh_i64_i32: + case INDEX_op_ext_i32_i64: + tcg_out_ext32s(s, a0, a1); + break; + + case INDEX_op_mulsh_i32: + case INDEX_op_mulsh_i64: + tcg_out_opc_imm(s, OPC_MULH, a0, a1, a2); + break; + + case INDEX_op_muluh_i32: + case INDEX_op_muluh_i64: + tcg_out_opc_imm(s, OPC_MULHU, a0, a1, a2); + break; + + case INDEX_op_mb: + tcg_out_mb(s, a0); + break; + + case INDEX_op_mov_i32: /* Always emitted via tcg_out_mov. */ + case INDEX_op_mov_i64: + case INDEX_op_movi_i32: /* Always emitted via tcg_out_movi. */ + case INDEX_op_movi_i64: + case INDEX_op_call: /* Always emitted via tcg_out_call. */ + default: + g_assert_not_reached(); + } +} + +static const TCGTargetOpDef *tcg_target_op_def(TCGOpcode op) +{ + static const TCGTargetOpDef r + = { .args_ct_str = { "r" } }; + static const TCGTargetOpDef r_r + = { .args_ct_str = { "r", "r" } }; + static const TCGTargetOpDef rZ_r + = { .args_ct_str = { "rZ", "r" } }; + static const TCGTargetOpDef rZ_rZ + = { .args_ct_str = { "rZ", "rZ" } }; + static const TCGTargetOpDef rZ_rZ_rZ_rZ + = { .args_ct_str = { "rZ", "rZ", "rZ", "rZ" } }; + static const TCGTargetOpDef r_r_ri + = { .args_ct_str = { "r", "r", "ri" } }; + static const TCGTargetOpDef r_r_rI + = { .args_ct_str = { "r", "r", "rI" } }; + static const TCGTargetOpDef r_rZ_rN + = { .args_ct_str = { "r", "rZ", "rN" } }; + static const TCGTargetOpDef r_rZ_rZ + = { .args_ct_str = { "r", "rZ", "rZ" } }; + static const TCGTargetOpDef r_rZ_rZ_rZ_rZ + = { .args_ct_str = { "r", "rZ", "rZ", "rZ", "rZ" } }; + static const TCGTargetOpDef r_L + = { .args_ct_str = { "r", "L" } }; + static const TCGTargetOpDef r_r_L + = { .args_ct_str = { "r", "r", "L" } }; + static const TCGTargetOpDef r_L_L + = { .args_ct_str = { "r", "L", "L" } }; + static const TCGTargetOpDef r_r_L_L + = { .args_ct_str = { "r", "r", "L", "L" } }; + static const TCGTargetOpDef LZ_L + = { .args_ct_str = { "LZ", "L" } }; + static const TCGTargetOpDef LZ_L_L + = { .args_ct_str = { "LZ", "L", "L" } }; + static const TCGTargetOpDef LZ_LZ_L + = { .args_ct_str = { "LZ", "LZ", "L" } }; + static const TCGTargetOpDef LZ_LZ_L_L + = { .args_ct_str = { "LZ", "LZ", "L", "L" } }; + static const TCGTargetOpDef r_r_rZ_rZ_rM_rM + = { .args_ct_str = { "r", "r", "rZ", "rZ", "rM", "rM" } }; + + switch (op) { + case INDEX_op_goto_ptr: + return &r; + + case INDEX_op_ld8u_i32: + case INDEX_op_ld8s_i32: + case INDEX_op_ld16u_i32: + case INDEX_op_ld16s_i32: + case INDEX_op_ld_i32: + case INDEX_op_not_i32: + case INDEX_op_neg_i32: + case INDEX_op_ld8u_i64: + case INDEX_op_ld8s_i64: + case INDEX_op_ld16u_i64: + case INDEX_op_ld16s_i64: + case INDEX_op_ld32s_i64: + case INDEX_op_ld32u_i64: + case INDEX_op_ld_i64: + case INDEX_op_not_i64: + case INDEX_op_neg_i64: + case INDEX_op_ext8u_i32: + case INDEX_op_ext8u_i64: + case INDEX_op_ext16u_i32: + case INDEX_op_ext16u_i64: + case INDEX_op_ext32u_i64: + case INDEX_op_extu_i32_i64: + case INDEX_op_ext8s_i32: + case INDEX_op_ext8s_i64: + case INDEX_op_ext16s_i32: + case INDEX_op_ext16s_i64: + case INDEX_op_ext32s_i64: + case INDEX_op_extrl_i64_i32: + case INDEX_op_extrh_i64_i32: + case INDEX_op_ext_i32_i64: + return &r_r; + + case INDEX_op_st8_i32: + case INDEX_op_st16_i32: + case INDEX_op_st_i32: + case INDEX_op_st8_i64: + case INDEX_op_st16_i64: + case INDEX_op_st32_i64: + case INDEX_op_st_i64: + return &rZ_r; + + case INDEX_op_add_i32: + case INDEX_op_and_i32: + case INDEX_op_or_i32: + case INDEX_op_xor_i32: + case INDEX_op_add_i64: + case INDEX_op_and_i64: + case INDEX_op_or_i64: + case INDEX_op_xor_i64: + return &r_r_rI; + + case INDEX_op_sub_i32: + case INDEX_op_sub_i64: + return &r_rZ_rN; + + case INDEX_op_mul_i32: + case INDEX_op_mulsh_i32: + case INDEX_op_muluh_i32: + case INDEX_op_div_i32: + case INDEX_op_divu_i32: + case INDEX_op_rem_i32: + case INDEX_op_remu_i32: + case INDEX_op_setcond_i32: + case INDEX_op_mul_i64: + case INDEX_op_mulsh_i64: + case INDEX_op_muluh_i64: + case INDEX_op_div_i64: + case INDEX_op_divu_i64: + case INDEX_op_rem_i64: + case INDEX_op_remu_i64: + case INDEX_op_setcond_i64: + return &r_rZ_rZ; + + case INDEX_op_shl_i32: + case INDEX_op_shr_i32: + case INDEX_op_sar_i32: + case INDEX_op_shl_i64: + case INDEX_op_shr_i64: + case INDEX_op_sar_i64: + return &r_r_ri; + + case INDEX_op_brcond_i32: + case INDEX_op_brcond_i64: + return &rZ_rZ; + + case INDEX_op_add2_i32: + case INDEX_op_add2_i64: + case INDEX_op_sub2_i32: + case INDEX_op_sub2_i64: + return &r_r_rZ_rZ_rM_rM; + + case INDEX_op_brcond2_i32: + return &rZ_rZ_rZ_rZ; + + case INDEX_op_setcond2_i32: + return &r_rZ_rZ_rZ_rZ; + + case INDEX_op_qemu_ld_i32: + return TARGET_LONG_BITS <= TCG_TARGET_REG_BITS ? &r_L : &r_L_L; + case INDEX_op_qemu_st_i32: + return TARGET_LONG_BITS <= TCG_TARGET_REG_BITS ? &LZ_L : &LZ_L_L; + case INDEX_op_qemu_ld_i64: + return TCG_TARGET_REG_BITS == 64 ? &r_L + : TARGET_LONG_BITS <= TCG_TARGET_REG_BITS ? &r_r_L + : &r_r_L_L; + case INDEX_op_qemu_st_i64: + return TCG_TARGET_REG_BITS == 64 ? &LZ_L + : TARGET_LONG_BITS <= TCG_TARGET_REG_BITS ? &LZ_LZ_L + : &LZ_LZ_L_L; + + default: + return NULL; + } +} From patchwork Sat Dec 8 00:49:21 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 10719085 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id C6F771750 for ; Sat, 8 Dec 2018 01:04:32 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id B421D2DE48 for ; Sat, 8 Dec 2018 01:04:32 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id A608A2DE4E; Sat, 8 Dec 2018 01:04:32 +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=-7.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI 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 0EA1F2DE48 for ; Sat, 8 Dec 2018 01:04:32 +0000 (UTC) Received: from localhost ([::1]:48620 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVR2l-0003Od-7X for patchwork-qemu-devel@patchwork.kernel.org; Fri, 07 Dec 2018 20:04:31 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40462) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVQoC-0003ZE-1a for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:49:31 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gVQo8-0001Kx-O6 for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:49:27 -0500 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:26489) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gVQo8-0001KZ-Ce; Fri, 07 Dec 2018 19:49:24 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1544230165; x=1575766165; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=21HCjeb86c8M/xrZP7fm+YwyEBbXf+SBhqQCUVPsJXY=; b=mwA+HH2kXwf4MkxVW+lqkf9+FrCJ+EZvYh+P1SViXrx+uAem4DpFiWvi i7b6d9NCmW9HbOFdUhdJDXEXwzmHf62jcn+RRbpGbbFgopChzBo/unzwJ TEju3fDko0iKM35gEGe9UL0zGLEOca9w5wNGIDs4FqH4ntqCoW4+kmptW U+SH1ojA74y+/Kpc9a79AYyiTx4i9QT16pUu49oM6cSMJ/tdtjDx5uS5a i5CdClfyeSlc09GGg3Qds7pVns2HtwZeikghC2zI8NJU6IHOKl/A6jaa5 DybGreQ5kjn+0Vp+KvBDVX2XwR2Mw71FRyjRDMmXTYm3pkjfwkJ+qVvCZ Q==; X-IronPort-AV: E=Sophos;i="5.56,328,1539619200"; d="scan'208";a="96116914" Received: from mail-by2nam03lp2057.outbound.protection.outlook.com (HELO NAM03-BY2-obe.outbound.protection.outlook.com) ([104.47.42.57]) by ob1.hgst.iphmx.com with ESMTP; 08 Dec 2018 08:49:23 +0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector1-wdc-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=4ErIcpqB4ud/275GBDWDej5mv5tx3rSniioxOI5wD4w=; b=Fh+7yuihlGj1Eg7XAai4iMix7uB2qrAPKAzehrDOlhGXr3KT1dP1k+iadW724BM/sokpVkxE8irHtJHFFpwKaDLqz3T6mujjlPCCZVSQUbby6g0NQoQmJyAGIy8uHr0V5z9xvx8xvPhWeZ0IfSw/Lb1fM0/DSwQWYX9Rgd2+Uoc= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB1215.namprd04.prod.outlook.com (10.173.52.146) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.21; Sat, 8 Dec 2018 00:49:21 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5%9]) with mapi id 15.20.1404.021; Sat, 8 Dec 2018 00:49:21 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [RFC v3 20/24] riscv: tcg-target: Add the prologue generation and register the JIT Thread-Index: AQHUjo/bMa9GS4i4gU2zCwyHrtdt8Q== Date: Sat, 8 Dec 2018 00:49:21 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.19.1 x-clientproxiedby: BYAPR04CA0003.namprd04.prod.outlook.com (2603:10b6:a03:40::16) To MWHPR04MB0401.namprd04.prod.outlook.com (2603:10b6:300:70::18) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Alistair.Francis@wdc.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [199.255.44.250] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; MWHPR04MB1215; 6:ti6mH7/N3KkXUdnqCYfYblx2MdsD78ckuf3dvgNQCA8Qma2CnMJaML7zpVQ9xJW06VPVWbkNHT2tShAngR0IULlNBKvHIdsUcXtDwrlFNr4I+Z8Jts5RBHugfEptG88Nrs/6IiI564Xdm/oDqNXcYbZgJTQmZn0mpaCNf7gT1t/aMSudpnn9mzJlFC3fHnNcmA/PLKHMk89QPnGC0xv9DpSQ9xSgzvuCzce5ARMpC772oguSt6xmO6+jU9H5UrRqqJT7yCyd5zogDOH6ArXOm8asv9h0NHWzq31/unlG6oDZuARX1iYgJgKiCkvA8xJ9uENSqgIRnsSNG4UZ/pQf/lyp5zYR5BfeQ6zfFqoz15cEj+tng9LNcLLyPzFTNodaNE+obDHXtI3QOpCJGAw8MKNMHCdFMG27UN5gZSgNDocZJ7Mz6ICjYaLAJ+/S8Hhuh140BtT+qQ50DG95CwyPKA==; 5:2AzeiRGX1qDAp00xFS3M1DxhjrrhGswgAmgEA8HAL9wjf0lG0jPRrNSYEaMRt58QKwM+Kac7y9YkjCxuc0DoG9R16fxcScNpS043EfzGiz0gz6xLLLYVgOhjD6zdJjrXTPqwOBVsAbs4efzn3Sq85RdZtjJq97q3aiieLF1y4/o=; 7:pJEuKIiHikI+Ybkb1sMhriDEzkdpk3mO4d5v5/EZBRvFTRKfGUmTmFIsZkU1GuezGT8RXAanho7bNAovznzAxlUZlNiIVlQ518sF9ZpJuIp/KiUvMMGgPHyd/2ClfR/mxu2RlqfOsSh13UuAtsX4mA== x-ms-office365-filtering-correlation-id: 3330bc55-9524-49eb-444d-08d65ca6fd6a x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(5600074)(711020)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060)(7193020); SRVR:MWHPR04MB1215; x-ms-traffictypediagnostic: MWHPR04MB1215: wdcipoutbound: EOP-TRUE x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(3002001)(3231455)(999002)(944501520)(52105112)(93006095)(93001095)(6055026)(148016)(149066)(150057)(6041310)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123562045)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB1215; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB1215; x-forefront-prvs: 0880FB6EC1 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(376002)(396003)(346002)(39860400002)(366004)(136003)(189003)(199004)(476003)(44832011)(305945005)(11346002)(7736002)(81156014)(8676002)(3846002)(2616005)(118296001)(5660300001)(106356001)(446003)(81166006)(6116002)(86362001)(486006)(105586002)(6506007)(50226002)(386003)(76176011)(2906002)(8936002)(102836004)(26005)(186003)(52116002)(66066001)(97736004)(2501003)(478600001)(4326008)(54906003)(99286004)(110136005)(68736007)(25786009)(256004)(14454004)(39060400002)(71190400001)(71200400001)(6486002)(6512007)(72206003)(36756003)(53936002)(6436002)(316002); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB1215; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; x-microsoft-antispam-message-info: 8LnJ51k+XUth/hTlP73vHuMb7oWMmnBoRzkjVqdivjhrpdzuGALcfJGbsp8taj0wJZxzBLvoJXDQ/+OsGgYYrwuJQjvTePdl/pzv/uwTZ3STXC3FUXW1fcfDidiVXzHUM0VbVk87SXmBq2urXl5oL6ypTGV7AuN8upqZ06ia2MLt0iEQgORHyzVN0q3yteBpVeW3Dszm7m8mgPz9aLM8MA+LGu6vyX1IgdSvSVP5gI6OxwIxZ9942uIYkr6nQUedz1mYAxz1SDRsKfFku4WnO1ITylSzudzxexLst40fkFiS7/5ksrQDRVq6q/RLmRuoRSMeYPnclvo2bWlh9oI/JkXYNRuOppJXuuYAJpGVs8M= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3330bc55-9524-49eb-444d-08d65ca6fd6a X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Dec 2018 00:49:21.0504 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB1215 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.154.42 Subject: [Qemu-devel] [RFC v3 20/24] riscv: tcg-target: Add the prologue generation and register the JIT 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: "alistair23@gmail.com" , "richard.henderson@linaro.org" , Alistair Francis 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: Alistair Francis Signed-off-by: Michael Clark Reviewed-by: Richard Henderson --- tcg/riscv/tcg-target.inc.c | 111 +++++++++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) diff --git a/tcg/riscv/tcg-target.inc.c b/tcg/riscv/tcg-target.inc.c index 29c8a30a7d..e5a4642609 100644 --- a/tcg/riscv/tcg-target.inc.c +++ b/tcg/riscv/tcg-target.inc.c @@ -1783,3 +1783,114 @@ static const TCGTargetOpDef *tcg_target_op_def(TCGOpcode op) return NULL; } } + +static const int tcg_target_callee_save_regs[] = { + TCG_REG_S0, /* used for the global env (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, + TCG_REG_RA, /* should be last for ABI compliance */ +}; + +/* Stack frame parameters. */ +#define REG_SIZE (TCG_TARGET_REG_BITS / 8) +#define SAVE_SIZE ((int)ARRAY_SIZE(tcg_target_callee_save_regs) * REG_SIZE) +#define TEMP_SIZE (CPU_TEMP_BUF_NLONGS * (int)sizeof(long)) +#define FRAME_SIZE ((TCG_STATIC_CALL_ARGS_SIZE + TEMP_SIZE + SAVE_SIZE \ + + TCG_TARGET_STACK_ALIGN - 1) \ + & -TCG_TARGET_STACK_ALIGN) +#define SAVE_OFS (TCG_STATIC_CALL_ARGS_SIZE + TEMP_SIZE) + +/* We're expecting to be able to use an immediate for frame allocation. */ +QEMU_BUILD_BUG_ON(FRAME_SIZE > 0x7ff); + +/* Generate global QEMU prologue and epilogue code */ +static void tcg_target_qemu_prologue(TCGContext *s) +{ + int i; + + tcg_set_frame(s, TCG_REG_SP, TCG_STATIC_CALL_ARGS_SIZE, TEMP_SIZE); + + /* TB prologue */ + tcg_out_opc_imm(s, OPC_ADDI, TCG_REG_SP, TCG_REG_SP, -FRAME_SIZE); + for (i = 0; i < ARRAY_SIZE(tcg_target_callee_save_regs); i++) { + tcg_out_st(s, TCG_TYPE_REG, tcg_target_callee_save_regs[i], + TCG_REG_SP, SAVE_OFS + i * REG_SIZE); + } + +#if !defined(CONFIG_SOFTMMU) + tcg_out_movi(s, TCG_TYPE_PTR, TCG_GUEST_BASE_REG, guest_base); + tcg_regset_set_reg(s->reserved_regs, TCG_GUEST_BASE_REG); +#endif + + /* Call generated code */ + tcg_out_mov(s, TCG_TYPE_PTR, TCG_AREG0, tcg_target_call_iarg_regs[0]); + tcg_out_opc_imm(s, OPC_JALR, TCG_REG_ZERO, tcg_target_call_iarg_regs[1], 0); + + /* Return path for goto_ptr. Set return value to 0 */ + s->code_gen_epilogue = s->code_ptr; + tcg_out_mov(s, TCG_TYPE_REG, TCG_REG_A0, TCG_REG_ZERO); + + /* TB epilogue */ + tb_ret_addr = s->code_ptr; + for (i = 0; i < ARRAY_SIZE(tcg_target_callee_save_regs); i++) { + tcg_out_ld(s, TCG_TYPE_REG, tcg_target_callee_save_regs[i], + TCG_REG_SP, SAVE_OFS + i * REG_SIZE); + } + + tcg_out_opc_imm(s, OPC_ADDI, TCG_REG_SP, TCG_REG_SP, FRAME_SIZE); + tcg_out_opc_imm(s, OPC_JALR, TCG_REG_ZERO, TCG_REG_RA, 0); +} + +typedef struct { + DebugFrameHeader h; + uint8_t fde_def_cfa[4]; + uint8_t fde_reg_ofs[ARRAY_SIZE(tcg_target_callee_save_regs) * 2]; +} DebugFrame; + +#define ELF_HOST_MACHINE EM_RISCV + +static const DebugFrame debug_frame = { + .h.cie.len = sizeof(DebugFrameCIE) - 4, /* length after .len member */ + .h.cie.id = -1, + .h.cie.version = 1, + .h.cie.code_align = 1, + .h.cie.data_align = -(TCG_TARGET_REG_BITS / 8) & 0x7f, /* sleb128 */ + .h.cie.return_column = TCG_REG_RA, + + /* Total FDE size does not include the "len" member. */ + .h.fde.len = sizeof(DebugFrame) - offsetof(DebugFrame, h.fde.cie_offset), + + .fde_def_cfa = { + 12, TCG_REG_SP, /* DW_CFA_def_cfa sp, ... */ + (FRAME_SIZE & 0x7f) | 0x80, /* ... uleb128 FRAME_SIZE */ + (FRAME_SIZE >> 7) + }, + .fde_reg_ofs = { + 0x80 + 9, 12, /* DW_CFA_offset, s1, -96 */ + 0x80 + 18, 11, /* DW_CFA_offset, s2, -88 */ + 0x80 + 19, 10, /* DW_CFA_offset, s3, -80 */ + 0x80 + 20, 9, /* DW_CFA_offset, s4, -72 */ + 0x80 + 21, 8, /* DW_CFA_offset, s5, -64 */ + 0x80 + 22, 7, /* DW_CFA_offset, s6, -56 */ + 0x80 + 23, 6, /* DW_CFA_offset, s7, -48 */ + 0x80 + 24, 5, /* DW_CFA_offset, s8, -40 */ + 0x80 + 25, 4, /* DW_CFA_offset, s9, -32 */ + 0x80 + 26, 3, /* DW_CFA_offset, s10, -24 */ + 0x80 + 27, 2, /* DW_CFA_offset, s11, -16 */ + 0x80 + 1 , 1, /* DW_CFA_offset, ra, -8 */ + } +}; + +void tcg_register_jit(void *buf, size_t buf_size) +{ + tcg_register_jit_int(buf, buf_size, &debug_frame, sizeof(debug_frame)); +} From patchwork Sat Dec 8 00:49:30 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 10719089 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 06F3715A6 for ; Sat, 8 Dec 2018 01:07:17 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E15D72DE6E for ; Sat, 8 Dec 2018 01:07:16 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id D03A42DE84; Sat, 8 Dec 2018 01:07:16 +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=-7.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI 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 5248D2DE6E for ; Sat, 8 Dec 2018 01:07:16 +0000 (UTC) Received: from localhost ([::1]:48639 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVR5P-0005Fe-Fc for patchwork-qemu-devel@patchwork.kernel.org; Fri, 07 Dec 2018 20:07:15 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40512) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVQoK-0003do-MI for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:49:37 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gVQoH-0001Nn-6X for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:49:36 -0500 Received: from esa5.hgst.iphmx.com ([216.71.153.144]:42037) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gVQoG-0001NW-QK; Fri, 07 Dec 2018 19:49:33 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1544230174; x=1575766174; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=NNMJxLcReNeWMhy8t2TG6+9zxcSSB/k8tJF+kJWWlI4=; b=ZTMozsDKPBIGvqmbtAyvRF4CbuA/UDT8d/I4tLivaw+b6+UvgHS6pXeN TkYyX0E7bF7xsMmPMG2q9lBg2wzkiicFUSEQ8Lz+tKb15Z3eWs9LAe3cO PXhmu8ke28DWUA68RdHUEyLDQvsU2aWLhLIEXC9TN8z0403TOCUZdhlws ltahsAf4mGuHy/ng9JtPOULV5kZBKeQcw5lSObMT5bGxPaUwomp82Mu9U 4IoxqhBY/dr2zCusjrnIZ83CrxT3v+HnQ/GlcRZ0obEFuOvMMRCOMUFGl 8wHe8Se1nac/o8EoGYtYFpMCNT/CleC/nqOH8J852oHQVNoJ83vVEFtgq Q==; X-IronPort-AV: E=Sophos;i="5.56,328,1539619200"; d="scan'208";a="97343937" Received: from mail-by2nam03lp2057.outbound.protection.outlook.com (HELO NAM03-BY2-obe.outbound.protection.outlook.com) ([104.47.42.57]) by ob1.hgst.iphmx.com with ESMTP; 08 Dec 2018 08:49:32 +0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector1-wdc-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=VdXmcCi4NUFEqcrj0GmEb6seBEv5w8m0zYwV2NCNzww=; b=LCw0bntNUPJpYIRWzihCGrQREfn1Qar0SmQGZp1iIiqmRkeniA36Gh3113Dxz8mfX+e1YzrIVjvoZAmmMdh5Wfd00M0cuonXIRxJY1UPND3SmWWLkIIDaP+w4fmhMEFVEK1K3tFdDOyRpGxpwbjalSjNnM474k8e3cHev87ZGYE= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB1215.namprd04.prod.outlook.com (10.173.52.146) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.21; Sat, 8 Dec 2018 00:49:30 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5%9]) with mapi id 15.20.1404.021; Sat, 8 Dec 2018 00:49:30 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [RFC v3 21/24] riscv: tcg-target: Add the target init code Thread-Index: AQHUjo/gPMgjdgGj50mGA1xxqDty4g== Date: Sat, 8 Dec 2018 00:49:30 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.19.1 x-clientproxiedby: BYAPR11CA0070.namprd11.prod.outlook.com (2603:10b6:a03:80::47) To MWHPR04MB0401.namprd04.prod.outlook.com (2603:10b6:300:70::18) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Alistair.Francis@wdc.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [199.255.44.250] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; MWHPR04MB1215; 6:GPgZVerGkK9BxiRk22wHN4AglPO1yAe1y0CLhHAkg80UaZL5UFc8IsyJbwqlTDpcL3NgU84wuJ4DmH4Z6m7VW2qItVYeVis5UrLu77y2CfgRqR+BquWwzxMB70TNooGWircQbNvd8lmgQTTq+v/PFtQr4XNK8sAE8AgNZKjgSPY2QF7A5OnhFW92S9pnrsn1kLDoEgD26A6+7HG4lFEnZIl4aMrASOLPzJv4CZhF+vRAiHQNcDEskaXDDjW7fG0HEtBiS3THpN6iAOA3CBFOrM0iVBdcthZqHPsI3R4AMQKtRU2+IKTLzIhX1U7tguF12xK53K97sdNzUc9oZh59Yzt3rrsWUkN6kYQfkkBlBS2T/Tooj/irQYxJN2veDZrz8SfHZMZw6Ji88WjrmhHzf2rQIvfXTdddI27FITNSZ/rSxuBkDvCWjAnfcU8iSOggis/RCV2vtEmUygDHJZ/8VA==; 5:IMlkf+YXsuKAw5H3DTsnmeUgQY4WEtkj+JRac0GKHoExnuePTtlmDDKvf1ka76VYS0kOZ/ndDlhp8mJBIXrIZ1yT1K+uaHVW/5Cf14JbIoQGpfx+ZA4Bk02sHMPz25auYVzGK4LOer4wbMfuXaIKpyQ9X+Ew6Jo6czpMyej4pFU=; 7:DgNY1COpvj2anWIkQjgKjsvUGEDsbInANYIQopGXl+giDNQcYzyAOYNGe+rofWv35yIn7d3tN+1Cz1WTTsnByEl0L3AidWbxqlVwkCrsifYrmfwe/JRRzzV7WpjEElfae15eb4HwCE8nwEGBjXXmCQ== x-ms-office365-filtering-correlation-id: 20a0a95a-87f1-4bf3-908f-08d65ca7031c x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(5600074)(711020)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060)(7193020); SRVR:MWHPR04MB1215; x-ms-traffictypediagnostic: MWHPR04MB1215: wdcipoutbound: EOP-TRUE x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(3002001)(3231455)(999002)(944501520)(52105112)(93006095)(93001095)(6055026)(148016)(149066)(150057)(6041310)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123562045)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB1215; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB1215; x-forefront-prvs: 0880FB6EC1 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(376002)(396003)(346002)(39860400002)(366004)(136003)(189003)(199004)(476003)(44832011)(305945005)(11346002)(7736002)(81156014)(8676002)(3846002)(2616005)(118296001)(5660300001)(106356001)(446003)(81166006)(6116002)(86362001)(486006)(105586002)(6506007)(50226002)(386003)(76176011)(2906002)(8936002)(102836004)(26005)(186003)(52116002)(66066001)(97736004)(2501003)(478600001)(4326008)(54906003)(99286004)(110136005)(68736007)(25786009)(256004)(14454004)(39060400002)(71190400001)(71200400001)(6486002)(6512007)(72206003)(36756003)(53936002)(6436002)(316002); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB1215; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; x-microsoft-antispam-message-info: hqUdHY4HY5kWQ5b3qoCll4K/Ll7J+yDzohxfHC+lh9iCzecpVYqAXJ/TKJc8ZZlohTJhpl1JrJ+9vKTXr1S19CH1Q2/Az0/VrC7DKbM0nVdytw5IiX3dJsCz99cSZ1IXJeoqtRqWcaMK8B73tktg3D57BYI7ip0zGdgC2e0kdh+UfajP9j1ljwg+QovPrb13WTnLv9tLKLET6d0oQ8jv/Z8tl9+/hqWCQPUFy/BgNdDHaTg9lv/JF09Wxmy2e8pktTcMjSJeRDNMQj0q5MumD/NcjyQG6LRfaZE0qf1LcEFso8VddVVfGyqm8f5x8de5oelRoOfu47C46dOpNr4Lc+oSuGxaYkCjmrXW4UfYloc= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: 20a0a95a-87f1-4bf3-908f-08d65ca7031c X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Dec 2018 00:49:30.3013 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB1215 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.144 Subject: [Qemu-devel] [RFC v3 21/24] riscv: tcg-target: Add the target init code 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: "alistair23@gmail.com" , "richard.henderson@linaro.org" , Alistair Francis 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: Alistair Francis Signed-off-by: Michael Clark Reviewed-by: Richard Henderson --- tcg/riscv/tcg-target.inc.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/tcg/riscv/tcg-target.inc.c b/tcg/riscv/tcg-target.inc.c index e5a4642609..06e852d470 100644 --- a/tcg/riscv/tcg-target.inc.c +++ b/tcg/riscv/tcg-target.inc.c @@ -1850,6 +1850,37 @@ static void tcg_target_qemu_prologue(TCGContext *s) tcg_out_opc_imm(s, OPC_JALR, TCG_REG_ZERO, TCG_REG_RA, 0); } +static void tcg_target_init(TCGContext *s) +{ + tcg_target_available_regs[TCG_TYPE_I32] = 0xffffffff; + if (TCG_TARGET_REG_BITS == 64) { + tcg_target_available_regs[TCG_TYPE_I64] = 0xffffffff; + } + + tcg_target_call_clobber_regs = -1u; + tcg_regset_reset_reg(tcg_target_call_clobber_regs, TCG_REG_S0); + tcg_regset_reset_reg(tcg_target_call_clobber_regs, TCG_REG_S1); + tcg_regset_reset_reg(tcg_target_call_clobber_regs, TCG_REG_S2); + tcg_regset_reset_reg(tcg_target_call_clobber_regs, TCG_REG_S3); + tcg_regset_reset_reg(tcg_target_call_clobber_regs, TCG_REG_S4); + tcg_regset_reset_reg(tcg_target_call_clobber_regs, TCG_REG_S5); + tcg_regset_reset_reg(tcg_target_call_clobber_regs, TCG_REG_S6); + tcg_regset_reset_reg(tcg_target_call_clobber_regs, TCG_REG_S7); + tcg_regset_reset_reg(tcg_target_call_clobber_regs, TCG_REG_S8); + tcg_regset_reset_reg(tcg_target_call_clobber_regs, TCG_REG_S9); + tcg_regset_reset_reg(tcg_target_call_clobber_regs, TCG_REG_S10); + tcg_regset_reset_reg(tcg_target_call_clobber_regs, TCG_REG_S11); + + s->reserved_regs = 0; + tcg_regset_set_reg(s->reserved_regs, TCG_REG_ZERO); + tcg_regset_set_reg(s->reserved_regs, TCG_REG_TMP0); + tcg_regset_set_reg(s->reserved_regs, TCG_REG_TMP1); + tcg_regset_set_reg(s->reserved_regs, TCG_REG_TMP2); + tcg_regset_set_reg(s->reserved_regs, TCG_REG_SP); + tcg_regset_set_reg(s->reserved_regs, TCG_REG_GP); + tcg_regset_set_reg(s->reserved_regs, TCG_REG_TP); +} + typedef struct { DebugFrameHeader h; uint8_t fde_def_cfa[4]; From patchwork Sat Dec 8 00:49:39 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 10719093 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 12F0215A6 for ; Sat, 8 Dec 2018 01:10:15 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0046F2DC0E for ; Sat, 8 Dec 2018 01:10:15 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E56322DC2C; Sat, 8 Dec 2018 01:10:14 +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=-7.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI 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 67A292DC0E for ; Sat, 8 Dec 2018 01:10:14 +0000 (UTC) Received: from localhost ([::1]:48659 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVR8H-0000zU-6F for patchwork-qemu-devel@patchwork.kernel.org; Fri, 07 Dec 2018 20:10:13 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40549) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVQoY-0003oC-1X for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:49:51 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gVQoT-0001R8-1x for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:49:48 -0500 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:8292) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gVQoR-0001QU-Fl; Fri, 07 Dec 2018 19:49:44 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1544230183; x=1575766183; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=d/vgDPhfzdcDSncbcj6SM70p3CgdU/kMp06loHl8EIc=; b=ESBNAtKIVPiYqZHQNHoYY+rx33MFQqqXFT8uGV4S4wveWY3tRLuOhyPm oSHrxIV+j44uHdmeW/zv1nmKhI9w3lXS5Roa/+LVFln30VmkLbA1NcY+P Ex2ybnM85rKNrqBj3NxzLuEpbyu0ysGskw2+L6XCdcIgOtaneXgs6/sqB rvg+W0y/pbRm6ekIsDZGiI5BuLD3BKezMFORaQBJX+EosiLgpBAS7p3mb ENanFZ0TgQikjFw6uuzV2rOTkCWICuDNlqLSK3sTwUvLtZFtHJDIK9Hl+ Oh1wGcwqvK6yBYz2yPuNMAWN67IJV/B1rityv4JV/jsnpuJI3qU67Byvp Q==; X-IronPort-AV: E=Sophos;i="5.56,328,1539619200"; d="scan'208";a="101012203" Received: from mail-bn3nam01lp2052.outbound.protection.outlook.com (HELO NAM01-BN3-obe.outbound.protection.outlook.com) ([104.47.33.52]) by ob1.hgst.iphmx.com with ESMTP; 08 Dec 2018 08:49:41 +0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector1-wdc-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=yPUJaM0wWZHLTYVfZkTyHnHTkJnpg2ybHbfiWpabKRI=; b=boByVjXdXLiidcpaFC6c99hPyFt/WCPcy/6oQqL/MOTXCPWGn2Fb+iEjPO9uYcrVEbkR8kDfGo3NhdmPFlctszY210eBn1Qu/2EG37OML5iakDC8RqIxYkwjI5OcfhA2Q6Mcd2hEPlEfFiB6CULZfr2ZK4Q1cPiMPs/Ahgjd5is= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB1215.namprd04.prod.outlook.com (10.173.52.146) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.21; Sat, 8 Dec 2018 00:49:39 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5%9]) with mapi id 15.20.1404.021; Sat, 8 Dec 2018 00:49:39 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [RFC v3 22/24] tcg: Add RISC-V cpu signal handler Thread-Index: AQHUjo/mCq7j/DPj2k2bn9YIV6ZMBw== Date: Sat, 8 Dec 2018 00:49:39 +0000 Message-ID: <37efeea94032a868865575d320a7cf1ddc532fed.1544229872.git.alistair.francis@wdc.com> References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.19.1 x-clientproxiedby: BYAPR02CA0006.namprd02.prod.outlook.com (2603:10b6:a02:ee::19) To MWHPR04MB0401.namprd04.prod.outlook.com (2603:10b6:300:70::18) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Alistair.Francis@wdc.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [199.255.44.171] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; MWHPR04MB1215; 6:RY2lTaAg2WqUrrXudRb+q8KQbcDSnNbvw4ZOHy2uEEv0qaXnoUMm5wEK2y1QURnuxxmZavXr+mjJOcS76sCQcZjeg51qb7wuIiL7pdGKw4MsG5/44/D2FkZX3TNL236j0eQWkhZQD4UQ+RTtOeGwr6GNHe5r/gycRjbNxsgcWYDcRD+KND+5ugauZUy2ObNheXNOPlZInyWXjnmmcybNgJGxp2zAopwSy5fjv2zB8YVrqrCVc/zoybgNKecT4TCRoRkI6ljWvAuKaEAW+ZyRHHVH2YJG0+z01ybFJAEuipxaLxGPwooNk+Z2xaW0EGh5YxZnOyRGTgiSIHxr9sihU9fFNNTItjI+DOxyAjaEUmSKsRKw7GjhC9P9MHgTVKKFVWfDE9oc7eQpo0+rhrPIyByhhqOmitpxL904XliqrV5KbIOB+dFU4T8Gms2nqUwBaS2sVuv0hcke9rIUXTDGoQ==; 5:1V+E/U2r74HMfDNACU9PXwTdnzQBmm3OKBN4s93Y5QdVpC+lJjQlxnjla5OHXv6V0tdCXv1CjcGiXTUxRXZTgvgLGxIzgN3Mfo/cm46RJH7KbxmYXqTlGZh2wr5V8mYBhcAl6DX1Zp6Oyu+QABF9NCSWuq09LBPZ0B60LKy1+Zo=; 7:nM6HFb5IIImeZCcVcsMHCI89dq8Yg87796nWwYAnzY48jOA8dy+g1f/yCpC+A73kl6kYK3XuAE3rRCbmoChG3dEIiOyDRN3Lg3EezGAauySawC794gQiGDd4nG2oYUvJaNmxntLU4CSC3mMxwPHSSQ== x-ms-office365-filtering-correlation-id: 8d4755c2-05f3-4c63-54e8-08d65ca7088f x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(5600074)(711020)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060)(7193020); SRVR:MWHPR04MB1215; x-ms-traffictypediagnostic: MWHPR04MB1215: wdcipoutbound: EOP-TRUE x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(3002001)(3231455)(999002)(944501520)(52105112)(93006095)(93001095)(6055026)(148016)(149066)(150057)(6041310)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123562045)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB1215; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB1215; x-forefront-prvs: 0880FB6EC1 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(376002)(396003)(346002)(39860400002)(366004)(136003)(189003)(199004)(476003)(44832011)(305945005)(11346002)(7736002)(81156014)(8676002)(3846002)(2616005)(118296001)(5660300001)(106356001)(446003)(81166006)(6116002)(86362001)(486006)(105586002)(6506007)(50226002)(386003)(76176011)(2906002)(8936002)(102836004)(26005)(186003)(52116002)(66066001)(97736004)(2501003)(478600001)(4326008)(54906003)(99286004)(110136005)(68736007)(25786009)(256004)(14454004)(39060400002)(14444005)(71190400001)(71200400001)(6486002)(6512007)(72206003)(36756003)(53936002)(6436002)(316002); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB1215; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; x-microsoft-antispam-message-info: jqnQhjojEGg9m9hmtVVeNTFMQcCcUt/jQN25wKW/97ctB0Q5TeCXmF29ii363tBy7Ci1bBbgtEFtaCBNEnzsGIBWeBnGubmecHxktUxYNrhKkgim9MFZo7GsahqEIlQplGiojkZ1XHKERL2PIKAZ9TyXzp6Ccm2BN05adzG52B62xwsHVcsWko2YCtfzPnpifU9fz2sH1/TrpQz7Zqqs0w1p/s6KJRjIHURQJfPtHKfotsJTulVbNq+603/uJZD3EK7mPaNTwKP4oQlH5uXi+qyyGccLYYm0+48xzpqQd4znqRKQhwgZIN4wVFGVqCjwNkI/ybN9sVVuCyHY+lPsmtyJRH3RqUjrHLhjJw1xWBI= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8d4755c2-05f3-4c63-54e8-08d65ca7088f X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Dec 2018 00:49:39.5421 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB1215 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.141 Subject: [Qemu-devel] [RFC v3 22/24] tcg: Add RISC-V cpu signal handler 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: "alistair23@gmail.com" , "richard.henderson@linaro.org" , Alistair Francis 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: Alistair Francis Signed-off-by: Michael Clark --- accel/tcg/user-exec.c | 75 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/accel/tcg/user-exec.c b/accel/tcg/user-exec.c index cd75829cf2..941295ea49 100644 --- a/accel/tcg/user-exec.c +++ b/accel/tcg/user-exec.c @@ -571,6 +571,81 @@ int cpu_signal_handler(int host_signum, void *pinfo, return handle_cpu_signal(pc, info, is_write, &uc->uc_sigmask); } +#elif defined(__riscv) + +int cpu_signal_handler(int host_signum, void *pinfo, + void *puc) +{ + siginfo_t *info = pinfo; + ucontext_t *uc = puc; + greg_t pc = uc->uc_mcontext.__gregs[REG_PC]; + uint32_t insn = *(uint32_t *)pc; + int is_write = 0; + + /* Detect store by reading the instruction at the program + counter. Note: we currently only generate 32-bit + instructions so we thus only detect 32-bit stores */ + switch (((insn >> 0) & 0b11)) { + case 3: + switch (((insn >> 2) & 0b11111)) { + case 8: + switch (((insn >> 12) & 0b111)) { + case 0: /* sb */ + case 1: /* sh */ + case 2: /* sw */ + case 3: /* sd */ + case 4: /* sq */ + is_write = 1; + break; + default: + break; + } + break; + case 9: + switch (((insn >> 12) & 0b111)) { + case 2: /* fsw */ + case 3: /* fsd */ + case 4: /* fsq */ + is_write = 1; + break; + default: + break; + } + break; + default: + break; + } + } + + /* Check for compressed instructions */ + switch (((insn >> 13) & 0b111)) { + case 7: + switch (insn & 0b11) { + case 0: /*c.sd */ + case 2: /* c.sdsp */ + is_write = 1; + break; + default: + break; + } + break; + case 6: + switch (insn & 0b11) { + case 0: /* c.sw */ + case 3: /* c.swsp */ + is_write = 1; + break; + default: + break; + } + break; + default: + break; + } + + return handle_cpu_signal(pc, info, is_write, &uc->uc_sigmask); +} + #else #error host CPU specific signal handler needed From patchwork Sat Dec 8 00:49:48 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 10719087 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id AC9B015A6 for ; Sat, 8 Dec 2018 01:04:39 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9B1162DE48 for ; Sat, 8 Dec 2018 01:04:39 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 8F5852DE4E; Sat, 8 Dec 2018 01:04:39 +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=-7.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI 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 221222DE48 for ; Sat, 8 Dec 2018 01:04:39 +0000 (UTC) Received: from localhost ([::1]:48621 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVR2s-0003RA-AD for patchwork-qemu-devel@patchwork.kernel.org; Fri, 07 Dec 2018 20:04:38 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40611) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVQoe-0003uY-6y for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:49:59 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gVQoa-0001T6-Qe for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:49:56 -0500 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:8307) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gVQoa-0001SS-GQ; Fri, 07 Dec 2018 19:49:52 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1544230192; x=1575766192; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=G3S9Dt2dYVWGm7ZW7Y1T0WEiO5lLHciM/p5Y6OkVtko=; b=r2Mj0ERK7SPYNIbhmtsWR/iCBDs43cJXqiXemdpY+IcDXNOqcbhqNKPw Vokaqyz+TN9c2uxAi8MOze/JycarkLON30rkN9MvnbpHYlUndGibYrEmg Ch008JLDWY6xMCmCB9WIlrPWZ/hr9ftE6JZQJBOXPTp8bwAPz098+0gDt TcPs8eJB8KmY8KwwZjGEVuOMBB5RB4xUdwBcZ4iYQFfxCfZXV/x21Zg5z 9QTaW4ye5in0Qdw7DZ0Rm47CmoeHwupJL0mA4Der/BqgoUqrt6pwHOw6K wgB9GdYNkv6h7ggPEkOQAZN/oZ37zYONFOFCbmIqXDXl9O9fh1N4OOU2M A==; X-IronPort-AV: E=Sophos;i="5.56,328,1539619200"; d="scan'208";a="101012207" Received: from mail-bn3nam01lp2059.outbound.protection.outlook.com (HELO NAM01-BN3-obe.outbound.protection.outlook.com) ([104.47.33.59]) by ob1.hgst.iphmx.com with ESMTP; 08 Dec 2018 08:49:51 +0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector1-wdc-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Y4ucUXJN00cLhyglSRxKQiHDDBbJ2TVMusipIKPDFsw=; b=eHz9DDr6FbY8pnS30TGYLu+a/z8I9yRX+/I+vkJL3cIgFi1u1tRzfKHG5h36wUJ5INtj4g68BL3CLBBLsvnf+CEy+4NIEzUbh9RCVdtAiWz5z22sWvhVsBGS/m1zIBrRORkBwhKV19liIxDjh7B0AIzhFWZlLu1KrM59wKV5RJI= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB1215.namprd04.prod.outlook.com (10.173.52.146) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.21; Sat, 8 Dec 2018 00:49:49 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5%9]) with mapi id 15.20.1404.021; Sat, 8 Dec 2018 00:49:49 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [RFC v3 23/24] dias: Add RISC-V support Thread-Index: AQHUjo/rqSLRD9yErEGIYhx7CMOQAw== Date: Sat, 8 Dec 2018 00:49:48 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.19.1 x-clientproxiedby: BYAPR02CA0033.namprd02.prod.outlook.com (2603:10b6:a02:ee::46) To MWHPR04MB0401.namprd04.prod.outlook.com (2603:10b6:300:70::18) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Alistair.Francis@wdc.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [199.255.44.171] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; MWHPR04MB1215; 6:ssrRqkE+Dn6KMk3t9xCMaivaLrd74eqPnLFEHgQ7H4UwXPGztu3ITNnLcCVFqfLSwsJEQuOA3ENOzrkaaCCMtpHs04LkcOXDJQ2/PxTRveWnLUSbiDmys659wFx8D0Z4fyIn3L83h6LZheZ7EUvyiudqQQtazI2bN2AJ4630X6kqA3bMaFSPJtWh0KFCrvb0UEJVYV2LbERbdfsradjTr54kLSzT0JjesXMYByIWKsIJF9k9UmNP0fA71nG3/l8scKDMtkPhDGXTnyVIFi+f1LDW5ZZYBpf48TShZgS59R952OUgbnBksBCb5x7eOum/4hlfmKaCCUtgvaT/SlgzkbxGLSRA7PFlPReKZU1vXKClkyAvo5WuxIT5M9Yt4KeZmYXuPL3yCaty16mjN6M0lkM6oeb/LI+vY0p3MBOR0PoVBGhsgShNOTP0h2vNdScxHCHX2C6qQKSdXWEpuyVC7A==; 5:Dh3tD9e98R1FkYOYXTCG9Z29uV002hxWm6pupvSBNUIVqE91b8Qwq1LAowaG6eo/VwbE++cGqfsfLgayrYzdDpLGsWCcsy4fFiLb4hLAigB1aPY07leR3ZHkUDOKLfAyYvw1XCgD1kpsgNp4SQMrLGiQm7DP32dsfvwh+Ug3qVE=; 7:n4bVoOc8GtAB4/gc0csqDqrtUW6yknty29t+Xe5clQ95ILj6Tb4BDihTvV18SyFvqds952881dD0kBHCeZEUEDxY6Ttwr85BA0d1Vdg6aWeSSlTBbpZh7/c2RLXrj1OfLJzmhhTW1ce6SCFMZFCXTQ== x-ms-office365-filtering-correlation-id: e88ba4f7-2521-4bcb-096f-08d65ca70e34 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(5600074)(711020)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060)(7193020); SRVR:MWHPR04MB1215; x-ms-traffictypediagnostic: MWHPR04MB1215: wdcipoutbound: EOP-TRUE x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(3002001)(3231455)(999002)(944501520)(52105112)(93006095)(93001095)(6055026)(148016)(149066)(150057)(6041310)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123562045)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB1215; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB1215; x-forefront-prvs: 0880FB6EC1 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(376002)(396003)(346002)(39860400002)(366004)(136003)(189003)(199004)(476003)(44832011)(305945005)(11346002)(7736002)(81156014)(8676002)(3846002)(2616005)(118296001)(5660300001)(106356001)(446003)(81166006)(6116002)(86362001)(486006)(105586002)(6506007)(50226002)(386003)(76176011)(2906002)(8936002)(102836004)(26005)(186003)(52116002)(66066001)(97736004)(2501003)(478600001)(4326008)(54906003)(99286004)(110136005)(68736007)(25786009)(256004)(14454004)(39060400002)(71190400001)(71200400001)(6486002)(6512007)(72206003)(36756003)(53936002)(6436002)(316002); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB1215; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; x-microsoft-antispam-message-info: zj76Suf1xDbXAwwvD8JFg05eUORD0+0NTEntV6m5NX+OlAvGud7UksYtbQu2U8DcCwRTKeHS0YSwmzymBVUyQwybnsInDQgJCpxf5nQaNuDhGMRL0zZNuydZtQpNLMe/gtKmY47lL2ClCbQwAOZGzDr3qNAa4lyhjTuQcq3TPFck/U43oLKAVM013LsSRgmoYA7Efgp9PhXmApi+l6gPVjbUN63DKSN1TFJHr9vvr7eGiAj9wypoi7f3HBhzrVFBMKc4J2q6HYLNtK7EmYUZSeJZNpXKgJHlNOVGKvutomDBqVtmK7w1m11Biu2UchbyrXfCP8lmsoVQHJENC8Jhfej6IpOYz+I1ydOJQgrYwJU= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: e88ba4f7-2521-4bcb-096f-08d65ca70e34 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Dec 2018 00:49:48.9861 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB1215 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.141 Subject: [Qemu-devel] [RFC v3 23/24] dias: Add RISC-V support 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: "alistair23@gmail.com" , "richard.henderson@linaro.org" , Alistair Francis 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: Alistair Francis Signed-off-by: Michael Clark Reviewed-by: Richard Henderson --- disas.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/disas.c b/disas.c index 5325b7e6be..e627fc74f9 100644 --- a/disas.c +++ b/disas.c @@ -522,8 +522,14 @@ void disas(FILE *out, void *code, unsigned long size) # ifdef _ARCH_PPC64 s.info.cap_mode = CS_MODE_64; # endif -#elif defined(__riscv__) - print_insn = print_insn_riscv; +#elif defined(__riscv) && defined(CONFIG_RISCV_DIS) +#if defined(_ILP32) || (__riscv_xlen == 32) + print_insn = print_insn_riscv32; +#elif defined(_LP64) + print_insn = print_insn_riscv64; +#else +#error unsupported RISC-V ABI +#endif #elif defined(__aarch64__) && defined(CONFIG_ARM_A64_DIS) print_insn = print_insn_arm_a64; s.info.cap_arch = CS_ARCH_ARM64; From patchwork Sat Dec 8 00:49:58 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 10719091 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 8053415A6 for ; Sat, 8 Dec 2018 01:09:01 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6BD372D678 for ; Sat, 8 Dec 2018 01:09:01 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 5B52B2D696; Sat, 8 Dec 2018 01:09:01 +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=-7.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI 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 226322D678 for ; Sat, 8 Dec 2018 01:09:00 +0000 (UTC) Received: from localhost ([::1]:48648 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVR75-0008VQ-9g for patchwork-qemu-devel@patchwork.kernel.org; Fri, 07 Dec 2018 20:08:59 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40793) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVQp8-0004HA-K5 for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:50:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gVQp5-0001jL-7m for qemu-devel@nongnu.org; Fri, 07 Dec 2018 19:50:26 -0500 Received: from esa5.hgst.iphmx.com ([216.71.153.144]:42077) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gVQoz-0001ep-Gb; Fri, 07 Dec 2018 19:50:20 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1544230218; x=1575766218; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=dpz4/gnPBplgoUnvtKnRzRogXNhxbdNcpFehJNuVSPo=; b=oFHXjgy5ktb2iqXhFdL/q/EgmWqdjkZgXmdJtQiq70cW59Wnlq6D7kSz 5Qcm73Lm0vcV29s8T76hFxTZghSPOleOOwuyo6iH9GgiuxQ1dT7FD8XTN RKXu3UygdQPw2ocyDWfMm8c+hvZR2HIuSvlEssDrRyVS7OuGZSdN5tkwp lgZ8wZYm98jT3nJVHsJr5G0NanD0D8/e8aHm36eplJav+DbhyyI4sqc6e dLUCTLrQL+DIqmdY23d7/sguQ4oOIleAGDbiXXrhSZcxRNM8/P2z/Z1S0 jfZQArjH+W76mwsjf1Fl+c7fqKA+G4onSw35RDHS1qorEfG+rb+3nWAgC w==; X-IronPort-AV: E=Sophos;i="5.56,328,1539619200"; d="scan'208";a="97343949" Received: from mail-by2nam03lp2059.outbound.protection.outlook.com (HELO NAM03-BY2-obe.outbound.protection.outlook.com) ([104.47.42.59]) by ob1.hgst.iphmx.com with ESMTP; 08 Dec 2018 08:50:01 +0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector1-wdc-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=f5Q8HqkYUTEKhA+dMcNe5+Q7rqVmp+QpEog945isH8I=; b=FFEwBocL9b3f/alVqcFtpsTpednhiKRkFVi5zDuQJebIUwXjqO6Sp8yuBiyfJSmKR9DtBZz35Zbdt7xHR4kf/pgJ1GQ8ZIx6d0qUfBYeDAmAOtYYQEckuN8zl5pbOTNdVe4OwfZ7GtnDKJnTNieAYbcCuDqSMdMWq8If49TIaKE= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB1215.namprd04.prod.outlook.com (10.173.52.146) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.21; Sat, 8 Dec 2018 00:49:58 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::d13d:19d3:fc93:2ec5%9]) with mapi id 15.20.1404.021; Sat, 8 Dec 2018 00:49:58 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [RFC v3 24/24] configure: Add support for building RISC-V host Thread-Index: AQHUjo/xTVSLtCrol06wSrqYWMDtWg== Date: Sat, 8 Dec 2018 00:49:58 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.19.1 x-clientproxiedby: BYAPR02CA0004.namprd02.prod.outlook.com (2603:10b6:a02:ee::17) To MWHPR04MB0401.namprd04.prod.outlook.com (2603:10b6:300:70::18) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Alistair.Francis@wdc.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [199.255.44.171] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; MWHPR04MB1215; 6:DqfgTswFDInH4NoiP5QeJ/54F0sGJgufwBsWIhcl14dKf+tz2yzfP6On+nivJgCRRSMANxW3YuZcADCpnHatD4MzFHh0X/utNzzdMOIWnhlCN0Mo82F2hh2RivVAOSNK0pvCqjQ9XewowKqwgnfU4hOBJDPlLeVswiyq3pBl/yYAuoY4fuorr9tRWYgRaev2B402czcqzpola0OyYVya2GVB2Ye9mxHaPeJhOAAYXkFJlcFiqdQ5lDtVum1fAT+2fgBvshZ29h23kW3Y3aC448sbLtzuXh/qeanyoqOQNKEJ4X51YR9QCrpKRCVGWSHu2EcpZbv64k6HQUBzVMzsPZ5xohwvONm2h3UaWXFIcwowVRMk2jSWNiI79grwjusvmZKrcn1z7BGwGVPohyD716pcvPMViujQqM36NrI9yU2t3nuPqfeBwBFIfbJKpDOkeYsaMgEaeQbhqkijDmriYQ==; 5:BDPON1yuY3WY5I5M8OJP7i3+Q323bEEAuRizGv7Q68b+BFV+562Ej2OBkCpmg7nyI0Y6ZvHqg6rEHsEDWb3vC8xhjrpe21a0Z5818fBNAB7mYw9hx9ZETZBunHsO2mMGX1s4N80H3+ScO5oBH9hC8QIWVO3nYEQnrlmsSrqeWAA=; 7:OD+wycJxYHH8iCUfquuTlDksdADpYnv7SX3aqZUHgQAGCwUybLIqa+ypY6LYlnlshU30C+zSiUng5K8jBTC0BIIy/YRnD4dbcCQIq3Qxp0w9zZ8BneiDlnCFTwEGrZaaqM+s04VOt48UchGSUayIAA== x-ms-office365-filtering-correlation-id: 1f4338c9-4e08-4563-f0cb-08d65ca713f1 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(5600074)(711020)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060)(7193020); SRVR:MWHPR04MB1215; x-ms-traffictypediagnostic: MWHPR04MB1215: wdcipoutbound: EOP-TRUE x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(3002001)(3231455)(999002)(944501520)(52105112)(93006095)(93001095)(6055026)(148016)(149066)(150057)(6041310)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123562045)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB1215; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB1215; x-forefront-prvs: 0880FB6EC1 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(376002)(396003)(346002)(39860400002)(366004)(136003)(189003)(199004)(476003)(44832011)(305945005)(11346002)(7736002)(81156014)(8676002)(3846002)(2616005)(118296001)(5660300001)(106356001)(446003)(81166006)(6116002)(86362001)(486006)(105586002)(6506007)(50226002)(386003)(76176011)(2906002)(8936002)(102836004)(26005)(186003)(52116002)(66066001)(97736004)(2501003)(478600001)(4326008)(54906003)(99286004)(110136005)(68736007)(25786009)(256004)(14454004)(39060400002)(71190400001)(71200400001)(6486002)(6512007)(72206003)(36756003)(53936002)(6436002)(316002); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB1215; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; x-microsoft-antispam-message-info: u1Rb4sqvHb5juXWXtS6g1jC50zG71CIJcPWGC02BugPqAmUKLQ3K0mzxeWAAX9982l4i3stLR2u2eyyEze4zp19DwcmRWmq71N/lNxX9aA+/Kab1+R5QXvYUBgC15Z6tHhje7zmHLqmRhKxygAPescA2nyB4o4ZQUr4cTkDDOzgRxts+5El2qKpCSUcuSGP1pHysBWrzBjHTJVUylKTg5VcYQUTatoH8HVF1hsd/XkzpENWekqHJzXHdxAM/pnX+vJO+O4YN7vVMcuhgESghEGPpXRSjbNC4d968n7dsSmVg+NFP4F6NGQNZO2qZjCoZcaIGzjwNtlvHNCIcS2k/wq5wajaD9eTTVqW8lhXLYZ0= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1f4338c9-4e08-4563-f0cb-08d65ca713f1 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Dec 2018 00:49:58.5792 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB1215 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.144 Subject: [Qemu-devel] [RFC v3 24/24] configure: Add support for building RISC-V host 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: "alistair23@gmail.com" , "richard.henderson@linaro.org" , Alistair Francis 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: Alistair Francis Signed-off-by: Michael Clark Reviewed-by: Richard Henderson --- configure | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/configure b/configure index 0a3c6a72c3..2e13ee918d 100755 --- a/configure +++ b/configure @@ -709,6 +709,12 @@ elif check_define __s390__ ; then else cpu="s390" fi +elif check_define __riscv ; then + if check_define _LP64 ; then + cpu="riscv64" + else + cpu="riscv32" + fi elif check_define __arm__ ; then cpu="arm" elif check_define __aarch64__ ; then @@ -721,7 +727,7 @@ ARCH= # Normalise host CPU name and set ARCH. # Note that this case should only have supported host CPUs, not guests. case "$cpu" in - ppc|ppc64|s390|s390x|sparc64|x32) + ppc|ppc64|s390|s390x|sparc64|x32|riscv32|riscv64) cpu="$cpu" supported_cpu="yes" eval "cross_cc_${cpu}=\$host_cc" @@ -6900,6 +6906,8 @@ elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then QEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES" elif test "$ARCH" = "ppc64" ; then QEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES" +elif test "$ARCH" = "riscv32" -o "$ARCH" = "riscv64" ; then + QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/riscv $QEMU_INCLUDES" else QEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES" fi @@ -7397,7 +7405,7 @@ for i in $ARCH $TARGET_BASE_ARCH ; do ppc*) disas_config "PPC" ;; - riscv) + riscv*) disas_config "RISCV" ;; s390*)