From patchwork Wed Dec 12 19:43:00 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 10727039 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 4BC8D6C5 for ; Wed, 12 Dec 2018 19:56:29 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 3EFF82AC6E for ; Wed, 12 Dec 2018 19:56:29 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 335B52B844; Wed, 12 Dec 2018 19:56: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 9A7792AC6E for ; Wed, 12 Dec 2018 19:56:28 +0000 (UTC) Received: from localhost ([::1]:47761 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXAcN-0003AK-4B for patchwork-qemu-devel@patchwork.kernel.org; Wed, 12 Dec 2018 14:56:27 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48208) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXAPW-00005n-45 for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:43:11 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gXAPR-0001Bq-US for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:43:09 -0500 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:39067) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gXAPQ-000181-3K; Wed, 12 Dec 2018 14:43: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=1544643784; x=1576179784; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=mF4O0+bfADNh8fzyDt27zpjmLYs6qg05LJuV8MMK3Jo=; b=KOOYsPCtl0E3Fyn5KgzdXFP+dD1zdFSgJYDfIP64IhsAuTkZ/UkjCU5G r46ZNh6FhzbN8iC68X5tmAmF7ohe3S1WHustSIaiJNDyZ58mK4hh4pwO5 QmNK9Vu4asAXPIh2baVmVl5FZQ/+dgTYbCZJwdrA6XpeVKMbS2jrGRYwo geF3qbWHr0dxB2XNICvRGf9dxinLNrGnJiQj0ok6xREXXzdiaNTP4zVKv +hKwiaCKrrF3gph4uV3EF3S5OlQ1B7JvBpGlmp2bP8lYsGfg6nwgsyqCs FIQLkHeI/ZchX/LWIiILpCL/K/1HYVzSaP7PrQFVYAzYWhBxb5Vo8mA1L w==; X-IronPort-AV: E=Sophos;i="5.56,345,1539619200"; d="scan'208";a="101342189" Received: from mail-by2nam05lp2058.outbound.protection.outlook.com (HELO NAM05-BY2-obe.outbound.protection.outlook.com) ([104.47.50.58]) by ob1.hgst.iphmx.com with ESMTP; 13 Dec 2018 03:43:02 +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=Dy+xclwe5v3BaqP8/5WsAi7LACz4yv+36hWa1GoaQ6xy3LHYuYbVvi+kHIHag+oOO2fo9ZDuy5Vrb4sh46hWymWaw1eO03MgT5+5ZVCWDarqXaM0G/qFPHjbi4cS5EJkIOVx2m1AOcAoZ6b5KIKHYco7rAivtz/h4eaCBMEcVig= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB3744.namprd04.prod.outlook.com (10.172.169.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1425.19; Wed, 12 Dec 2018 19:43:00 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604%3]) with mapi id 15.20.1425.016; Wed, 12 Dec 2018 19:43:00 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [PATCH v1 01/23] elf.h: Add the RISCV ELF magic numbers Thread-Index: AQHUklLjtBwPb3tJ202ZJfv96JcjxQ== Date: Wed, 12 Dec 2018 19:43:00 +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: BYAPR04CA0002.namprd04.prod.outlook.com (2603:10b6:a03:40::15) 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; MWHPR04MB3744; 6:KV4SrlleAV3Yo/XPGlynV6QaBL/xSltzRe3LRk7AHJRQmKJuxdumMCCW8LZNCAa4SSnr/y6xtqgeWJpMRYjRUXrL/q/y7LJNSixqmZXqY0htsJGZsnaXYzek9WuI6rGfdgIYaS+X+ZumpXuajo9uFkxYFwfXFBen14JIHce2o6o1RhaOQy8OY3lbBe+8oPUDIBwr/LSkhp0RDcQTQ6F5kZ8pThand+EqGsdUfU0epqI8tZUdbqrlDHO1HBDL8YxllUPLVDzC39MuuvDGcusGEUgKB+mMMc8cCORs+k4gCFbwcRICpGwmFRKKp6TLfc9y5J5gRTj//6ohkl9A9u1e/E77eQonuWF0tyKTgAffFDn3gm10CbTTs9+DFdoAmmCeRYE0nLU3fQ1HW2Sqe9GD2ciTlJ8V0Xlkin19mGy+uYZoYn+MW8YFfXeoeOab81EqM+Tg83bI1pOudt+g8z64qQ==; 5:1lT+zlEg5e7mNv5RlLNJ9SVFzmlsdBUPlchViQiSXUd7n1slFsLnLEgpTutJRQZTahJPLDpuO5t7i9N6ztsRdPmZeHyo54Fle0GIbwXgQooiQtbzimHjX55fMKNsFdtFLn6vu9ikTk45/LO214REL1axRcDFsgSdczBnGfJQd6E=; 7:uTAoh6N1jCVSrTsJh65tL/IK7oFdnzaYMUJYCp9//LaQnrmRwxd9CZ6RB5IiN3ncIya8+EYBXpCB3jjMuE6MDoDnRk4mw0qSEhdd3KYTgQ/WP2K4CR6bBNRW9h+o/qJih2obh8wOg0beL8BOYnV8aQ== x-ms-office365-filtering-correlation-id: 08f08168-b97e-418e-08f3-08d6606a061c 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:MWHPR04MB3744; x-ms-traffictypediagnostic: MWHPR04MB3744: 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)(10201501046)(3002001)(93006095)(93001095)(3231455)(999002)(944501520)(52105112)(6055026)(148016)(149066)(150057)(6041310)(20161123564045)(20161123562045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB3744; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB3744; x-forefront-prvs: 0884AAA693 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(396003)(376002)(366004)(136003)(346002)(39860400002)(189003)(199004)(217873002)(2501003)(81166006)(81156014)(8936002)(7736002)(76176011)(316002)(575784001)(97736004)(8676002)(86362001)(256004)(386003)(6506007)(52116002)(102836004)(6512007)(26005)(186003)(50226002)(6486002)(4326008)(39060400002)(6436002)(66066001)(53936002)(6116002)(14454004)(72206003)(25786009)(3846002)(36756003)(446003)(478600001)(11346002)(2616005)(476003)(486006)(106356001)(44832011)(68736007)(105586002)(71190400001)(71200400001)(5660300001)(305945005)(2906002)(118296001)(99286004)(54906003)(110136005); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB3744; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; x-microsoft-antispam-message-info: hft+XxAlmkNUYpcT+8pkKOUFVbSwwomciIhuSAS4urrS7DqSYfzUp2e+RVnSgvIdc4II3ZnZtm+LSHLHD55XoohvI1IfQniol8+RjFv9uyzC9XLRdSSDjkFKT2remdQfTI6wX01ymoNjssMGOlTpi+rLJ2cYcClLGy4wKwuB6nKjprAGY3gG/x6KpHf8RmQ+oq+BloMUe3ZSO61KTX9X79l00x30R/ut8uDTw4NKwjITuHrldP8eaUaTZCFN0SJiipBaCWz7pUIBiQ1XkPIslZ8vJSaSxYb79jhwgwZkRD7Bvb2YvyBSYLt719lvKM0P spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: 08f08168-b97e-418e-08f3-08d6606a061c X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Dec 2018 19:43:00.7460 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB3744 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.141 Subject: [Qemu-devel] [PATCH v1 01/23] 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 Wed Dec 12 19:43:09 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 10727025 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 DC55915A6 for ; Wed, 12 Dec 2018 19:50:21 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id CE4962B9E8 for ; Wed, 12 Dec 2018 19:50:21 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id C259C2B9F0; Wed, 12 Dec 2018 19:50:21 +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 9C24E2B9E8 for ; Wed, 12 Dec 2018 19:50:20 +0000 (UTC) Received: from localhost ([::1]:47718 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXAWR-0006AE-O3 for patchwork-qemu-devel@patchwork.kernel.org; Wed, 12 Dec 2018 14:50:19 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48268) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXAPf-0000Ep-Rg for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:43:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gXAPb-0001Is-RY for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:43:19 -0500 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:29115) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gXAPZ-0001GZ-UX; Wed, 12 Dec 2018 14:43: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=1544643794; x=1576179794; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=KmIeavw+WzzhQnc7gykgb3xdcOCNu2+aNpQMFu8X2Zo=; b=BwsFfWJtO26apcPRV5vavaEvoaVcjnu3htlZGncsK1zRD6Grk9ok94wz XQrPyC0ZYP0ySOfyMioEp8lFlivvsPRKnoo9TJbQIvMV73r2zz/ra+ncN yHI+EjkHpXFZeikytmPbMpHaEwymlw62a6xkujHk6bv771hSDO803MmlU p3326JCKTMOYBTXTdH8l7CXOKVvpJjVckUA3668tX+CVepqxJMbgb+8UY Kesue1UAw8dkfsmVYgT50QhABAd3HZn29eJI8jVjx04RNSgrpm2ymBOlD 7TlWAZZ4HX+rESvOBYnQjvsMG9MM8tVCk6Vl6zPReXF0+CH6ha/fPEvtR A==; X-IronPort-AV: E=Sophos;i="5.56,345,1539619200"; d="scan'208";a="96440785" Received: from mail-by2nam05lp2059.outbound.protection.outlook.com (HELO NAM05-BY2-obe.outbound.protection.outlook.com) ([104.47.50.59]) by ob1.hgst.iphmx.com with ESMTP; 13 Dec 2018 03:43:11 +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=gsPnGxIIPozKCuT2kYg4m1BzjLYoN1Qnjw1lw9IhGXapUipf8NzhViU10+rcqNwC8XDBFDsbcroj8NPfhUhO8HiZ2Iffe+h5U6SS9VJV7EdpOjO1ukTK7hz8gkW62RJ38dC5gghiLmnk5wZWrKczjLCrZ/+oklmW8rzjIPsxqQQ= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB0784.namprd04.prod.outlook.com (10.172.168.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1425.20; Wed, 12 Dec 2018 19:43:09 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604%3]) with mapi id 15.20.1425.016; Wed, 12 Dec 2018 19:43:09 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [PATCH v1 02/23] linux-user: Add host dependency for RISC-V 32-bit Thread-Index: AQHUklLpJx1rMN2fu0qhV84L6SODfQ== Date: Wed, 12 Dec 2018 19:43:09 +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: BYAPR04CA0032.namprd04.prod.outlook.com (2603:10b6:a03:40::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; MWHPR04MB0784; 6:Zkw2LJuEmmCXCz54OAckHlu7x33hqPMiKg59cO5Oao4iKVVr/C4/P55VAfGY5fpvZKZ7iKhRc6EL0Pe+WzocWsySz7HyvkJBPfGa1cvgKURQDR3pQoS0vfZw14VOCbtMS0sCsiSsnZdKBBubInshA78knOGMn1490S/9DN3ZzrTzCmhtrQp8Q2D60fnTflmO/vU9dkN37Hcb6YWyI3SdIiPaCRIycgscPhBUk9Y/nQxk2b0/PJdpuH1GRigoQMgJHvGvN77J/ppIOLUAWt8o5aOFm/WKWTaHT9DBOIvfwPxo0Bnc86RlfjYOrnHNSrYPMWXZCfGfZn7lxvTFrSUMzKco/5RKqhiPnrNUdhQjeFymfi4xR9nYVX9K8BzvgROO/Dv088Ll+iIvdPLuN+nz8X+CXBA/uaWdOfeMsErPnE81FJ0iLGDo6iKP/hxq0T02bKTnKkBDh0Q6zF10kTeYCQ==; 5:WEoD9fd67r37K684WgElRuN5M5be8X+pApLPAlE5mM0MnFgBX4iN6XrrYQ3QNfPHQgU5Q9S/O677ufjlyrye8mWWUUw3CMvjhsVXK4/2AUDFSdr3inVqO4bp27ULDXLxi1l/dBvy0GNHyAjBm3Zqj3ZcvqgxGx8kqHBiLQDvSRA=; 7:YTJ2jzt/2FGbZL5vDFl0eL4/K3Psetvc9tvH4YwnsNrySEeuRKbf54vzdtC89nkXIiwMs0lTX7tQNr0UP4AFiHBwKM/XyAZz9r5iJUatbOP9g6BP+FXX/sx7ek8CgXVp2I5Mc2IgGcwo0UcQOsh/GA== x-ms-office365-filtering-correlation-id: a23443b6-cb0b-48e2-e4f0-08d6606a0b63 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:MWHPR04MB0784; x-ms-traffictypediagnostic: MWHPR04MB0784: 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)(3231455)(999002)(944501520)(52105112)(93006095)(93001095)(3002001)(6055026)(148016)(149066)(150057)(6041310)(20161123558120)(20161123560045)(20161123562045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB0784; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB0784; x-forefront-prvs: 0884AAA693 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(136003)(366004)(39860400002)(376002)(346002)(396003)(189003)(199004)(7736002)(2906002)(36756003)(5660300001)(81156014)(8676002)(81166006)(106356001)(8936002)(99286004)(305945005)(256004)(71190400001)(68736007)(105586002)(97736004)(71200400001)(86362001)(50226002)(118296001)(2501003)(6486002)(52116002)(44832011)(25786009)(6436002)(53936002)(486006)(386003)(4326008)(6506007)(6116002)(476003)(54906003)(76176011)(39060400002)(11346002)(3846002)(102836004)(2616005)(110136005)(26005)(478600001)(14454004)(446003)(6512007)(66066001)(316002)(186003)(72206003); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB0784; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; x-microsoft-antispam-message-info: i5ow6M7h32QST4YDJv5rac55uqMVlGok+41Q8+MsGqAv5cijMDQxnlUt47O17bX303PEyxRcZmuT5DkqSmQamqBBP8XuypoAMERRCOxlea51RYiRFIASI04CMlXddmwqBBZH3InMdDVpVT0t6DwsCnv92MPZdgcfGGLHS/J1GZE3U/PYjc2O+o0E5PnMxCQgtkxgW+ET5BViFPOAb+T0TUxdCyKoRWvWl1oVcm4eCHrzqHSiJ7ptGt/o09vTnV/AZl7CNPF5+8mBLJGzRglLxl6Y3diBdel47RwgaKiIq83nVy4t4RtfqxupSOCSM5vS spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: a23443b6-cb0b-48e2-e4f0-08d6606a0b63 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Dec 2018 19:43:09.5899 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB0784 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.154.42 Subject: [Qemu-devel] [PATCH v1 02/23] 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 Wed Dec 12 19:43:18 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 10727047 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 B49AD6C5 for ; Wed, 12 Dec 2018 19:59:07 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A779229B18 for ; Wed, 12 Dec 2018 19:59:07 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 9914B2A22C; Wed, 12 Dec 2018 19: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 12E8A29B18 for ; Wed, 12 Dec 2018 19:59:07 +0000 (UTC) Received: from localhost ([::1]:47779 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXAew-0005XL-59 for patchwork-qemu-devel@patchwork.kernel.org; Wed, 12 Dec 2018 14:59:06 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48322) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXAPm-0000Ld-5i for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:43:30 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gXAPi-0001NH-5Z for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:43:26 -0500 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:39088) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gXAPh-0001MS-Oc; Wed, 12 Dec 2018 14:43:22 -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=1544643802; x=1576179802; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=iAGxPDcOadpSCu8DO/V1CniFAICyX9XS5FFyAxyMm+U=; b=L6zT1JVAQhpGBH4TCo/MPkkbGRiQbuWjDn3VVQ2J1hyH1a/0DmSg6Uld w1el/Y0MG9ymKQ77YuucvGS+DG3IYBrZRW7/mHI38NPov3PPYgd9bmzQK ktDwwOAXbJ/YfZyH0avmWR43DxU2KeR3n5DfyjhMYnSpazgbq9xTLYtHl wEp7xLWe6q1Gu364VNpqBae2UpG7BaYTdzVW95k/XszAL3CDiUpOqeCN0 CNMiVN73PVo2wFeL4ClbpzasFUCZhPVv0z/F2KPL56+FynhH/V3zyfwwD KYj8IGrU7iS1Ilyo7Ca1P9A1oSFLXINYd60QmVdLfMgXQDE2JySgH7S7N Q==; X-IronPort-AV: E=Sophos;i="5.56,345,1539619200"; d="scan'208";a="101342224" Received: from mail-bn3nam01lp2058.outbound.protection.outlook.com (HELO NAM01-BN3-obe.outbound.protection.outlook.com) ([104.47.33.58]) by ob1.hgst.iphmx.com with ESMTP; 13 Dec 2018 03:43:20 +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=A6rKsqLDJN5bZfE6CrOqwnzpvAa/P+77YYu/zhjPP370FWBjo2dCk0W15UTVnaF98ajTOEac8mdJ/XQyDUi1S6Zwy6sjaKD6EuwnAwyIMEUZH0gKZviecPtQOXvtB3kw8fbWkOymNDuTsetq+h/B/Mioi5D4BdJxnOyqBMbSTA8= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB0512.namprd04.prod.outlook.com (10.173.49.13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.19; Wed, 12 Dec 2018 19:43:18 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604%3]) with mapi id 15.20.1425.016; Wed, 12 Dec 2018 19:43:18 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [PATCH v1 03/23] linux-user: Add host dependency for RISC-V 64-bit Thread-Index: AQHUklLuG1YhoC9ruEu3R35ku34+lQ== Date: Wed, 12 Dec 2018 19:43:18 +0000 Message-ID: <8660772ee51af8d3904be1aacbe896aab88d6b03.1544643238.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: BYAPR04CA0024.namprd04.prod.outlook.com (2603:10b6:a03:40::37) 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; MWHPR04MB0512; 6:DteFjQN5FbNtKnJINuNdwAsxb+GvcgHL2VWkozdmaYo1G4K3swszOmzNZuT3GKPlyk4Y4MFPqhEE8rbe6Xr2RvibJuCWl2snvbyvjr6dvsNr0QET1x70p8WKHx0w7ACq+u9w6OxVx5UIE05aMSOJTPhw57840sW6tvMc6R/JOmljqWyfyobdLHYum3/Ad6Q8Miepwv7HCrXkbMXcBu3HrpEMejgAZ1QkmUZ8NZ6/cYr7rAygKVu4fD7j7OxgXMggLzGRNYyKH2Ra4dTv6FHihs1cyBCVU6KqpUmryjOlIxGtWcN7WWkKP80H5PxPr2vjVN+9oIOk8RPvKb3UTpxnDwgePam8NcSO0L9y+Q2weSEtyLNvPLdMyJdRRs9mV5E2McDBEQfHNvevl/8QV3Ymr68R31VpXHgz4V9BDbn8fbE8UYnTn8Zw8tR7V94kps16BsNcpK15dG0rQr5MM0jRpQ==; 5:iEAP4TaKfBkJxmDFoSv1wlgzDopqTlMhUcRKPLj7dNKhtoIgTil2e02/KO8bbtNeOzaa/gOv3rcfZc2wsqu7nBpIlrl5737xXmCieZTxaf1xTnhMR2qDYvzn4iyWg8f8mPjoV0Ju75PdUUUoCKnctirHNhFp2boXn52PuRbk+v8=; 7:YUC3mXRPdzYvCm5aF/GQY7IN5F2Fpe4zTw2xIyd8vp66F6Z7Qpg4lSgwBdOvigi8jhieei2H0ZxpL9zLNmSmicxzvdWB0iASaL8BFgmEM0AO/j+aCZ5VPehQRurmykx4KgsJ2EOh92PMQxOd2wk/VQ== x-ms-office365-filtering-correlation-id: 958a6514-b98a-4405-72bf-08d6606a109d 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:MWHPR04MB0512; x-ms-traffictypediagnostic: MWHPR04MB0512: wdcipoutbound: EOP-TRUE x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(3230017)(999002)(6040522)(2401047)(5005006)(8121501046)(3231472)(944501520)(52105112)(3002001)(10201501046)(93006095)(93001095)(6055026)(148016)(149066)(150057)(6041310)(20161123560045)(20161123562045)(20161123558120)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB0512; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB0512; x-forefront-prvs: 0884AAA693 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(346002)(39860400002)(396003)(366004)(136003)(376002)(199004)(189003)(316002)(66066001)(97736004)(71200400001)(2501003)(71190400001)(76176011)(486006)(8936002)(6506007)(386003)(102836004)(118296001)(3846002)(81166006)(44832011)(186003)(25786009)(26005)(11346002)(6436002)(6486002)(99286004)(2616005)(105586002)(8676002)(6116002)(81156014)(52116002)(5660300001)(6512007)(478600001)(72206003)(53936002)(68736007)(256004)(50226002)(110136005)(446003)(54906003)(39060400002)(14454004)(36756003)(7736002)(2906002)(476003)(4326008)(86362001)(305945005)(106356001); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB0512; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; x-microsoft-antispam-message-info: BBbh2pAQl1vZh4XGhZkb7+6VabRwmpaK5PbSTmViqBkhb/wANw2zUGL9L0y5iKj2xelVCA/2r8WKDeJ4LqwLVWZ++jZ/qa+BQfsKS40wUvR2e3dbhb53UburbQgUvIUeYgfoX6JIXUsPH4kmeIs5DI6+zu+br5RP2jv5dSNdIbbdteJmGeRYcNACPFozSn8r71V+AN2UkfVXT3d9RK2BGGEmRPkgvFC42Vc4XUVrzYn1kcHtDpeD0er4D8ZXDcl54DkzA4BK5r4QaDkmukboh6wbUW1wfzcMkGnMbMss9HXsdUGQ/OBc39bIrM0q3uvh spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: 958a6514-b98a-4405-72bf-08d6606a109d X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Dec 2018 19:43:18.4182 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB0512 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.141 Subject: [Qemu-devel] [PATCH v1 03/23] 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 Wed Dec 12 19:43:27 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 10727053 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 8731A1759 for ; Wed, 12 Dec 2018 20:02:07 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7B2412BA4C for ; Wed, 12 Dec 2018 20:02:07 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 698E72BA5A; Wed, 12 Dec 2018 20:02: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 CE9992BA4C for ; Wed, 12 Dec 2018 20:02:06 +0000 (UTC) Received: from localhost ([::1]:47807 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXAhp-000894-Co for patchwork-qemu-devel@patchwork.kernel.org; Wed, 12 Dec 2018 15:02:05 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48386) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXAPu-0000TS-LN for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:43:35 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gXAPq-0001Yp-Li for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:43:34 -0500 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:29142) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gXAPq-0001XS-BO; Wed, 12 Dec 2018 14:43: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=1544643810; x=1576179810; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=2S7rrauxjQHW78NG9LVvSqZTCkNXnKASIbbFBeT4g4o=; b=VDg5Gkn/Ru2Bml3A2yensm6j8vWwYVP41+Sh0Y+JFBl1KGEddYQ1DFk6 GdIetlYx2HVvSwTRUhOqWOFI2LHszzlt2+IMc7fe002shDGduIMTnYLgr uroWO/zKsR8hMKBThtkSJs8L2wBvWkw12yPmUGY8OW6e4snKTu+vTyRkH lFCcDVeXE6gFivbBT+GelfgwXQ6H0HoFfz24qDTsQtxUwBH5e9MfTqiNE qj2OAP/gaIdaIOUVSPyv51ygIHQmcojwW5fe2ZFQbYwJUtuSkfB+Btr2f PKZfIPlSRF8hE83KbizUYg7aTlU9HK07/uANB7x5U2wEU2p5ov537ZJLt w==; X-IronPort-AV: E=Sophos;i="5.56,345,1539619200"; d="scan'208";a="96440816" Received: from mail-by2nam05lp2052.outbound.protection.outlook.com (HELO NAM05-BY2-obe.outbound.protection.outlook.com) ([104.47.50.52]) by ob1.hgst.iphmx.com with ESMTP; 13 Dec 2018 03:43:29 +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=mIJhPIkQYqzQc4325Cgka6KVWUmzH696PHyBPM6M6n2RNMPy5hZIZ4a0npQgkGryha5+YjTwYCUTs9kLV2SOVcMqIx4vncMQWMBDAxdzNKpar3bIdbSYXQq+mTmtVphN56/CAqdwCESdG3BvPq2/inA1Dti8o8eeIRlLQkAJIrk= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB0784.namprd04.prod.outlook.com (10.172.168.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1425.20; Wed, 12 Dec 2018 19:43:27 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604%3]) with mapi id 15.20.1425.016; Wed, 12 Dec 2018 19:43:27 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [PATCH v1 04/23] exec: Add RISC-V GCC poison macro Thread-Index: AQHUklLznaOqGmaqT0+Hist8Bpz9Bw== Date: Wed, 12 Dec 2018 19:43:27 +0000 Message-ID: <35decc9202e72f185897252900341f0b2807ba88.1544643238.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: BYAPR04CA0007.namprd04.prod.outlook.com (2603:10b6:a03:40::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; MWHPR04MB0784; 6:jlwxQQyrrFENcwyQ7GgVxPxYgGQKBpRvXkuhRst0BilNlSmtrxRYVUQ34z/VwiMvQXvryuBkE/yhp5pZinBCZT334wautGUIETGHYcQ4p8CkDw+A/W9+JVY6eeWoY/TiER0j5yksq8OvqyHGFFz9uavUD5/JbASHiSKH1ormSX3/WIA6QFTq77u2By6KegcXNxbuxgCJRV0A9OV8tVUZQcxyo7DnwbzG4IYkLbP1Plr9MMQ4AJW+ytYqcqX0Bc5yJQPf2HIsaAGqWhJwi7nkWJ6a4yxGXnx2gSYXo3i2F5+0T2I07LqA309KFdaC6jxPbeM9Ramt7UPLoLhkGlREwUM3gKPMiJoRCB0CzHBiFWQV0ybJZUxZ5A9HC1kpdPpcYDYqt/wsiMomh1oFR2yuIvytizKKW/Vt56bY0nbAuS/SOuCMX11gmmXp178gRZj7v334BYtnHE6uPHWaOfGNqw==; 5:3yxEvaCvxf7aVh1hSt5ZYouGSDKu2rXns1P/Rwd17HGddpDPfdidZn5gooGTRhoBt5mkbBKXAuWnlcFU9yZ9fO0EvLOR5OtVQAXrOX6OLB5U7onB8E77v0mAmxCP5bYrvHwcFjlt4zDBHWNplq8SyOnOJDf4JUXUsDoEsqaB1kc=; 7:GnRbElzwfC7W24GMuypi+30Q+wWL7tJbqb7HJj4BmOSrZLzzfYCDJ/ZvEvCBWf0fcQUnpHQ0RRthOdTMsjXv/NvzKx3AwgT2bPgOAgOZNYE5ILFfhfvrxu8Wqo7fRqNhquqTce6z4zMFGkRSd3cc2A== x-ms-office365-filtering-correlation-id: f11b86e1-e91f-4509-4c2a-08d6606a1623 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:MWHPR04MB0784; x-ms-traffictypediagnostic: MWHPR04MB0784: 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)(3231455)(999002)(944501520)(52105112)(93006095)(93001095)(3002001)(6055026)(148016)(149066)(150057)(6041310)(20161123558120)(20161123560045)(20161123562045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB0784; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB0784; x-forefront-prvs: 0884AAA693 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(136003)(366004)(39860400002)(376002)(346002)(396003)(189003)(199004)(7736002)(2906002)(36756003)(5660300001)(81156014)(8676002)(81166006)(106356001)(8936002)(99286004)(305945005)(256004)(71190400001)(68736007)(105586002)(97736004)(71200400001)(86362001)(50226002)(118296001)(2501003)(6486002)(52116002)(44832011)(25786009)(6436002)(53936002)(486006)(386003)(4326008)(6506007)(6116002)(476003)(54906003)(76176011)(39060400002)(11346002)(3846002)(102836004)(2616005)(110136005)(26005)(478600001)(14454004)(446003)(6512007)(66066001)(316002)(186003)(72206003); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB0784; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; x-microsoft-antispam-message-info: u8HT9pqzzuaDLxk0YqnsNXFvQid9XNvAGHWXhgWKTHa2iG7ghgBSY6Gn8dS842OS2r/Etx/H0Tc8nbpTPM1qVU8a0L2xcIpKnb2tMEVee0m9uIsEg/Z9rPbAkTYhFHNSjvI0L0GZZ5SkPzdJ63As6P9Ab8M1R9/YXWjI2rzY7UnwD4R0BGLij9owvyiaegOn5A7gpvLSb8zN1M074HBaRl2glO9uBbmxCjmbqkkzmDfskXZrssxszikDSO8MAp7UwlRjfQnUGDZ2Inesdqzf6Ox7kiKRP6T7paAyg25Ermg/clS1dLvMQewXVBgaLczj spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: f11b86e1-e91f-4509-4c2a-08d6606a1623 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Dec 2018 19:43:27.7153 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB0784 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.154.42 Subject: [Qemu-devel] [PATCH v1 04/23] 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 Wed Dec 12 19:43:36 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 10727035 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 8697E6C5 for ; Wed, 12 Dec 2018 19:55:54 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 78A092AC6E for ; Wed, 12 Dec 2018 19:55:54 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 6CFA22AD28; Wed, 12 Dec 2018 19:55:54 +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 97A302AC6E for ; Wed, 12 Dec 2018 19:55:53 +0000 (UTC) Received: from localhost ([::1]:47743 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXAbn-0001VR-8m for patchwork-qemu-devel@patchwork.kernel.org; Wed, 12 Dec 2018 14:55:51 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48443) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXAQ8-0000e2-Fr for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:43:52 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gXAQ4-0001iY-Et for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:43:48 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:30960) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gXAQ4-0001gy-5q; Wed, 12 Dec 2018 14:43: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=1544643852; x=1576179852; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=fGRmZbxCRt8GiN4bxv90yEfWvk7RN0Y/XVfmkkyMrCs=; b=FERP+IYnH0F20R1MdQ+x80KdoOTm9rggEKsiHYndrjn1C+SSPdawf46g FltWD8DkJkCC3GeNC6Q7rdJBHkfLzepQCbX2I/t0URai3IrOngALBuixJ OcdqGin9sHvf79U4dzCBJWI+jYE3yPDZx1TiciaFGLOQp7bdGqvs3I+gT PIa45cUTunesImzOS9sr+pNIhFJH0GxTxYFs+26dyRa9LwJoORanzf5IK HGHS1IwvB6kmIIIwszH9gtObjjByrMkNWZqBZVXyPns8Jhqr6qOuwEQGW ctFcTXFHM4+GYDJ6MpYlLIaURTVKDeCs/tXL5oLdI2h/jkNqd1cLi8ZwC g==; X-IronPort-AV: E=Sophos;i="5.56,345,1539619200"; d="scan'208";a="194334012" Received: from mail-by2nam05lp2056.outbound.protection.outlook.com (HELO NAM05-BY2-obe.outbound.protection.outlook.com) ([104.47.50.56]) by ob1.hgst.iphmx.com with ESMTP; 13 Dec 2018 03:44:10 +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=ITA7kMaAnw3vfvYPqofMIoZxqMdCEXPA3zYlTd1ELa1W6pCLygyCvUXoMBHwoybct0ZVi3foE+ms+I2cZtNKlh9b7vSO5XtSthtnt+wKj6dNg9+C5MXfET+dkkFXv48Fr+NMnErdxLOLR0F9FWIwhECS6ljPqHSbAVE2D9yth6Y= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB0784.namprd04.prod.outlook.com (10.172.168.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1425.20; Wed, 12 Dec 2018 19:43:36 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604%3]) with mapi id 15.20.1425.016; Wed, 12 Dec 2018 19:43:36 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [PATCH v1 05/23] riscv: Add the tcg-target header file Thread-Index: AQHUklL5B9BnZkG+rEyImPsV9I8nxw== Date: Wed, 12 Dec 2018 19:43:36 +0000 Message-ID: <2560616ffb8a0e8c3001e3c5490c8bc1463468d0.1544643238.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: BYAPR04CA0007.namprd04.prod.outlook.com (2603:10b6:a03:40::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; MWHPR04MB0784; 6:RmrulLW68FZannrjaFhKzQykn8buy5fWSDyysXNinZoN3kJXccCzMldDScc0XmlWmJzuCIWhYZtCvubS0bqtSG8DSJtBU55mMut8D0vA7BsG34rRLec/EqzQCuZuMEJzAjvOaPbIglYHFXgB12RYXC+LIB0lQZY/F6Hr/A2SmmMV9N1nhZ/7zuHVDSUAaJi7dSX6+8U5WF0nnipx5/ASXxtA2xsnMCXiMLo+hOOzGFucSsmNDE9DwFxqMIQIe6CU8IkTGwfLEwjP1YcAOXzqJQT+e5QVAq2/Sy5So9S5murNq/LMHZMNd20PSikbzRTHVtIfSXdaFSCfVKj8vOIm2tb9/HtaTRwtgqXumgZ+afWyOIFOJMYgPM87ehGMDi98bZg1vN5v4TBvG3LXhVGwU/xNsnxBKCyIZr58eyCjd8sRtlPiRlL158t8loONsOhe9/gnRn5s4k5mf8ai2iMmtQ==; 5:KiKptoF/dYXhIIwY+dITlGMcNsz1neRvOUyy52FVf0noqRCxNiTdDitS33SzqZS38HesyzEMmGvms7wRobC58sO/DQZXCH4G33HpEeZnJo8BsCAh+6eGbSXvEEPFA8ju7gOdC8P5tz/vLBeVNhp9SmkOKkNKHqT1oX3fSwamhng=; 7:nGfr80o08rAgollfbio5Z5m7t3ZLUiE3wMiV9MIZeGnwyr3h64/YxeC9iq2N90aEgmg7MQvChpuAk9Mvm/3r+/8varYz+Lx3eRZ8+qw03ULlyXRxlhHQhkY1kuq3NQMuMa+JzcD70vGYTnRDNCya3w== x-ms-office365-filtering-correlation-id: 39588943-75f4-46f5-60df-08d6606a1ba4 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:MWHPR04MB0784; x-ms-traffictypediagnostic: MWHPR04MB0784: 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)(3231455)(999002)(944501520)(52105112)(93006095)(93001095)(3002001)(6055026)(148016)(149066)(150057)(6041310)(20161123558120)(20161123560045)(20161123562045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB0784; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB0784; x-forefront-prvs: 0884AAA693 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(136003)(366004)(39860400002)(376002)(346002)(396003)(189003)(199004)(7736002)(2906002)(36756003)(5660300001)(81156014)(8676002)(81166006)(106356001)(8936002)(99286004)(14444005)(305945005)(256004)(71190400001)(68736007)(105586002)(97736004)(71200400001)(86362001)(50226002)(118296001)(2501003)(6486002)(52116002)(44832011)(25786009)(6436002)(53936002)(486006)(386003)(4326008)(6506007)(6116002)(476003)(54906003)(76176011)(39060400002)(11346002)(3846002)(102836004)(2616005)(110136005)(26005)(478600001)(14454004)(446003)(6512007)(66066001)(316002)(186003)(72206003); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB0784; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; x-microsoft-antispam-message-info: EIXsKL4ROXYE7xcHCdRVshRjGXfl1f1r/1txrC5kEkZorYxpoBqOFno1k/OkBAaLcozzO0ZCAwjPJIiL1YetFPATsoRSr4Et9u8gi1qVMgqgvy4wR91ZeYnEDbC8/ukPy5+5W4WVG2fZU9Lcxx9Tso234j6SlwELH+/ZSHvaEovWBLQoCwAyHH4sd0y2wOMBYUayhHqmEysSrMhREy+Wo2baQHWaIVQdOIC4OACrGfSmjGhDugTyQeIQaXQLRZfpzu7CsztHkSxECeady3cIMn5u0+ehtXGD518NCmO2eO87hDSuhbVd/wd3zkiG18gv spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: 39588943-75f4-46f5-60df-08d6606a1ba4 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Dec 2018 19:43:36.8717 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB0784 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 68.232.143.124 Subject: [Qemu-devel] [PATCH v1 05/23] 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 Wed Dec 12 19:43:46 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 10727033 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 B98241759 for ; Wed, 12 Dec 2018 19:53:25 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id AC6342BA04 for ; Wed, 12 Dec 2018 19:53:25 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id A04452BA0A; Wed, 12 Dec 2018 19:53: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 092C02BA04 for ; Wed, 12 Dec 2018 19:53:24 +0000 (UTC) Received: from localhost ([::1]:47736 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXAZP-0000bT-3c for patchwork-qemu-devel@patchwork.kernel.org; Wed, 12 Dec 2018 14:53:23 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48515) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXAQM-0000t2-R5 for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:44:03 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gXAQI-0001y8-6i for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:44:02 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:30969) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gXAQH-0001xN-SG; Wed, 12 Dec 2018 14:43:58 -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=1544643873; x=1576179873; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=Ih4s0j5UAUWM2vvyAEuaXwzWIhBR/JhRlby3oIb/bRg=; b=IoniSDGywWBiqqo0qwoPuYooFFqrfH9su9HG84WsLPLKk3EdNSwA77r7 M+oFgQKOL6CwJ8KSxl1iFAkBTKrPm+iy2PO+N8MK+TMqRIrOniiC5lDvS OEsmpmL/9q7pz7nqbevPMm8DziPdMIBQmwd5FfVWuCbvXEw8KMBNIwWDU 1rjk8Nj6ljYzqtqNPH+WXJMWaH7p1DvgyyggQFaY1/F8/xxKJYatfFtVJ nC4PlBcCynBQEU6yXg9a2LT67v8IHHWp2avCuAmH3sumg+jEVHbn0NVWA FqQnbTbLVDzlf0HU6BoYOXP1g7r1Wl0mgdEzk91HYc/qNKBDEmi69Mymd A==; X-IronPort-AV: E=Sophos;i="5.56,345,1539619200"; d="scan'208";a="194334016" Received: from mail-bn3nam01lp2055.outbound.protection.outlook.com (HELO NAM01-BN3-obe.outbound.protection.outlook.com) ([104.47.33.55]) by ob1.hgst.iphmx.com with ESMTP; 13 Dec 2018 03:44: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=bxjQ6Iu4THjH6NOQhcKDn5SszVY3/vq0NRyAt+cpy7DCMwn4etnU/+IP45iGB5or6UQJEF5VpF9DfuGQZqLc00VOD3X/q0Nbpj2AwSSwU5dfAE5KIFixGctnXlUYsNaGlD6iVkA8UDsbdbHoxO2v+ZV/+CDButL/WFuTwqe9HEU= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB0512.namprd04.prod.outlook.com (10.173.49.13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.19; Wed, 12 Dec 2018 19:43:46 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604%3]) with mapi id 15.20.1425.016; Wed, 12 Dec 2018 19:43:46 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [PATCH v1 06/23] riscv: Add the tcg target registers Thread-Index: AQHUklL+Q6CVK/6Ud0OaTrsfg+a07g== Date: Wed, 12 Dec 2018 19:43:46 +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: BYAPR07CA0009.namprd07.prod.outlook.com (2603:10b6:a02:bc::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; MWHPR04MB0512; 6:T9WmrBhXU4LyL2/5Wcw73qzUpq30+/Qs2ofNHVPNPoviu9gy4zO8FwKkBoTNz0xiQOr/Rah7I0UH3VMYzjpJ2wE1xH4xEP+L5j7XH8/0koml3Nh1itqx9txJqjkqGJ7MOlMfuWxv+FboeHqX3vydVHFj4fu6B+88oCNLBuXJuBUysuoPpsD6/2uJ/ZMIMeD0swx/kqkGTm6AObdOMK7DYfb/EOJKY6Va69cEu3PwDoT44Y2g+VnnZtRZvgVtIBxH/tPIplrniLDgvr0an66M0JL4OsChMtYta5wUR9HQ+HRubpYuiwt5HUiPONekOWmlTkBT+NDhWz951Z+OzzSKau/neBXrM1sPSO8qY4wusQ+bzxwynjmFyrDQxKcIYEKOi3zwmSHlw+WjZNgygIqlmqVqMmSsuUa4CdhoP+1hIBiFHWx7aUYleL5xd9NycwyEiL9EDrilsHJefgNx5CdOJg==; 5:dD1b5aq9Iko3KA3YexC6Wh0poQ5iDsDT3ZsZ9T27XiAkwbzDhLDio8/CjxxSzy/5JNfrNkRZhhhcsJE6FH5u+3BbcNF+Xvh8M83sOtpasfHC3GzSeH8y66IJ8MurMRtgXNGJRVyTI9G5btbgHdwSfRR9kIVZCxhodNeLyxYHG78=; 7:2wSJvIeiPwSG+vkkTbYES15yBYEBfhUkFjWnr/lXmHZYuvENwtEjGUOUH7BqDT48CmXozoeyicKKMyi3JI3dQFEvmE9Er99pdceXkTG90RUT11dyp2FnRZ5e5eoAy4g5HKZIsDO19pt1v2+JalC9Jg== x-ms-office365-filtering-correlation-id: 962c477d-4e2a-46ac-ec20-08d6606a211b 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:MWHPR04MB0512; x-ms-traffictypediagnostic: MWHPR04MB0512: wdcipoutbound: EOP-TRUE x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(3230017)(999002)(6040522)(2401047)(5005006)(8121501046)(3231472)(944501520)(52105112)(3002001)(10201501046)(93006095)(93001095)(6055026)(148016)(149066)(150057)(6041310)(20161123560045)(20161123562045)(20161123558120)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB0512; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB0512; x-forefront-prvs: 0884AAA693 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(346002)(39860400002)(396003)(366004)(136003)(376002)(199004)(189003)(316002)(66066001)(97736004)(71200400001)(2501003)(71190400001)(76176011)(486006)(8936002)(6506007)(386003)(102836004)(118296001)(3846002)(81166006)(44832011)(186003)(25786009)(26005)(11346002)(6436002)(14444005)(6486002)(99286004)(2616005)(105586002)(8676002)(6116002)(81156014)(52116002)(5660300001)(6512007)(478600001)(72206003)(53936002)(68736007)(256004)(50226002)(110136005)(446003)(54906003)(39060400002)(14454004)(36756003)(7736002)(2906002)(476003)(4326008)(86362001)(305945005)(106356001); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB0512; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; x-microsoft-antispam-message-info: BE+PXw3vhhCg1P24YqEzMTyOHjjz7EAUQsftCaShuzynHN6j0knxvffSoxpCa2igLkZjj4z/ssK0qfc4WwZP0JVOrDWqL5ud/sMYz6uh5HmzmYWN9DLiMDcceXp9s2YjbCR7UiUThdwuHNLX5rXEObv59vKlkV21J9BMxNUgCYi0h4wXPq/vJtJR5oscAQeoT2D+ygC6dX3+nQyRM1uKcSMAk2FCpcBvx/5RY+B6nhWi+J3QR6a7/tA9C0fCJn553wbarPN643HCe30yHP0GAk1/c1kXjySQyyfCx/q7BEuAbGg9EARRN4aU5PBD+qDg spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: 962c477d-4e2a-46ac-ec20-08d6606a211b X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Dec 2018 19:43:46.0438 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB0512 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 68.232.143.124 Subject: [Qemu-devel] [PATCH v1 06/23] 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 Wed Dec 12 19:43:55 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 10727023 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 6F9A71759 for ; Wed, 12 Dec 2018 19:50:13 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 60B5C2B9E8 for ; Wed, 12 Dec 2018 19:50:13 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 51DFA2B9F0; Wed, 12 Dec 2018 19:50: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 9C13B2B9E8 for ; Wed, 12 Dec 2018 19:50:12 +0000 (UTC) Received: from localhost ([::1]:47716 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXAWI-00063m-QI for patchwork-qemu-devel@patchwork.kernel.org; Wed, 12 Dec 2018 14:50:10 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48568) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXAQa-00013s-4G for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:44:17 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gXAQW-00027C-26 for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:44:16 -0500 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:29179) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gXAQU-00023s-BX; Wed, 12 Dec 2018 14:44:11 -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=1544643850; x=1576179850; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=eCU3eAPoHbz3xgMfFvlIgMT/7dtwd/EYG10IG5xnEVw=; b=qoXqkUkIdVULO8wqOqfc4NNRuJLnHQyWUVc7p5/apBMC4CV6ZID0mdfQ 8CBIM4oIuzoCjCQloVTNbcW4AoYtHvqHok9d8+vdUaF237QcphBBTc5GN dv7XjJ/Xp6q4t2g300QBXsWO9Sd4Zk4henFGxoIATZE3l6zehZTLQqfQg 0vUP4kcH5aRKiJ23Jw/u21K/jYwlHGtPJeYktS0N/HqFTuDw9SG4QBXW7 hxSWNW3SLb5N4BJKQ/ZCzJ0rnKxdjStOrzxL6EDFGy/P7AV5r87q31pk/ o1MdX6rhgr/3JJKvWdTkeNSM0yhplmNEU04dJYCO3tCsmQiT3XfIb2af7 A==; X-IronPort-AV: E=Sophos;i="5.56,345,1539619200"; d="scan'208";a="96440844" Received: from mail-by2nam05lp2054.outbound.protection.outlook.com (HELO NAM05-BY2-obe.outbound.protection.outlook.com) ([104.47.50.54]) by ob1.hgst.iphmx.com with ESMTP; 13 Dec 2018 03:43:57 +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=3AbETKu2PI+17kUHagSQCijIltf24uV2q63c5kIj6ak=; b=QuBzxHWpzv6D4i+odL8JSk4V97NIpvJBNYTzF0JrMIhYH+tGLDZp0hD1tUAq+u1Rq/ghVfcfxAJke8pz8bjTKCz2+FhMiubGcbXy/jozM4jK5Tx5rT0PRVtmRfkVwBp4Vo2ULtSzBx09PjKttQYVX6rZRvg5Dg8eAU87GYBXp24= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB0784.namprd04.prod.outlook.com (10.172.168.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1425.20; Wed, 12 Dec 2018 19:43:55 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604%3]) with mapi id 15.20.1425.016; Wed, 12 Dec 2018 19:43:55 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [PATCH v1 07/23] riscv: tcg-target: Add support for the constraints Thread-Index: AQHUklMEj4aF2r3avEe2a1MsQYTBdQ== Date: Wed, 12 Dec 2018 19:43:55 +0000 Message-ID: <4fcd5630ea673024b1c17f2987043176e78ee673.1544643238.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: BYAPR07CA0021.namprd07.prod.outlook.com (2603:10b6:a02:bc::34) 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; MWHPR04MB0784; 6:eAiWvEVYmorZUeLuOk8hzmgDxPGHtEIf9GAHs6xvVnU1OcapbGbKGVBfqLrfgqWc4t7Cb79SaCaXzlyIkQHiWX175gNZwQPNQqhFK9Rkdd8kwqrtTY/frLvkceRSv0XgfgQM4pR4i/22HhxkXJN8PwQhiNx8DFgu7LA7BkVnfhdGpBFZl7jCjNIwbUfSzzHo2qnAXnM/GGoByCPLGZe2oJLIn9U+Yd6Yhnge72roWXz/7jG+k6HSrcfoQ9smlHB87jIlRpUI8azmdolAcj2cTRUslxKnT5cffH2WReYWRYagy36Yy18QShjxPi99qkY7Z8pttLaXiUPCO4XbugP+l1ttrnO4D8024dWhIumOprqtr+4gcgY+yLe2eBZejHZA5ZQKwv0oFqCpDydVqzB+YOOOf54xDf9jmOKrx1TOC2mse578dIOqG3eh+ugrAltQs3DE5ZP6MeVVsPnhOaE2XQ==; 5:/FMHa7PYx3O6AmxOcGRGzvkfufueVzw4hWCMAarKPWlRhwVd+nxT1uMJxhETgbLqcTM9s9LhmSW415h5O7DVMiPXr6S9JuYSWL4TzxIGTCK5PIw6b1hbbuGxTjw5A+gdiNCM6/+U4jK0ZkF1OUsvcVdx1gjyH/KKIK0fegUYyHw=; 7:757cxmkjpaqrvNxhbe8CSKUM/mwP2+704znaIBVawmnZ0UUvWFKB93gHVyUVoDv9W6wko6K6+dHK9q9fZFY32J/NkuwRcjHwh4BZy5lU8Ogy+oXT/LhWNV9rgF8Aoei6rh+hCyGgeR1pNxTUKYmXzw== x-ms-office365-filtering-correlation-id: 9275e5d9-ce91-4853-61f0-08d6606a26be 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:MWHPR04MB0784; x-ms-traffictypediagnostic: MWHPR04MB0784: 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)(3231455)(999002)(944501520)(52105112)(93006095)(93001095)(3002001)(6055026)(148016)(149066)(150057)(6041310)(20161123558120)(20161123560045)(20161123562045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB0784; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB0784; x-forefront-prvs: 0884AAA693 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(136003)(366004)(39860400002)(376002)(346002)(396003)(189003)(199004)(7736002)(2906002)(36756003)(5660300001)(81156014)(8676002)(81166006)(106356001)(8936002)(99286004)(305945005)(256004)(71190400001)(68736007)(105586002)(97736004)(71200400001)(86362001)(50226002)(118296001)(2501003)(6486002)(52116002)(44832011)(25786009)(6436002)(53936002)(486006)(386003)(4326008)(6506007)(6116002)(476003)(54906003)(76176011)(39060400002)(11346002)(3846002)(102836004)(2616005)(110136005)(26005)(478600001)(14454004)(446003)(6512007)(66066001)(316002)(186003)(72206003); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB0784; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; x-microsoft-antispam-message-info: bNrsd0KRm440x4HczVY2UYFLgelbAh6X3vBZ6FsT6E6O1k3tiwjvkXXjBYbnUjuCy070crCb5CN0XjfjhaKTV8kgdXniN+JUKjsQ3+i9UpMCTPr7C77+JhhqwHWO1S321IzrFT7CkxNe2vzDDHjb/ouqFwKQs4hUMGDfXOf9f+WKJnWveDxmKcm8j90mwnlcjAuyjKnm/00DtRo7ONmwlgothcActEa7HlbZM5NhYGxDFZPH/Ua3gkPfZciN/kko00nXSLxZYVxjespfRe1B5lu2MIf8Ug7zmmS6LahCg7EqT+ZTY3fSTNFkNDeN7jn6 spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9275e5d9-ce91-4853-61f0-08d6606a26be X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Dec 2018 19:43:55.6221 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB0784 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.154.42 Subject: [Qemu-devel] [PATCH v1 07/23] 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..f853d01803 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 Wed Dec 12 19:44:05 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 10727043 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 69F806C5 for ; Wed, 12 Dec 2018 19:58:38 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 57211283F9 for ; Wed, 12 Dec 2018 19:58:38 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 4825F28BF0; Wed, 12 Dec 2018 19:58:38 +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 99403283F9 for ; Wed, 12 Dec 2018 19:58:37 +0000 (UTC) Received: from localhost ([::1]:47767 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXAeS-0003uu-Jn for patchwork-qemu-devel@patchwork.kernel.org; Wed, 12 Dec 2018 14:58:36 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48570) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXAQa-00013t-52 for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:44:17 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gXAQW-00027I-2y for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:44:16 -0500 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:29184) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gXAQU-00024X-Bg; Wed, 12 Dec 2018 14:44:11 -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=1544643850; x=1576179850; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=MTgOhhUMsT7aZraYP6giKW6HdnX3J1wQteJiYuppo6I=; b=k9kx6HIzsJppQ2xQuJVv47YcHJ3XjG5HHDT0bdkWbu8y09ZvI/YOVkPv jHE9+dAODAUo8jsyDsgm/Hark/UtP220Kv28jKKywxddl1CkARw6V6w6q Akm7jqEG+y6NGSs6Qda5p475ysJLFgiaYh4MI/hL95NE8guVXzwqqfDOB QExZlUl3cAOueEPyOkSSt35LzXWm1onMIphvCtQyUXleeWpB500P/Y/tY moxZsvBNev6nTIm6vZ1rhBgQOSPg35yLasoe/baZnaFxBnOeaX7E7lfAm t9pnghg6u0bcrSGEQswNdUkij5a258IwWHY4xqzS4nVQUjtoWsMH1KVji A==; X-IronPort-AV: E=Sophos;i="5.56,345,1539619200"; d="scan'208";a="96440847" Received: from mail-by2nam05lp2057.outbound.protection.outlook.com (HELO NAM05-BY2-obe.outbound.protection.outlook.com) ([104.47.50.57]) by ob1.hgst.iphmx.com with ESMTP; 13 Dec 2018 03:44: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=QDpXuK5hgy3y2w3yrwwpoZTyy72ju0uVWl+Nz7aBGYE=; b=IYmqtYm+9NAbrrexCN7hjUY/qNkIK0tqw0L2rng3q3/s85invurTHpvwAIy0vHiLqo6rp1/NMLqAWLpb1IElry8mFXjgrw+7RQRAWR69D0PdVGqwMeOA0T11sDcUkm32l6dTbXE/cweelm+8/Gx8H79daX44xONkPmc2JfmDRO8= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB0784.namprd04.prod.outlook.com (10.172.168.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1425.20; Wed, 12 Dec 2018 19:44:05 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604%3]) with mapi id 15.20.1425.016; Wed, 12 Dec 2018 19:44:05 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [PATCH v1 08/23] riscv: tcg-target: Add the immediate encoders Thread-Index: AQHUklMKGdvgfeApiUWTDtbq6VRyFg== Date: Wed, 12 Dec 2018 19:44:05 +0000 Message-ID: <9bfe565bb23718e4d7b534925275c2b2df8c2b48.1544643238.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: BYAPR07CA0022.namprd07.prod.outlook.com (2603:10b6:a02:bc::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; MWHPR04MB0784; 6:948EEu3wRDz/ydhtMK9O0itEGC0KTmFqRfjCML82SmB4X3JGltAmeAjyB5F2uZB537Khtw/4Vyda+m0t2sd14FS9y4WsygYEA3jhST1D3B9ig1PcPiIWfNBjOFbSx7gjelkeb3Z52IgwkL2bXiT3c9gf6ZvVJLrfJOmwysGwdaUM+jMipi2t87lmqgbtnhsKZNdeJSd2DCQrX0MXl5mr8iXi61ygtDpDOyyzMve6Ki9eoi8DjWUiQPP9HkkwV/xpu2uMl/H08xnd9qufz1ZXI73xgApVJaiSaZze7KgbGOsRgLUm7ONELc/KUOyy8aX/LgIxMETq4Z07KqNSIop5Y4e3LcQjFJOiyHrkiJPEsdL9RnyD+SfJ1QP2fmEzngDqOphNV5LuFXzEJHT4Ir+TJEjAJiFD+jfHDOU0wNEVrhMb9c0Syr+pPMJQZSgmGBKL7kEXTve0L8d+fMmAxVm7pg==; 5:WsA8k8CCzh/fi+bkLLPqJ9hdpO7EFBPiuSrmfa9QPld66/IpGUm/4VLbqs6N8/85P8sxgQx7xk/8X9BUnJvQXWx22tCst3Tut6TZARMqLu19rZZJ/3RTNEw2UDVWmGLwfFGW+ygZegcqhn9+sSp+4pXH7cVNHF42xr19XpAEKnY=; 7:wzhgUouR0ANO6lJShjqZm5vEpq5bYgQO5jANsAm3i7SX0xu/iDfS9TgKuNHAh/c23jadvxqPFjcNV59uo/a73R/NkRK3FzdCVmLSSgR7NIMGYHiv+Ma9HmjdLDzAxLvQuPSr+Svs4bQ6Quz/+esQwg== x-ms-office365-filtering-correlation-id: 75ea9b25-ed4a-447c-d670-08d6606a2c7f 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:MWHPR04MB0784; x-ms-traffictypediagnostic: MWHPR04MB0784: 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)(3231455)(999002)(944501520)(52105112)(93006095)(93001095)(3002001)(6055026)(148016)(149066)(150057)(6041310)(20161123558120)(20161123560045)(20161123562045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB0784; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB0784; x-forefront-prvs: 0884AAA693 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(136003)(366004)(39860400002)(376002)(346002)(396003)(189003)(199004)(7736002)(2906002)(36756003)(5660300001)(81156014)(8676002)(81166006)(106356001)(8936002)(99286004)(305945005)(256004)(71190400001)(68736007)(105586002)(97736004)(575784001)(71200400001)(86362001)(50226002)(118296001)(2501003)(6486002)(52116002)(44832011)(25786009)(6436002)(53936002)(486006)(386003)(4326008)(6506007)(6116002)(476003)(54906003)(76176011)(39060400002)(11346002)(3846002)(102836004)(2616005)(110136005)(26005)(478600001)(14454004)(446003)(6512007)(66066001)(316002)(186003)(72206003)(14773001); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB0784; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; x-microsoft-antispam-message-info: izaNjg08M8452llvyjkrBC7leYYpW5CAR7KwuVQXIs4xgqHQk/+DM6ZBq5Dr7MdCK+fwkgzkiD6aOg4FpqsIOGaF3wCtS50v4IQNepib8jMSrXwJ1oP3Eg38ey2ZQkZH+l3CI3oeiAcynUu3GIuyJdmG+PTdVdBHNP6Spa3OQM4w73JtmGGCwuButQ5YW/QGAekEMqGWybctiQwiQK+TkGxGmJv8O9q2y3vKM1zX7RoUudAwSlpF8t6b/fubz3ahXoj4zrIYfUcfhDr2pG54zHO11xWMrDg8A9OTIJXSH7ayyoi7zjvPlgI2xTuuFx2i spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: 75ea9b25-ed4a-447c-d670-08d6606a2c7f X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Dec 2018 19:44:05.2004 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB0784 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.154.42 Subject: [Qemu-devel] [PATCH v1 08/23] 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 f853d01803..08838027cd 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 Wed Dec 12 19:44: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: 10727041 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 7E1031759 for ; Wed, 12 Dec 2018 19:57:13 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6F9742AC6E for ; Wed, 12 Dec 2018 19:57:13 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 63EEB2AD28; Wed, 12 Dec 2018 19:57: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 DF20E2AC6E for ; Wed, 12 Dec 2018 19:57:12 +0000 (UTC) Received: from localhost ([::1]:47763 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXAd6-0003nb-5n for patchwork-qemu-devel@patchwork.kernel.org; Wed, 12 Dec 2018 14:57:12 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48616) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXAQg-0001AW-RF for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:44:26 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gXAQb-0002BA-RT for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:44:22 -0500 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:29194) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gXAQb-00029x-0c; Wed, 12 Dec 2018 14:44: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=1544643857; x=1576179857; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=ZOKOtV8+IzFZSdFtM8kg49hAziLkFSBQIROEtvwFlcM=; b=PaI7ShMGT1YZN+qV6Y+8WkfVe7OCa98zCUQVVv+n4MLmWUlcQYHE0lad PTwvIG2qKpZSSZ05BvXQEgbmg3mwpPiOwHI8I6BtaT84rmGffxiXGAcH3 CZaZZSOv2qfAMNrI6fvLOnGDczIU8St6CGihSBqeO2OgGm+zFCjn0lBnL +SPYi9HD11eStDUn6kB2D4yMBFSO3H+H3uLXDzB26EVRMjSlZnx//ZH4P BT2s92ytnMDxyvdt4Ehybc0b4t+w7nDhKOJKzKgsJLb/ww3vsf35IwPGK OYyTH7XAa6BqEJlIvRKx6mJbZl7R/tu6iUnKn/p7h7PKmD/8Ba45cUEX5 A==; X-IronPort-AV: E=Sophos;i="5.56,345,1539619200"; d="scan'208";a="96440860" Received: from mail-by2nam05lp2051.outbound.protection.outlook.com (HELO NAM05-BY2-obe.outbound.protection.outlook.com) ([104.47.50.51]) by ob1.hgst.iphmx.com with ESMTP; 13 Dec 2018 03:44: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=1YCpEkH3DVOoDa4Jvxqsa1PHfQ48fTq9DBKoU8N6nTQ=; b=BWKh3/Ly8q0AYEEj5bq6/0HogItK3FFQ+n69cIIubC+IwDZ3GgI5BgWoG3qh2aeytFa4pn5iQUBOMR/hke39VKzB7nfBFUxpUsb3RIsbBYZTAg0y/W/oVP0ZWSvBY6Spxaf1DqeVenqR8YvRin9rottxnCpdID3V2hIRu4pWS/k= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB0784.namprd04.prod.outlook.com (10.172.168.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1425.20; Wed, 12 Dec 2018 19:44:14 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604%3]) with mapi id 15.20.1425.016; Wed, 12 Dec 2018 19:44:14 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [PATCH v1 09/23] riscv: tcg-target: Add the instruction emitters Thread-Index: AQHUklMPWE1yjZmXckOAPJcZwGslIg== Date: Wed, 12 Dec 2018 19:44: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: BYAPR07CA0006.namprd07.prod.outlook.com (2603:10b6:a02:bc::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; MWHPR04MB0784; 6:QdRR23xVyWxvtVMh+FCQa7BEbsBmkTX/RPsJncXKQ+n6oAu4IwnPRuJouyFaxqf9caJecfeQdKf9Ndln8tpjSW4Lb+Ge6n04250EsnM3PPAcJyS3VNsJiY/OkjaZakPY5BCLOcB+04XAWn4D62GUtNGNemjW8ORnUmorL6CywpM3jxyG6lZZBTTrpUzdnF+yNqwLbVQSlGvKSElpWsYbrLfV6oTZ/Bhub5dV3H1qO5q2dFWMwgfzpZA02cNEgvGqzAOhp+3HYmtEwFUKzZIruSflt5U6noVAEFzugUW8koWee9fk8Lr/PhlZxg7X4dDbGvTB7Q7gWJc/gXDggsZz8oBB2vomi+jz/sFwYLHcu3ZU8ebNDvrgPQhuBg4bWpW+IR8vjFAp3R9MMUceqlZO5PRy6FUQSwPIWm0xLQhRqlxR/KTA+lKA0TwqlZPPdmHhTWxXr4fr0tdotVAM567JIw==; 5:Ri6OpvnLXitFlJfVM6PNHMqsCNYT2eSHP2gUEHghr9Bn9E5je4O1OcgJG32cfE4Ig7ac4AqB/vCfnpHLMYjdZocgR/XeIWrxqD3QvHEfpfEAvT86hyPE4YMAiS+hCGGrsHiHeZslSU+8gfwG21mCtjAnoGg3Hs8N3yg1JmkM2RM=; 7:6AOLSuRN5CamvcERct0r0uck0qcvAN2ISp/2kPyAJ0rGSHOYEb0oxmKj+85X2hCHt5q1tRZLA5NH4TJmLwAB50UUWurstF78UNImXNj1/gswKKCURuC/pqvJNzkmQVOZebGZV7QNT/v5SQO5drdXZw== x-ms-office365-filtering-correlation-id: 26075407-006a-43ea-4d86-08d6606a3203 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:MWHPR04MB0784; x-ms-traffictypediagnostic: MWHPR04MB0784: 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)(3231455)(999002)(944501520)(52105112)(93006095)(93001095)(3002001)(6055026)(148016)(149066)(150057)(6041310)(20161123558120)(20161123560045)(20161123562045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB0784; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB0784; x-forefront-prvs: 0884AAA693 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(136003)(366004)(39860400002)(376002)(346002)(396003)(189003)(199004)(7736002)(2906002)(36756003)(5660300001)(81156014)(8676002)(81166006)(106356001)(8936002)(99286004)(305945005)(256004)(71190400001)(68736007)(105586002)(97736004)(71200400001)(86362001)(50226002)(118296001)(2501003)(6486002)(52116002)(44832011)(25786009)(6436002)(53936002)(486006)(386003)(4326008)(6506007)(6116002)(476003)(54906003)(76176011)(39060400002)(11346002)(3846002)(102836004)(2616005)(110136005)(26005)(478600001)(14454004)(446003)(6512007)(66066001)(316002)(186003)(72206003); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB0784; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; x-microsoft-antispam-message-info: GdRNYDIPw4U7IwuC6aZrHJW+0MNLouWKSYmAqwdgbdYZ9bzntWIQGGRxE4J0rqfZ+6D6ULCtd8RhE7IXi90xBUu2zmga6gUMtp21iybnrkDWVUUt98zu0XV3CQEaZZQssDCAlESG2BH7YVxFkISyug0Ery+VRJcYfYgE6kJsmWTNccolC8KE6IbHwHEVW4cjimkc7S7Q7PxOXJoQk2WSMHVNGBegmOkaTrfEHE7zULfrf3cHmXalBh3O7BnNAFd74CDozyy/9oiMjMcqI1YGfcNX6WLNZV2GBeyARnFCtevW0DZBTPbNjXLhW3AzFSeo spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: 26075407-006a-43ea-4d86-08d6606a3203 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Dec 2018 19:44:14.3412 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB0784 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.154.42 Subject: [Qemu-devel] [PATCH v1 09/23] 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 08838027cd..d198cfd5f7 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 Wed Dec 12 19:44:24 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 10727051 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 DF86E91E for ; Wed, 12 Dec 2018 20:01:29 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D2BDD2BA39 for ; Wed, 12 Dec 2018 20:01:29 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id C74262B9E5; Wed, 12 Dec 2018 20:01: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 21FA52BA2B for ; Wed, 12 Dec 2018 20:01:28 +0000 (UTC) Received: from localhost ([::1]:47784 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXAhD-0006Im-Et for patchwork-qemu-devel@patchwork.kernel.org; Wed, 12 Dec 2018 15:01:27 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48725) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXAQq-0001Jf-Bw for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:44:36 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gXAQm-0002JH-Bw for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:44:32 -0500 Received: from esa5.hgst.iphmx.com ([216.71.153.144]:5169) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gXAQm-0002Hm-1J; Wed, 12 Dec 2018 14:44:28 -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=1544643868; x=1576179868; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=tyRi0R+rgy9nvM+/ir8m8Jdro2yH+zaK+/rMrfC86GM=; b=PziAhGVdVBRBuwK5LRFaqr6tKDAXwIkFlXu0HLvmlgib+dWeRwxGGdUW JDiVwdAfr8sdJ9+uAGHc0K6rxxbDiCW3URlcZaeTRUoptL6ouRJ1l+hgb JcL2PbjporS+rT2h3IOpCFver8BSNT4WpoxYJj21UO7SHqhMui8wy5FUJ LfzIgYQnbtkeu1IhvGxlzEyXD9/LGHMydkHC5UXoixx+S5I3M2TLhRNhZ KuG7B50WzpEEhJiZkxKMwVcqnvCLuJLGMY6aYQ4anp28bnAwluYziY4uI 7vrN1UZEf3CP1o9NTIXxP/WNYp4uqpLIobNlfcn4bd3DfM7Ogl1MAIUHZ Q==; X-IronPort-AV: E=Sophos;i="5.56,345,1539619200"; d="scan'208";a="97665489" Received: from mail-bn3nam01lp2055.outbound.protection.outlook.com (HELO NAM01-BN3-obe.outbound.protection.outlook.com) ([104.47.33.55]) by ob1.hgst.iphmx.com with ESMTP; 13 Dec 2018 03:44: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=s8K9MlnjqPgHqIw8DIi0pEaAiX42YeNeBJKzwSCsLHg=; b=nlRUmQzAn0G+qEPcw2C+0PHXAeUyXYR3M/81hBvX99sKtkthbczvruci2gu1jHUBum+uT5PpUUj5lXYDZ7Lpmcw7wtSsfduC4rSCCPbJJ/QJPEtugAokeB1G5PF9S0+BTnh/l3jbdvT9iN5dYau7bHoadY4XPprPPf3dqQVEUss= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB0512.namprd04.prod.outlook.com (10.173.49.13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.19; Wed, 12 Dec 2018 19:44:24 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604%3]) with mapi id 15.20.1425.016; Wed, 12 Dec 2018 19:44:24 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [PATCH v1 10/23] riscv: tcg-target: Add the relocation functions Thread-Index: AQHUklMVndvXh6PqAkefD/MhfnWGfA== Date: Wed, 12 Dec 2018 19:44:24 +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: BYAPR07CA0005.namprd07.prod.outlook.com (2603:10b6:a02:bc::18) 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; MWHPR04MB0512; 6:3ZFvKF1vQRjZTCEXJwUoMOAyiCNyxpK3+XPxgMrv8U9qCaMr3qPwStbsuGFDecC+Bl+4IP+bdpsex4bsVSfKAIpjcM3Fe+eZMPzaclPgFYQV7O0DIZEFcw7vmtsNlPv6HIGz9u0hzQ9iexZzjobGSObkJicfR4N0L0VQcRVgng24kNrgIHQJ35dkrtrg/VYMunSQova9bHboPQTU6Cf870/5uO12Hl2rDtbVdCBxRtEQNC+JsvDZIG/mQvSjHU+SLCMr6EapeSgPPFmlXJa3ibN8iUcSjomzcQ71gNILn5fc/QM5jJ5BgZFYTaS2f66lbxyWcwO7VWR7FCiFLQi/8uzaBe0jLBzKd97ZBxbell8ImijDh9cgwEOBkE9jOEgsD4hFd2PY/L/i7aXlQUzACBaedQDmkaab4WCC2cB7koeI0w2/VxujS5F6kAR65sPVDqiXwhPnA0CgRA61ok43jA==; 5:LlZOnoguZQlyBGxMj6QvHeVIQaUfViAzgsm2h37JicSUgjVa+Npcvw5o0o/OC+0rTnidRcpb0/t9PXu29iGz6ETV5T8MnMWC3iP81O3Yn9l0VyE4G4/aiMaRVnvVaa+S/gn5JZmZFSOEhKRcsttsOT3lJek9GhMWbLd7vrCV2Ck=; 7:RL3qEhUPtBcn1OPutZpojzdurY31XTqLfc6caOruUxNl3CRQHhcGNQ24W046HXX5n2kouNIX7ubqzW76gjucDVl9kCMIzo4WWoyvseLfG5QMYPU0B8n9MAPFoZnYXlKtILejTCMbK5ttBK5dFK+eEQ== x-ms-office365-filtering-correlation-id: 0be480c3-16d1-42dc-389a-08d6606a37bb 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:MWHPR04MB0512; x-ms-traffictypediagnostic: MWHPR04MB0512: wdcipoutbound: EOP-TRUE x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(3230017)(999002)(6040522)(2401047)(5005006)(8121501046)(3231472)(944501520)(52105112)(3002001)(10201501046)(93006095)(93001095)(6055026)(148016)(149066)(150057)(6041310)(20161123560045)(20161123562045)(20161123558120)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB0512; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB0512; x-forefront-prvs: 0884AAA693 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(346002)(39860400002)(396003)(366004)(136003)(376002)(199004)(189003)(316002)(66066001)(97736004)(71200400001)(2501003)(71190400001)(76176011)(486006)(8936002)(6506007)(386003)(102836004)(118296001)(3846002)(81166006)(44832011)(186003)(25786009)(26005)(11346002)(6436002)(6486002)(99286004)(2616005)(105586002)(8676002)(6116002)(81156014)(52116002)(5660300001)(6512007)(478600001)(72206003)(53936002)(68736007)(256004)(50226002)(110136005)(446003)(54906003)(39060400002)(14454004)(36756003)(7736002)(2906002)(476003)(4326008)(86362001)(305945005)(106356001); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB0512; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; x-microsoft-antispam-message-info: U+rcWkEP75H7At36Oh/vnf9M1UuJSj4lvn+PmCRUHWys8Rbpls2f9zDsQAeKSKRnbuPtydZY3jrJ+8RPTlFUM1budPPLn1MeK9wg8OGTtvAWq4Do1IUvtYsC6fEcOvwpRNT0DUfUEowbEoa1tqXNEH5xHx/ay+jC+5m+3se3Ifra7s6fHXDKjVIO7HWG6Q0c94wOcpbC22+aOIyQJlwtvfzUMBu7zNSC8anhHBT0xe7Ic5weGATN98q/rg/BmKtXdkJzOPoWUSxYEHEY3yho8yJ+T++CTT/+FUPVdvmeMbbq2EfPg4p7O+SoaUrPtavM spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0be480c3-16d1-42dc-389a-08d6606a37bb X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Dec 2018 19:44:24.0914 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB0512 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.144 Subject: [Qemu-devel] [PATCH v1 10/23] 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 d198cfd5f7..e6ad5f8e4c 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 Wed Dec 12 19:44: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: 10727059 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 4C09091E for ; Wed, 12 Dec 2018 20:05:04 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 2E2282BA25 for ; Wed, 12 Dec 2018 20:05:04 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 1D8CB2BA2A; Wed, 12 Dec 2018 20:05:04 +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 8B18C2BA25 for ; Wed, 12 Dec 2018 20:05:03 +0000 (UTC) Received: from localhost ([::1]:47827 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXAkg-0002IJ-O8 for patchwork-qemu-devel@patchwork.kernel.org; Wed, 12 Dec 2018 15:05:02 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48769) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXAR0-0001T1-6Z for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:44:46 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gXAQv-0002QT-8j for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:44:42 -0500 Received: from esa5.hgst.iphmx.com ([216.71.153.144]:5174) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gXAQu-0002PW-Ul; Wed, 12 Dec 2018 14:44: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=1544643877; x=1576179877; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=ookweqeZLjeL2Lz7voqrc9DbCKjEM0E2+4wtuU2pn7I=; b=FMdJeJ20kqj+lvVJHyxigVyEanmn75NGMNfI5aRxkL4vNnHm8vB9r8fW LvyJEPz1e9IluaAs0RecEZMVRpiF3gzcsBfdgheFsEHrpkR1OuR6pmv/N OxODUE5l0xGYNGy/PltU+XkmC0WUl6vrmCG/5exHk9dJNkG8GX1Zdmv0L vYLLg8VmMVNVsBTLT6lxzS5z389u8Ecuf0qq5UP1qU/wt3dtDmxSYCc0e ZndpB8xgfKWmb7qZyLkUtzG/QLId2iC0ah0WdqN7WgF1wygNksCMHRDv1 51KVr4VCqfzHQ7r8aIJNXgyumP8mmp17K2bKqh48kMj4rTm9UJ2eX+DpG g==; X-IronPort-AV: E=Sophos;i="5.56,345,1539619200"; d="scan'208";a="97665492" 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; 13 Dec 2018 03:44: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=VUghOF1seEr64l3rWn2OjydR/AZWutUqfs3IxJmNPxE=; b=fIAFFrKSeBIzdu/3JPb3oZd7yFWbEZdphJkKHeRdO74bEWJ3VbGkzIL/t75L8Naul2n4fx8t5e/7OMY4XhpbEXwHyDvEAT4w4l4VSIHfr5FTKGypQvBWXyWL+2tUi7V+CBm437d/gf+bR/ASdD7N/t27FrVS7DJFrwYN1tlbXUY= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB0512.namprd04.prod.outlook.com (10.173.49.13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.19; Wed, 12 Dec 2018 19:44:33 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604%3]) with mapi id 15.20.1425.016; Wed, 12 Dec 2018 19:44:33 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [PATCH v1 11/23] riscv: tcg-target: Add the mov and movi instruction Thread-Index: AQHUklMbUqUmdv9tdUatt/68+Omqbw== Date: Wed, 12 Dec 2018 19:44:33 +0000 Message-ID: <0c8383b7652e682cd683a04f7e0660a26c1510af.1544643238.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: BYAPR07CA0027.namprd07.prod.outlook.com (2603:10b6:a02:bc::40) 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; MWHPR04MB0512; 6:E+BSqYLAD4eORCqROrBXuxNgHepspUlDcFBLCvs+i6aOyYRwV5DL4VEElELk4KKpwNL07EZJ/z1FIiGT6iEetWrFUV1mecOGpNAIgfmik899HXp5gPBPEU0l950vUkL8SOeXY9MKzYnSE+afljstJXlb0QX9Zk7/rj13lilRrV7qWM8f6VRtiXUzuzOzLoLz+FtGnwTLQDnVhZk4uwvZSOt8r+Zm6fPBXcUzaIqLgm2aDtgBYU19Hu0PfHeWiQBYeP8WnHlFKWa/DyJtcLteQyNxrna6/AZPYqI7tXX32Ae/rLvma+tqT2dvf9OwA9WBLdLS/t8oE9nwd9uAwrk23xBFf/vFOJ0q+QcSc6N92DMGKbSnDPdbyEA1huf1nRuPkDuvH5F2nU1yWUO8FKI9kIIO5fsssGYttptPtKGZroEO4m80dwoXTSRQZM5ynfTTsP5/1bYtki0H5v/l/Vaw7w==; 5:VwSo5hzWHGeR4X2YnLoQhPPJZM6RbAy7ILlZ0+OEUaKS+PsvgxcHhaRkdb/A56ptwja8+F5Sq4edWYbyiPm7dvaTk1IgOPXZhEcOuDWdEstPXNqj/bhubNZZhEg426yoAC3R1/gSqkSSqdj4Q9s5P+wiuFUhhoHYXTAiD8ya8Kk=; 7:9+Bj3bwVfi6e+aiCjFDERcwI6VupDjG8eVIkwmvEim4IzWlU6u49wE9+LihV0NjjlKpW2zo7DqkWWAfrGVfY8TMzf08aXzGp8V/wCPblhyVClCS+olb+IzSZgUYT77+QDV+QTfsKvt0o40ZXt7DQDQ== x-ms-office365-filtering-correlation-id: 2404be85-371c-4bf6-a689-08d6606a3d56 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:MWHPR04MB0512; x-ms-traffictypediagnostic: MWHPR04MB0512: wdcipoutbound: EOP-TRUE x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(3230017)(999002)(6040522)(2401047)(5005006)(8121501046)(3231472)(944501520)(52105112)(3002001)(10201501046)(93006095)(93001095)(6055026)(148016)(149066)(150057)(6041310)(20161123560045)(20161123562045)(20161123558120)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB0512; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB0512; x-forefront-prvs: 0884AAA693 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(346002)(39860400002)(396003)(366004)(136003)(376002)(199004)(189003)(316002)(66066001)(97736004)(71200400001)(2501003)(71190400001)(76176011)(486006)(8936002)(6506007)(386003)(102836004)(118296001)(3846002)(81166006)(44832011)(186003)(25786009)(26005)(11346002)(6436002)(6486002)(99286004)(2616005)(105586002)(8676002)(6116002)(81156014)(52116002)(5660300001)(6512007)(478600001)(72206003)(53936002)(68736007)(256004)(50226002)(110136005)(446003)(54906003)(39060400002)(14454004)(36756003)(7736002)(2906002)(476003)(4326008)(86362001)(305945005)(106356001); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB0512; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; x-microsoft-antispam-message-info: FZnr0yBS7Jc/qGXLiGFV6brS4NSARmrj5FAopc49LwgiUJvrNoSIfiyV8yfl7gEhAzWGMwP1U3tIEF3+rr7f/IvvTMIOmvs52iSwFXoyo9D+4i2fpOZEemCiNveKYbGaaW17d9ShpOGBHqPnRbgJhMmdp0Mel2RClh7I7w32v9H1e2JGlxMrIbuBpzblaa/rbOVvWwoIgGkWoWgLTbwDLrsnf+8CFxklLcWVsI8nkPbqsAzwhf/6k3VWHBh8wbt9zEZczko7RkL8uQ+QAqJO+QRleQLjaV6nztIMEixPD9aHszMdTII2OmBMrRW+qrVO spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2404be85-371c-4bf6-a689-08d6606a3d56 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Dec 2018 19:44:33.5767 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB0512 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.144 Subject: [Qemu-devel] [PATCH v1 11/23] 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 e6ad5f8e4c..9baa8a19c4 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 Wed Dec 12 19:44: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: 10727031 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 475F115A6 for ; Wed, 12 Dec 2018 19:53:14 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 395B92BA04 for ; Wed, 12 Dec 2018 19:53:14 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 2D5D22BA0A; Wed, 12 Dec 2018 19:53: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 A6CF42BA04 for ; Wed, 12 Dec 2018 19:53:13 +0000 (UTC) Received: from localhost ([::1]:47735 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXAZE-0000TD-TB for patchwork-qemu-devel@patchwork.kernel.org; Wed, 12 Dec 2018 14:53:12 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48828) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXARD-0001fY-9v for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:44:57 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gXAR8-0002Y3-Py for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:44:55 -0500 Received: from esa5.hgst.iphmx.com ([216.71.153.144]:5191) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gXAR6-0002V8-OH; Wed, 12 Dec 2018 14:44:49 -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=1544643889; x=1576179889; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=sOqf/6FAWgmTTeqIztojf6eWR7E2llv4rVEW+VDEj2c=; b=l1CaC4GWL2ODERLDXv5AIS+aJyDv1wEkbG4QqEPY1w0SfZmNxZTOJib2 kyAv+hyEDPbUkHYuljfG4xm+zCeMO9c2zHLURr5LJlWcj+O93ZDCCL1lP Eokw+ZpRykEBg6ETPzi4bx+VF/qbULowHqioYLsMyD+OHx9OycmptqJX+ A5WA4ibBFfO4yhMRP8ZnAbvfilbSNEZxtK1wTVnuxdg2PIXnh10w4OVY+ V3L/A+S6YBOfZ/fPtmbJZWdxjUVpJ2knIxKUg7idik73fIg30dT9FxHRL pGzi7xNXhMR03wdCh4z045k9rIhDokDtIPKR9y+/OfPlQonkaP4RZ5mz9 w==; X-IronPort-AV: E=Sophos;i="5.56,345,1539619200"; d="scan'208";a="97665499" Received: from mail-bn3nam01lp2055.outbound.protection.outlook.com (HELO NAM01-BN3-obe.outbound.protection.outlook.com) ([104.47.33.55]) by ob1.hgst.iphmx.com with ESMTP; 13 Dec 2018 03:44: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=OLnS7SYOjNlvKzEfcDQHAwixJVmzHxujZR/twjVJJ3A=; b=RbGBZqVoFkAPRpQz3ivTJPY4rMQVch62kKyMHn7/TJKT3GnxiceCM24q98nwziqW8wOzgRkmbLEKSOwCNCPdi5JkY8u2NK7HMoOzkFsSLhU+EoWZfb9rGeS2g+r2Wjf0rGpytp9xWGKtPYlLNs9Rho6Fvqasc2wu6rBT1MYOwfM= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB0512.namprd04.prod.outlook.com (10.173.49.13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.19; Wed, 12 Dec 2018 19:44:42 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604%3]) with mapi id 15.20.1425.016; Wed, 12 Dec 2018 19:44:42 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [PATCH v1 12/23] riscv: tcg-target: Add the extract instructions Thread-Index: AQHUklMgWSVy+h7Cr0uKkEpTIR0RhQ== Date: Wed, 12 Dec 2018 19:44:42 +0000 Message-ID: <3e6d49cc45e66c02130153ea818bedeae9995776.1544643238.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: BYAPR08CA0036.namprd08.prod.outlook.com (2603:10b6:a03:100::49) 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; MWHPR04MB0512; 6:1+Tj0cMfet7lvsXS/C4moSVpXlIsGVBltLWzmfLO3zNosiUf1RyvL4SPKLxIxJwdPCIHvWC62Doz1GIuL6lQHBkgPVD3XF0KP+tjKZ+aL3HGxZA3RjdP5iRm18DGJJ92tjrITllB823orfdexRfBPwYPzJwJY5FHGhlTFAc055zORpSDWeqVN1/WKECGfkwpLMDEo2SaACdXyz8+W9yku+iD0KQLkkTxp2RoYXVVSODcxM4tDLKLeCV2Y/wm/XLLqrJnO7+F+rLCCPB8Y7+GRoOEEfLy8xOCcWXGqy4FuFf433FtPJnHeauBKTTzA/SNk2N8XvUG3dLAk8ru3oMiNIPCKNCtJ2QY+75EP2GKu4OL0YcsJoEmi58/D64qo4P90UP9ldtIbYNw+9T3vSdgtZuVKPd8xSBkdRCvJcthrjb/pyeFlU1yMyMwWEFy3GM4+kPCKbImhi7m7Q91uy+bgg==; 5:vR8hTIUIxDMyzD5nMHR15Jmcmji/cZiFsTmjo4Hb4sf/sQ+IqRjnL/bCv1bvi/qXtHueyPezO+esY3fCQfoDKRMZdD1qoAbnbS59XQ8WRa6yg+EX8AAVOtPgcdTg/V6EYao0o7LMkxzidddo7Ym6MMPBKhbYMu+ypRiFx1or540=; 7:AGYiQIWGANKbHKEcoyXUVxqvu4ggKfH4upcujG8PSDQlzyz1hei2hF1E0eqWvyCY8ocSlcXASP46rzHyDsjWR7u8w9y13lFCz5tFqRzqjdM1pMvskROE8UawMQEaTg/Htj6Ri315GAg8OICbWqviVw== x-ms-office365-filtering-correlation-id: 22c059dc-801e-461d-b84e-08d6606a42f6 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:MWHPR04MB0512; x-ms-traffictypediagnostic: MWHPR04MB0512: wdcipoutbound: EOP-TRUE x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(3230017)(999002)(6040522)(2401047)(5005006)(8121501046)(3231472)(944501520)(52105112)(3002001)(10201501046)(93006095)(93001095)(6055026)(148016)(149066)(150057)(6041310)(20161123560045)(20161123562045)(20161123558120)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB0512; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB0512; x-forefront-prvs: 0884AAA693 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(346002)(39860400002)(396003)(366004)(136003)(376002)(199004)(189003)(316002)(66066001)(97736004)(71200400001)(2501003)(71190400001)(76176011)(486006)(8936002)(6506007)(386003)(102836004)(118296001)(3846002)(81166006)(44832011)(186003)(25786009)(26005)(11346002)(6436002)(6486002)(99286004)(2616005)(105586002)(8676002)(6116002)(81156014)(52116002)(5660300001)(6512007)(478600001)(72206003)(53936002)(68736007)(256004)(50226002)(110136005)(446003)(54906003)(39060400002)(14454004)(36756003)(7736002)(2906002)(476003)(4326008)(86362001)(305945005)(106356001); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB0512; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; x-microsoft-antispam-message-info: bNXaR90eXt3U0m0NL4a2bPqfxsq2BYHvueT2k5NMOcAA8U5cbBJuG7JDydoGraFDzJpVyXRpGqVBMz8cGNLPb/myS60NoGSRv5pzDva7WqzKz4fKO9am1PriUUqtjKXqgTc8XXKDUvOpBfJg3iJcOsPEKhbJum9Mh2WdAvpDUcRi/D6Jvvmg66wN1FXVtFs2sJlMLbqvS45xZzTMBNMO1sGa3Ao9FN1IfcuDexj+Wa7JLsIYXmg1Uu7UXsVACFZ2AxGHR3gFSWhCSkfcyy4+o/Fz1TD9vmaX9S5LsTSCBS3kUVBDg847FSUPYy03BtF+ spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: 22c059dc-801e-461d-b84e-08d6606a42f6 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Dec 2018 19:44:42.8269 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB0512 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.144 Subject: [Qemu-devel] [PATCH v1 12/23] 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 9baa8a19c4..6d63541da0 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 Wed Dec 12 19:44: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: 10727049 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 C97C86C5 for ; Wed, 12 Dec 2018 19:59:53 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id BB4A02A26A for ; Wed, 12 Dec 2018 19:59:53 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id AFA502A2D0; Wed, 12 Dec 2018 19:59:53 +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 057EC2A285 for ; Wed, 12 Dec 2018 19:59:53 +0000 (UTC) Received: from localhost ([::1]:47776 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXAff-00053m-QG for patchwork-qemu-devel@patchwork.kernel.org; Wed, 12 Dec 2018 14:59:51 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48861) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXARH-0001ja-EJ for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:45:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gXARD-0002aQ-AJ for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:44:59 -0500 Received: from esa5.hgst.iphmx.com ([216.71.153.144]:5191) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gXARC-0002V8-Cc; Wed, 12 Dec 2018 14:44: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=1544643894; x=1576179894; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=+EJ+ul43v5/p8vJZGAkZE3VOYr4euif2FAWaTWrNVhU=; b=A3IMcgGErM5cCNG+KIT32R/8Ae9KXFI3DOl3Rn1Btr+M89Whe/P5uhGT JfFP3i2EhQg3Uy4Uy80xR3aLnpeCcpqvKL4DyIunzBNOJ2ddmLFscliJh 6eyRsKWqwPnetWl5KAJpsTipmNUrQ+7WHtJbiEU/ZLCxbn/dssLM/JS+S xHOzzrMW5bXfkpSae8J0TbEZpegOhx7A+WzhnD4NNzovJCjOx0IQI4gSj QC4DG09I90JdM9gOGsl4fWrGaFXO0Au2OxfIMKnihnpNgvX6uGF5OEFHo YKVt67Q9+VL08+BSoX8rCroOG0buBE86StWrh+UnSS4eGTfE01q7QFuJn g==; X-IronPort-AV: E=Sophos;i="5.56,345,1539619200"; d="scan'208";a="97665507" Received: from mail-dm3nam05lp2052.outbound.protection.outlook.com (HELO NAM05-DM3-obe.outbound.protection.outlook.com) ([104.47.49.52]) by ob1.hgst.iphmx.com with ESMTP; 13 Dec 2018 03:44:53 +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=HIIgAh/IJWnmiURX0G8qNgKnh+/mxg2w4xTFjIOVagY=; b=KrB+XT/FObqTx+hUTTkNggXWxXf91A2ZblDdVZb8/BrjOrL8NuSkQn2PgcyYnyhgSro4Gq2Lozy9inr4kq6GrMvfSYB71NZWHnMgjR0BjsCdYAkh9Mg0UOFlWu/iqRyEfeR0Xrc72PjNfZEP2nojipbPgnoFNi3Uj7XZ63+XrsQ= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB0593.namprd04.prod.outlook.com (10.173.49.146) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.22; Wed, 12 Dec 2018 19:44:52 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604%3]) with mapi id 15.20.1425.016; Wed, 12 Dec 2018 19:44:52 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [PATCH v1 13/23] riscv: tcg-target: Add the out load and store instructions Thread-Index: AQHUklMmg8DbusembEaBp3BAZfvMIg== Date: Wed, 12 Dec 2018 19:44:51 +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: BYAPR07CA0088.namprd07.prod.outlook.com (2603:10b6:a03:12b::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; MWHPR04MB0593; 6:sJ0V3rLeJqZ5hNMRyBWlE9l42B+oVxMrM33zJKtm1fhsiAH68BOpBklT647S86TaqG9ZCqMLeFfJGVeqC94RC88ipKPfXDITwzqhH4fcOJaRZWPQ4MWnb3WsFNx4uZ12dEeN6qj/mRAhqfy3YdLoQ3UqQhs8mPeWXQEd6c5uwF00pNFILyVSkoJjL81iDrumDPoG/4QysyoJKdNO1aySlas/1qmr7uqFQXuxFMAS9ocLj0/6C698k7/lYd/3bbVjy9SJWueP10x8m/0V5qiVIsSjpXGE2SOdX7RusnTR5cvwF7oxlHGwLKzJcqF5oX1UdEeLG5KPQX3FmEXgegxsEq40SJ2/nXj6PnT1n2qKYmK2GxM7Qr+LOW8hODfVrhSCziRHb70UBs+jK8UIZvLXAQensxEwqAam4XxdC8Ga9yhm8yc/znfTX7yQi9tV3a3voL1ydNFAkYQnPzCMh2obUA==; 5:Auq1NLf+0BIhZKuHdgYKOc3M2F/ubKJ+0aA4ZW7DQ/ILXyl2C6OABezOCXPhLKPOzls5j4ls5nNdibwsqfqXjY00BRMKMZjoIo2AdcNKmNFuoWMK8vnMJ2qyKKUeivyzfHlDWgiDbzpZzgD8nwyNYpL4mXOEQ1whEir9U6aHtSQ=; 7:XKWIK2sWZNMl7+OnTHPhZ8KVg01K518sEID2XKpl9Lq20yA6yZej8H9m6Mip8YQQM4mrWinmxOUfBR+895omkMBKXHa9EwuI2iw65Lhcu2b46QmPYHTtASYx/jxc11aCzGjOS64U6x/ft/BvaD8FcQ== x-ms-office365-filtering-correlation-id: cf46ad9d-f172-4f82-55f3-08d6606a4862 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:MWHPR04MB0593; x-ms-traffictypediagnostic: MWHPR04MB0593: 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)(10201501046)(93006095)(93001095)(3231455)(999002)(944501520)(52105112)(3002001)(6055026)(148016)(149066)(150057)(6041310)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123558120)(20161123564045)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB0593; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB0593; x-forefront-prvs: 0884AAA693 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(366004)(376002)(396003)(39860400002)(346002)(136003)(199004)(189003)(3846002)(99286004)(6512007)(256004)(2501003)(36756003)(86362001)(118296001)(53936002)(6486002)(52116002)(8936002)(105586002)(6116002)(106356001)(76176011)(97736004)(71190400001)(54906003)(110136005)(39060400002)(316002)(486006)(305945005)(7736002)(5660300001)(2616005)(68736007)(446003)(25786009)(4326008)(71200400001)(2906002)(44832011)(478600001)(186003)(50226002)(102836004)(386003)(8676002)(26005)(72206003)(6506007)(11346002)(81166006)(81156014)(66066001)(476003)(6436002)(14454004); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB0593; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; x-microsoft-antispam-message-info: 6ZhzYMkWTQnG0gui6hj050F1HY4OuVxlzKHlSvEUyznbENhrslEBagy9MzvH4oykafKPOhb5sfbV+vNnlnnffTDWa5WRjERscKqcpkDtoZmWqzHfR9Ke8lmN50K038YKI3dNUTI0ACNijGOp/1brO2+f/gQ1WkvHNDSsBg+MJUbg54URLrX99epWHzND+XoQnV8+vYDFrOcZe2KQvzB86c3BEUlVj/zGfRzSy+66kxguSD01oaJYkAdJLh9ZHivQKvTLHLRBxgBJMn+rMldUX3pRuhBuMJy/RYfbaxZW6Dhnx2mnRYq+Ws4oVTzHgcts spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: cf46ad9d-f172-4f82-55f3-08d6606a4862 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Dec 2018 19:44:51.9207 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB0593 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.144 Subject: [Qemu-devel] [PATCH v1 13/23] 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 6d63541da0..57084e747b 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 Wed Dec 12 19:45: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: 10727061 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 8148B91E for ; Wed, 12 Dec 2018 20:05:40 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 747C42B7D5 for ; Wed, 12 Dec 2018 20:05:40 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 67DFB2BA2A; Wed, 12 Dec 2018 20:05: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 509C72B7D5 for ; Wed, 12 Dec 2018 20:05:39 +0000 (UTC) Received: from localhost ([::1]:47817 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXAlG-0001bG-AB for patchwork-qemu-devel@patchwork.kernel.org; Wed, 12 Dec 2018 15:05:38 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48907) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXARR-0001t7-Nx for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:45:11 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gXARN-0002fh-Ku for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:45:09 -0500 Received: from esa5.hgst.iphmx.com ([216.71.153.144]:5210) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gXARN-0002er-7J; Wed, 12 Dec 2018 14:45: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=1544643905; x=1576179905; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=eHFMdrQGsbm5bCRWozxtxGTOXfHdGfhd9rGDDpHy7Xc=; b=MZcOnE4w3UczvmcybejVN3zMzLiiEiVlX7mfXuylq4x0M9JOYHgGlstU 42wht4E//G5OGcFSI1zflKkmMfNFqJ9uqWMSKh0PeVmj5VbRXh6Nrd+U6 XOCRpILZfOvL8yCnR0NmkFQNq8giJZfqKeoSESDpSuMQwsDc0OqCvUioh rTcB79lecqROYegJmJPni3mYTUlJP7M3cKHBeS2GUoLkxJXG7VkQxVNHF w9VtMuV0qxCF/qZVKZr6LuxVC6cUh3ioP8AiOV9Y4TTK5xX6ciKRMQT60 CWEYY1q7sD2uE42L/STMO+Zj7nDRtb0PEwT5WxhagzPj+g2srCmuxcLAc w==; X-IronPort-AV: E=Sophos;i="5.56,345,1539619200"; d="scan'208";a="97665514" Received: from mail-bn3nam01lp2055.outbound.protection.outlook.com (HELO NAM01-BN3-obe.outbound.protection.outlook.com) ([104.47.33.55]) by ob1.hgst.iphmx.com with ESMTP; 13 Dec 2018 03:45:02 +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=wu+T+hRonPCtKQc4NP7YBmkkqD0aNF5eDgcHVA4Q17w=; b=nbRnlbv7kZOLZY1MmvbkTp49QS44YmOL2CItHi1Cdx2zdmfgFVk7+39k0JCZNJn81hPib+6rqp2ZPUfewjiW4z4wUPXCYpF2PxajIH1N1uleXVSjK4s/vHo2wIY5fYWgiOCnp0iwhr71oiplGUOdE2rOQS2EdrLXse2dha6c6lI= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB0512.namprd04.prod.outlook.com (10.173.49.13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.19; Wed, 12 Dec 2018 19:45:01 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604%3]) with mapi id 15.20.1425.016; Wed, 12 Dec 2018 19:45:01 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [PATCH v1 14/23] riscv: tcg-target: Add the add2 and sub2 instructions Thread-Index: AQHUklMrr/TIU+j+dEGp2QxeqqVmFg== Date: Wed, 12 Dec 2018 19:45:01 +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: BYAPR01CA0030.prod.exchangelabs.com (2603:10b6:a02:80::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.171] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; MWHPR04MB0512; 6:U+46V/oIPStsn/0PTPvyw1S5+rK77jHE/YvZ+SwS9Lb+GX35hEkQ/v1Hk00DyMaWAk/g2ppIxlJUHNWMRsZRUiXlwCGVY4MNi6lrAaIVItddhcFpP6VOFment70FvKjM0Grr4/kvDtjhE7EtWmz4bd0ANerwH52yBZRdLhm1tdcDniDKhACkY9llZN79Um2BHfqn2SYV3rHYeG+0C4AMbzEdLjFjrt4IC/Mvgo3ncYyI2W8lbRfvJjrj94WYNiSAn3jzJV8Hg0BN/q7H9hOwmOybjZ2IZ/0ZyGD+VJ0PNUsLjtpU4c0u4vz4YWlC3yXLA4xhABugWlQ8kgrrE67yojhhX8wbVoKNcWaScVazb6FDfgCoiDZJY1ZiR/0JDU/EccJ18dGKjSgcvjlHHyoSjZxKiaDgVnHXSlidumoKdzt1PFcrkYRVKi1TpjPvU3srAbUCAcPQO4JXQg71vJLuYw==; 5:Kcbb4eIbDKKk59vx+mxHv18BPsIF5jxFmf5CCdgiOh6bgODXpb3qymSf4z1B4WbK6nGhrrQYYMsqK8m6aK6FSV765ntTMXeaa4Qgq5sQwCAR5ypSgf052rC7d/51p6rfIdbyJ+zwopRrIsR+PGP8yvPkDptlhp8pAwp8BvIXN6E=; 7:V5jhwVzR0z4GnNhw5xXV3pAQa4ZjAClunToP5GrX11VgOTq479NOwkdqmHSYnoLA5Qoc8F4FCJOn3ZwNFbniGHMtKJKL9dXNz+7Nb/WFTd9QrF8tgiktInD+Nw+OcIYxnYUl0YWZim3kJHFQm1/aVA== x-ms-office365-filtering-correlation-id: 712ecedb-4b80-4de2-f289-08d6606a4dec 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:MWHPR04MB0512; x-ms-traffictypediagnostic: MWHPR04MB0512: wdcipoutbound: EOP-TRUE x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(3230017)(999002)(6040522)(2401047)(5005006)(8121501046)(3231472)(944501520)(52105112)(3002001)(10201501046)(93006095)(93001095)(6055026)(148016)(149066)(150057)(6041310)(20161123560045)(20161123562045)(20161123558120)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB0512; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB0512; x-forefront-prvs: 0884AAA693 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(979002)(346002)(39860400002)(396003)(366004)(136003)(376002)(199004)(189003)(316002)(66066001)(97736004)(71200400001)(2501003)(71190400001)(76176011)(486006)(8936002)(6506007)(386003)(102836004)(118296001)(3846002)(81166006)(44832011)(186003)(25786009)(26005)(11346002)(6436002)(14444005)(6486002)(99286004)(2616005)(105586002)(8676002)(6116002)(81156014)(52116002)(5660300001)(6512007)(478600001)(72206003)(53936002)(68736007)(256004)(50226002)(110136005)(446003)(54906003)(39060400002)(14454004)(36756003)(7736002)(2906002)(476003)(4326008)(86362001)(305945005)(106356001)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB0512; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; x-microsoft-antispam-message-info: WavNP/22TwCKNJd2P80guyWhpCxtlaEhC2YgWWfGCn+Gf2adb7datJwAMqp8taPdnuHi2k+olHS88Vvj47az0epHloPPvoE9ha0O3Zq4wAGiPO2oD+IX24qQwnVYRej/wcHje3x8nrL4St7+6nQh9HV7uQsKo2keLEXHgoy+03IXtQS9r5uXk525pUpgPOrIN6NUT5qE1ZkvMhaPgdnM7mk11E4eQWVoBxt9Se7H32RTICxl5aFs+feeL3y1CjqmCGeZKpHqiumnaoKO6IywAsVB2CqdrVCMGOn8nPvaJWahgxPgGk4jEM65My3du9ju spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: 712ecedb-4b80-4de2-f289-08d6606a4dec X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Dec 2018 19:45:01.2177 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB0512 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.144 Subject: [Qemu-devel] [PATCH v1 14/23] 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 57084e747b..586a8917c7 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, + TCGArg bl, TCGArg 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 Wed Dec 12 19:45:10 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 10727037 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 949A66C5 for ; Wed, 12 Dec 2018 19:56:04 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 87E082AC9C for ; Wed, 12 Dec 2018 19:56:04 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 7C9052B898; Wed, 12 Dec 2018 19:56:04 +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 B53632AC9C for ; Wed, 12 Dec 2018 19:56:03 +0000 (UTC) Received: from localhost ([::1]:47760 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXAby-0002ph-9x for patchwork-qemu-devel@patchwork.kernel.org; Wed, 12 Dec 2018 14:56:02 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48975) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXARa-00021n-Px for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:45:22 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gXARW-0002l3-P2 for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:45:18 -0500 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:29270) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gXARW-0002jz-BS; Wed, 12 Dec 2018 14:45:14 -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=1544643915; x=1576179915; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=AhN2PSOZV/z475YMTu0SuDzbnrY0Fun4fLpZN2svjnA=; b=Ru3oObghHMhQkViW/7c4nt7pMjUYaIkqeta2zN1Rg9OV49M3QdWy9Y8I 2zvNPUsjnlx1npVysOlqFKXRa40zIBFp/gJnMQ3lACINS3KTKdvqc6Kk1 14Zexy4zw4nMCTe17wZHkKRe8lRNvXw4H9audqz6Z6bCYZbrPTn1n0T/L Sir9+Ebe3CTCSwL7KB4/2121+n0PMQefs7aWIHk672rPr2ACZrqaH5xOZ 8BCTUDIivhr4KJap9ADM9l/Zn01kT9Of9fxMlOEnrwA8JU+VKSCcHGLu0 vsB66pBerYFGG3fLvpc2uV6VyTyYvqR0tpo54ZYYDFMM79xBAqgvPA7Cp Q==; X-IronPort-AV: E=Sophos;i="5.56,345,1539619200"; d="scan'208";a="96440912" Received: from mail-bn3nam01lp2058.outbound.protection.outlook.com (HELO NAM01-BN3-obe.outbound.protection.outlook.com) ([104.47.33.58]) by ob1.hgst.iphmx.com with ESMTP; 13 Dec 2018 03:45:12 +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=8PZZwg/nQvpn/Sb0igEEylc+b5TLbtVS5erbSlgrAdY=; b=d+8cDYvCSKBl/3ntQ/Mv3GVptLGcAReSstMiS3zDzeDFwd5uGlyQ4maB+oRVLhwBREQOTvy3FuVeZxhTB/jAs4SYKzGN2mEZkqXfZTh3ymIP6ERb35/XlVK21iqYDJeyJaLC8K41vrI6n6rMRYcipEIXF+FXtWRQzshuo+a5+E8= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB0512.namprd04.prod.outlook.com (10.173.49.13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.19; Wed, 12 Dec 2018 19:45:10 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604%3]) with mapi id 15.20.1425.016; Wed, 12 Dec 2018 19:45:10 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [PATCH v1 15/23] riscv: tcg-target: Add branch and jump instructions Thread-Index: AQHUklMxzxpCc8jMVEexYLHGnmk9sQ== Date: Wed, 12 Dec 2018 19:45:10 +0000 Message-ID: <689fb436a8ead8ffaadc76155b0ed0e74972e689.1544643238.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: BYAPR01CA0025.prod.exchangelabs.com (2603:10b6:a02:80::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.171] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; MWHPR04MB0512; 6:Isi8JvrChbEgZiX9/7NH6eq8yLU+zfFtcUIzIY8oZxEW9QLlo9YITL90TIpEVaUB3LpOqCUED8+zG6MZToUN6+FncWHUb0htc3Iwz8/aEoc/C9Hw3PD+0R75dqSSHSP36TQlJnH+u7Tdokc1H8OM0bIWTeUlqUpKP5ztlfm+cJwF6ePX6B5VCpP7sGppPmdtQXIGu6e9gD0uloxGgjIqRpjHrpQKPkasrVAfHhQyomTd0qQ1Yoj+5ToVCbdv+FWb4+sqpLZx34seomqItksyopu9nuaeUdLAH1yqaAj5I4IAsrP1doBQ7WlXSAz2koN3QaNyyO3WJwrCapuB0XPnU5Gw2GTLoy5wkS6lNEFN/kKHeTZ7NzKAPafEYEXR3V2dBywajv7YpV1xdopOoK0RrwQCRU5PX1rzt/6kcRbn/J6KOgBiHNnQVXMm65D+qUOCszgl3UyghLCzFWC9WKIUyg==; 5:MnYZ3RiCJzjQZ5CFaAllpxC/Cx0LUN38nMtBsdQ9Gx2D7PY/RzYVUuRVXzN4o/2pulXl3fDF6IT/UnixMeuQZVNap4Q+7hw5FoKSUKBd0TFtSeBkgng5SD6j+3TPpAmWwA09FbqkVlRFjAqVnJhIOXgANOpTllx9F/KT0wxl+fg=; 7:Jejpx37AjeKLTlbPWMjfTmlwqzcJOZwDm0wLla/Mcf+Sd11v/5RKZmAg6C5xkdRGkunSRYZzwKadz0E7DQhiv+C5Z8/B4/LRCr7JPqeKMQwZk/0W6q4v6pH16XH32QAIb4WbZGt8/CB1pxFX9zgoyA== x-ms-office365-filtering-correlation-id: 68883286-66c9-40a5-2c9f-08d6606a5375 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:MWHPR04MB0512; x-ms-traffictypediagnostic: MWHPR04MB0512: wdcipoutbound: EOP-TRUE x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(3230017)(999002)(6040522)(2401047)(5005006)(8121501046)(3231472)(944501520)(52105112)(3002001)(10201501046)(93006095)(93001095)(6055026)(148016)(149066)(150057)(6041310)(20161123560045)(20161123562045)(20161123558120)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB0512; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB0512; x-forefront-prvs: 0884AAA693 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(346002)(39860400002)(396003)(366004)(136003)(376002)(199004)(189003)(316002)(66066001)(97736004)(71200400001)(2501003)(71190400001)(76176011)(486006)(8936002)(6506007)(386003)(102836004)(118296001)(3846002)(81166006)(44832011)(186003)(25786009)(26005)(11346002)(6436002)(6486002)(99286004)(2616005)(105586002)(8676002)(6116002)(81156014)(52116002)(5660300001)(6512007)(478600001)(72206003)(53936002)(68736007)(256004)(50226002)(110136005)(446003)(54906003)(39060400002)(14454004)(36756003)(7736002)(2906002)(476003)(4326008)(86362001)(305945005)(106356001); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB0512; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; x-microsoft-antispam-message-info: O21b+fbaEj65yxj91vlLNLoI3AZx1y72Vn6QndvKQePIvn0tIcUhp++61sEaeLzmj3X6Yp4uyFRDCSMX6mA5eXrkJ55Kqi0hh806Z9AysOMFQalL2jH3bbPa1dWQlnIajNeMVC/EflHNzQlKE/GFt2hafcOv5hQL+wDpAKnFdTXIxpKd3Og0Gxhksw4vTHjBP8V1oHAXc0tlSqh3llR20/30eirwfa1CY+p3Pu3dI0lDHkgJWH9lM6igo8e90JwGTNUDIM7kN2CNpU7/Lt4S0KxwS3w6+7u32mxlBTZ6GAIzfP9BGNhLlezx0QBbE9gn spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: 68883286-66c9-40a5-2c9f-08d6606a5375 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Dec 2018 19:45:10.4679 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB0512 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.154.42 Subject: [Qemu-devel] [PATCH v1 15/23] 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 586a8917c7..f1ebd86516 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 Wed Dec 12 19:45:19 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 10727045 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 C17F36C5 for ; Wed, 12 Dec 2018 19:58:45 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id B1C47299CE for ; Wed, 12 Dec 2018 19:58:45 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id A3409299DD; Wed, 12 Dec 2018 19:58:45 +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 D5E4D299CE for ; Wed, 12 Dec 2018 19:58:44 +0000 (UTC) Received: from localhost ([::1]:47771 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXAea-00040j-3d for patchwork-qemu-devel@patchwork.kernel.org; Wed, 12 Dec 2018 14:58:44 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49096) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXARk-0002E7-My for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:45:30 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gXARg-0002ux-Kf for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:45:28 -0500 Received: from esa5.hgst.iphmx.com ([216.71.153.144]:5240) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gXARg-0002rl-43; Wed, 12 Dec 2018 14:45: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=1544643924; x=1576179924; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=YE4TDv0RCpHqCe/XJTgrXxuGXIuGRYRTIP/1uL58AXM=; b=N5qSaCBldVnkg8tBrpDAZnwCYrAF519CbQmc0V6SXPwKQXAbj0UXw4Ge 0FtBc57l7KHmt0CfPXZ8pXEJY4KCafymZgBXnVJUdTIolGCtyHlZEG8lE 1arH/pl27BReG/TfcnZmVx5ch/BPoLTMMqASvZwuxO2tMdhsxzHqQVIqj 5rKk/QC7/48X0v5M1zuM+jbasUhcHQqp7to85gmKncBWpHbU0pcx2ipcs v+XmJsbNJ8W7dFOtGfJK+Xle4K0fQBJn4Zhj6gHgSqbgT2I+nrXw7a2I9 FCsho34PrdaQxxDYSGKFx5+e7CB4iw9OEnPtsfq+JjThAF8U3c21K1HXb A==; X-IronPort-AV: E=Sophos;i="5.56,345,1539619200"; d="scan'208";a="97665531" Received: from mail-bn3nam01lp2053.outbound.protection.outlook.com (HELO NAM01-BN3-obe.outbound.protection.outlook.com) ([104.47.33.53]) by ob1.hgst.iphmx.com with ESMTP; 13 Dec 2018 03:45:21 +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=e8y+nPwXFfpttc8Ks0LmfUB2z/RMAoXs8XdMknjkhso=; b=JvZAK4Sf3kAoLRuLaQcLwDtKvxz9h6CWJA2nwOhbkzF2ILIq/j+ZSlj8IE7nVjnUARkGvYzQiMP7vy+4zqGNdqIPBZYx88i9DSwPMZ5n6BR/hpBj+VQ4WJPESiHGPgpgU/XUHqsVRPSLMtugnlo+TjLIOzKLhTkCfKRHDCtie0M= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB0512.namprd04.prod.outlook.com (10.173.49.13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.19; Wed, 12 Dec 2018 19:45:20 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604%3]) with mapi id 15.20.1425.016; Wed, 12 Dec 2018 19:45:20 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [PATCH v1 16/23] riscv: tcg-target: Add slowpath load and store instructions Thread-Index: AQHUklM2jzQ5q0pW+0G8dbvctJkYUg== Date: Wed, 12 Dec 2018 19:45:19 +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: BYAPR05CA0066.namprd05.prod.outlook.com (2603:10b6:a03:74::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; MWHPR04MB0512; 6:BaKuYey3MuOgTXcyoOqgp0y8aqSg5Cz0vk70xFBwaJxsOqF6yZuZJ9eX8NS1FA1y9KmwFZkxvKSKYS/jdzWQN6Jhxux1bSnrQ6h+w8nLpfZW0jRpNfmyiI04GMOXfZsuJDiMYZNfns0JYPT0+FueTs3WsMs5Ot0oKbm8fw8rHjfmRi4DtV54Vv/dynivNjTfKDOiG8+6WmAfTP2OOUJmS2ZRvtzpz1XlLwd3uXWy5rUMwkf2tv60jqmEQQ4RJ48vp3NOKBCGcJe5rCI/UxbuWTARapImqHUTi43eiBaUsG42ZlJLMFIi90nfr/r2NiQTjX/x91ojNPNk2pOb9eQTKrPwKf1lplIzCw1JpfHGCxgXWh3uLAXASd8yaJobfue2sCiCOrBjUPnZdZUNtxVYlkkaOqMOTfkpLjheOAc/PLqw0mGBoMJKMzbkXIzomu2QxGjm8PpTMvOvqH9o/QQxvQ==; 5:jXvxQaK0zxrkfIQArSN8vDlGr7zsT7uYGAq28nnC1eUpqD9dH6wVdRbgF0ao7i/SdK13MNDSN7QxzSHGbIcTYfIcJWYZApVBPOXpdmG5C9QFw7Q2RqtdIeMrXtEtnlv48P3FNGyTgr1ZGSP8ivaO1ARMyddwtCzISCP4Y1aY+Hw=; 7:DNb4WjroQHJ0inPaKLyBd/EzIv7WccodJWSPfPsj/GXS3N8oqT0d8fYhsgCCqo1NXZrETRcKyzT2hUvC9yzivSGNhCNiCQmBu4miN7tWqN1uI8oY8VAniVRb7V/IR12WBRrIfhYbND8+r0E7zLxocw== x-ms-office365-filtering-correlation-id: d795bbe2-6048-42a3-0310-08d6606a591a 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:MWHPR04MB0512; x-ms-traffictypediagnostic: MWHPR04MB0512: wdcipoutbound: EOP-TRUE x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(3230017)(999002)(6040522)(2401047)(5005006)(8121501046)(3231472)(944501520)(52105112)(3002001)(10201501046)(93006095)(93001095)(6055026)(148016)(149066)(150057)(6041310)(20161123560045)(20161123562045)(20161123558120)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB0512; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB0512; x-forefront-prvs: 0884AAA693 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(346002)(39860400002)(396003)(366004)(136003)(376002)(199004)(189003)(316002)(66066001)(97736004)(71200400001)(2501003)(71190400001)(76176011)(486006)(6306002)(8936002)(6506007)(386003)(102836004)(118296001)(3846002)(81166006)(44832011)(186003)(25786009)(26005)(11346002)(6436002)(6486002)(99286004)(2616005)(105586002)(8676002)(6116002)(81156014)(52116002)(5660300001)(6512007)(478600001)(72206003)(53936002)(68736007)(256004)(50226002)(110136005)(446003)(54906003)(39060400002)(14454004)(36756003)(7736002)(2906002)(476003)(4326008)(575784001)(966005)(86362001)(305945005)(106356001); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB0512; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; x-microsoft-antispam-message-info: l1tgrkol43UORb3yuQFlAuzajwHV2gmEcxhW3QbRUKnErEkcv8NnuCOQBQ2/Qd9NbVpB83c70fz5d5mnHuapZ1nDADXvtq0W5hzAoYyUU7FeSVdPlH/gXRQBaviM0KoOLvjG55RjRILqhNp0GsBMDOMCrqjNsB+/7ZkoU2+03NmHUCsMd0NJ14uPG4XVNqu38hdt5HmbrBuxx4LMO+EQFZbldjJKc2ghe/li+5P9YnmmkevYizPav2xxKi5Q6K4GYCf3zAY1TTrNgjVW/2B7cCy3iSraT6egeXFJZm0wavfeFBwFRxn4DMP7vIHj7PJ3 spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: d795bbe2-6048-42a3-0310-08d6606a591a X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Dec 2018 19:45:20.0149 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB0512 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.144 Subject: [Qemu-devel] [PATCH v1 16/23] 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 | 256 +++++++++++++++++++++++++++++++++++++ 1 file changed, 256 insertions(+) diff --git a/tcg/riscv/tcg-target.inc.c b/tcg/riscv/tcg-target.inc.c index f1ebd86516..bc0e7ee509 100644 --- a/tcg/riscv/tcg-target.inc.c +++ b/tcg/riscv/tcg-target.inc.c @@ -878,3 +878,259 @@ 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); + /* NOP to allow patching later */ + tcg_out_opc_imm(s, OPC_ADDI, TCG_REG_ZERO, TCG_REG_ZERO, 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 */ + patch_reloc(l->label_ptr[0], R_RISCV_BRANCH, s->code_ptr, 0); + + /* 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 */ + patch_reloc(l->label_ptr[0], R_RISCV_BRANCH, s->code_ptr, 0); + + /* 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 Wed Dec 12 19:45: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: 10727065 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 B538D91E for ; Wed, 12 Dec 2018 20:07:52 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A59022B7D5 for ; Wed, 12 Dec 2018 20:07:52 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 99B312BA2A; Wed, 12 Dec 2018 20:07:52 +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 F34D02B7D5 for ; Wed, 12 Dec 2018 20:07:51 +0000 (UTC) Received: from localhost ([::1]:47859 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXAnO-0004Im-Qt for patchwork-qemu-devel@patchwork.kernel.org; Wed, 12 Dec 2018 15:07:50 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49147) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXARv-0002LS-0Q for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:45:43 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gXARp-00032l-GS for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:45:38 -0500 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:29296) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gXARp-00031m-3G; Wed, 12 Dec 2018 14:45: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=1544643933; x=1576179933; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=nAA7B/Lr62aFGctR+EwZ4d5fuWp2s6IMv1+nV5lV/D0=; b=MHAJCkf/4ZK1y6r0fRhsP5cFqwtd4HCr19dGmtNcSEqUjk+TdILOO4+P McHEgxx1pWRjHXiy/zTiqZqd5uJ1BBwl3nnDc6B+6nZRMkKutzaB/mL+2 6WjGFkQFJZPv3QV8Rr6BaSFa1/l35zJU39dM9ztbuQNYKbjCpy72s5ayF EWZzvyN0sqnD0liRTh/dbfi7VQPDKp5sL0B7olqHZ0FUU2KUrD1+VzSIJ VlfCGBB/C9IJXyF7kfIAiA6vXUU6aLKLXMqyK8366j1a+QUXwn36aOwJU /MEGyMrOVP8Ba7D8AgB9EDrpcjAbKTuMi5Td1SmkckcyHGg29WVdq7YLB Q==; X-IronPort-AV: E=Sophos;i="5.56,345,1539619200"; d="scan'208";a="96440942" Received: from mail-bn3nam01lp2056.outbound.protection.outlook.com (HELO NAM01-BN3-obe.outbound.protection.outlook.com) ([104.47.33.56]) by ob1.hgst.iphmx.com with ESMTP; 13 Dec 2018 03:45:31 +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=81exqrBPH/3D6O7ch2dQw17QE854X6mrxIxH3YvwYn0=; b=NUvm07/X0tSOpOXC6B8sowunnBNjHrIZMmR7oDRuN/mvc0HwqQ7tyAbz+jPCBAGcGe3LKgqYyP62isJ8NVRAbleI46dAqmK4qdGa1z1+GdeCUe/HRmE//6VqUjnI6T8lCn+vvkveAkBfI/XnMThHxhIBDnXR5HwbRG7YabXtUqc= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB0512.namprd04.prod.outlook.com (10.173.49.13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.19; Wed, 12 Dec 2018 19:45:29 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604%3]) with mapi id 15.20.1425.016; Wed, 12 Dec 2018 19:45:29 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [PATCH v1 17/23] riscv: tcg-target: Add direct load and store instructions Thread-Index: AQHUklM8dC0e2vrFUEuxxkb2Y2NWPg== Date: Wed, 12 Dec 2018 19:45:29 +0000 Message-ID: <4dfc1c6576c863854c6aeb8910b0165d82fe9b73.1544643238.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: BYAPR05CA0054.namprd05.prod.outlook.com (2603:10b6:a03:74::31) 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; MWHPR04MB0512; 6:eoNRnWmvLgtWfLmR9Jq/CaNusPVXOlqaVlLkgB/gZjz+hwhwC+8vB38R7IU/Vd/uWgL8ezsUA3JU9Nt4p36khQzLOv0lWaZodFK65rlwTJPhfRVr6y0XRR8X9kSKsM2fk3i6560GeQrV/4uLO7RzYrhx2zKi+pHTdTRAKhiSc7hQaMDPmYXCsdEkbRweLLUpxNNEIRx5Z7/ABzykqNH149v+wUCSvTlJEIOVmVnlp+U0vbFVsUD0aGOa1QSKtl1Rka5kDbhEMbYr/3SoeeiuANCdVDQbcuvuYKNTwP9NSOMQw3Qne4kd0MOkF+y6UU+Orn3OOI0OyOxbcKgxaAB2A+duRjFFytv6yyTZCgHbVkHH5UyhkQBP9bj2H7ijwAkjcRczlgShd9SCjLkYpqiJXi/TtfzOCaSwWEZqaiOwKvrb+HL2FTWaDOCFtAAb9QxfsvRDSwM6GpL3pzqFla0DEA==; 5:RhixdPMDV/o1ddK/smOvV39CEn+Tx3hKldWCitPvH6ae3EM3I1wrgRyLYBoIMSXIO60oo/YF3r6FDSsVTjrDteuamIQsXSuNaGFP215Yda8IIWbooOrBYKfLv8jDW9KVlRujY1GjzHI1F8GgOF4i3CK9yiS/C8baT5Gsl1AcOHk=; 7:oY1RfXe+bOyAgn4n8eBz9vFj57Dj0KKlQRv5x/Q7lkG27nk9tNC2rJL30uEyCCyHtkFdaPhUWFomutmVMeRTR9lIVS1+0f7Fx+AUTh7U6259+o99fQVRlRaH21bhdvAUtVbIzvyLDnpgSOHSJMnzRw== x-ms-office365-filtering-correlation-id: 9fd493d4-cae9-4f1b-7708-08d6606a5ebc 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:MWHPR04MB0512; x-ms-traffictypediagnostic: MWHPR04MB0512: wdcipoutbound: EOP-TRUE x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(3230017)(999002)(6040522)(2401047)(5005006)(8121501046)(3231472)(944501520)(52105112)(3002001)(10201501046)(93006095)(93001095)(6055026)(148016)(149066)(150057)(6041310)(20161123560045)(20161123562045)(20161123558120)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB0512; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB0512; x-forefront-prvs: 0884AAA693 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(346002)(39860400002)(396003)(366004)(136003)(376002)(199004)(189003)(316002)(66066001)(97736004)(71200400001)(2501003)(71190400001)(76176011)(486006)(8936002)(6506007)(386003)(102836004)(118296001)(3846002)(81166006)(44832011)(186003)(25786009)(26005)(11346002)(6436002)(6486002)(99286004)(2616005)(105586002)(8676002)(6116002)(81156014)(52116002)(5660300001)(6512007)(478600001)(72206003)(53936002)(68736007)(256004)(50226002)(110136005)(446003)(54906003)(39060400002)(14454004)(36756003)(7736002)(2906002)(476003)(4326008)(575784001)(86362001)(305945005)(106356001); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB0512; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; x-microsoft-antispam-message-info: lh2lYnaADC/LxK+WFD03A52KPBsn7fgbAJpLUvQvVor2cQst/R946GFOl5K4XRaMnT6LeZTrhQfY4rTzSJaNKP+xVSN1src7SRtKFLKBAfS3ZAbT6/v4uFQx6yt0mTgvxwfht+U8VRTV/nAEK+BOQ72y/fk9CEu8MarWen4kRc6y6+QKGp19ZjrJyi+tdQvevA3b1VuCgOUIqvp+6JNen6kWOR98P0z1ABx+Pitmu+HEZW5hQ9AOQk0pj6idJ4w+SWIkkHUYbVOrLZJXJzPhyRGDqWSW9yCWkKGBw3XweI5snVStLYkFcDRxozVOicYo spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9fd493d4-cae9-4f1b-7708-08d6606a5ebc X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Dec 2018 19:45:29.4525 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB0512 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.154.42 Subject: [Qemu-devel] [PATCH v1 17/23] 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 bc0e7ee509..b0061a7e83 100644 --- a/tcg/riscv/tcg-target.inc.c +++ b/tcg/riscv/tcg-target.inc.c @@ -1134,3 +1134,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 Wed Dec 12 19:45:38 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 10727073 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 108DF13AF for ; Wed, 12 Dec 2018 20:10:11 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 01BEE2BA26 for ; Wed, 12 Dec 2018 20:10:11 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E7D202BA2A; Wed, 12 Dec 2018 20:10: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 D491D2BA26 for ; Wed, 12 Dec 2018 20:10:09 +0000 (UTC) Received: from localhost ([::1]:47875 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXApd-0006Ln-0q for patchwork-qemu-devel@patchwork.kernel.org; Wed, 12 Dec 2018 15:10:09 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49215) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXAS5-0002U3-2z for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:45:52 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gXAS0-00038g-Sk for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:45:49 -0500 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:39250) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gXARz-00036Q-3L; Wed, 12 Dec 2018 14:45: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=1544643943; x=1576179943; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=Mr2K1ZUeybEAkGTw7hRCXhk+KP3wEOm1aYsUjB+L/9g=; b=V+xODDPWOalkyJcEhJbPRdjk1P4drxvh0/08ktQ8/w6ESN2yECBtyIDs jYuashYr+u1ycfiAZ4niCfh/d2EKuaoxxFPgNjzovNUYs2+BayBuRIDbv qMJOcc10WyAqKjhLetQayHiusChryPD7SWZIqmmCWv9DEFCH+KebnGseG uigcZKGLJ44/zUe9cCg+p5x7P8jF9k+caDmdqsRbsyeYXcgZoWss886Vk MHxhJIuRlK6nq2WL4cDzjzKr3PdXhvPSgBnM1VsJ/33eWIwLrP9ps5DQR WaHiFAGQC5ciKdrZ91v9JWqqV5R6rMq1Kd57AnF9HT4EC4sp5a9DjsH90 Q==; X-IronPort-AV: E=Sophos;i="5.56,345,1539619200"; d="scan'208";a="101342381" Received: from mail-by2nam01lp2057.outbound.protection.outlook.com (HELO NAM01-BY2-obe.outbound.protection.outlook.com) ([104.47.34.57]) by ob1.hgst.iphmx.com with ESMTP; 13 Dec 2018 03:45: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=wom+jldRLlWNRnfCvrv+vOQ95YOAZemCrlxvT0BR3nk=; b=YBbxZ0CBeyywNTbjbMsSAY4rYkURTOQr7urRYVkaOw/JLxDl7O2uzTPD8PrMHd1qzmVx4digAetq5QL2Ic59C5nSnf49/nK+2NaRmJkVLS3MGYtBUBSzFj0Bxf8qgcRcXXI6B1ThyhnGm4TuH2kGtwZMjAoSv95xPYNyozzvClw= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB0446.namprd04.prod.outlook.com (10.173.48.139) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.21; Wed, 12 Dec 2018 19:45:38 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604%3]) with mapi id 15.20.1425.016; Wed, 12 Dec 2018 19:45:38 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [PATCH v1 18/23] riscv: tcg-target: Add the out op decoder Thread-Index: AQHUklNBkbyqBdcTaUifFP95NhzeZA== Date: Wed, 12 Dec 2018 19:45:38 +0000 Message-ID: <1696f7c9250606df42c6a6776b3ca0530d72fed0.1544643238.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: BYAPR07CA0074.namprd07.prod.outlook.com (2603:10b6:a03:12b::15) 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; MWHPR04MB0446; 6:NFfKXParSOvQ8RvbkBRBKj4LTYAuzcELr2ATbjAZLzhItXLrH8BVvaC45z0jwLqr0g1M/n4d8iTE6yNyROEmwno8301smDxp9E+GI/Ek7qoSgcN5sFYbk2BzzHArLm+tOmvsrmxA6sCxhhHrkJqIGJH7kM7NQDVswCrrrVLHsQa1HU9Zg8WV1B3qmHrQiXq5NP0MyAckiUtRIq2w2Q/yjbqWv4iqWHB+FDuLFB473xHvtlSKh/O/VHWoeJKjBgM+2rJzDBRuoAbLjh38nzhUiEaJAdkVa+vOa61XYRTxQQZB9L9ZCCFpZ5GKJsQxwxAETUZGKCecf0ID+hQqsFQ7+l2bLH3x094QFHDkCSl/X2q28/LawjTV0koJQ7+11tqwBh+N7TU8NErzFlx0/RNSYS2OJQiTVhzW3d3i4PzDEhWVQEIj4bQJnNrekAqdWZv7zJ9sYxcg13RKxdvbCzYv1w==; 5:0q/0+LH5xC1e47jyi/uCmck8ehXXO2AUw7wmgFzqKZf19KdUfg3lTsY+rfQ1OengsNYly3OCAZqMTMOzkpWMqwJ4r8/g6VL21jreJ7YYk45OI4Vnb+3lVh9LM8PPkRP+5EjVIza7haoB9Vlwp/3L+2pO7PyB0WxYTrZZxhJaKGg=; 7:nTf+Bg2h7KPR5p0fp6mt4QqtzJMNz1K5AllwNuyUI/zw8CQU2X2FuEUGqcMq9atI3OJ08+Vk/T62w9/cLaTDnsTSjoA+3M/Ghx9CnG+z7zV+GwDGUBaFnDy+Up1slVdVMjLzEXHXeasyupOiT69VLQ== x-ms-office365-filtering-correlation-id: 35f8f506-f4c3-4158-d847-08d6606a644b 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:MWHPR04MB0446; x-ms-traffictypediagnostic: MWHPR04MB0446: 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)(10201501046)(3231455)(999002)(944501520)(52105112)(93006095)(93001095)(3002001)(6055026)(148016)(149066)(150057)(6041310)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123558120)(20161123564045)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB0446; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB0446; x-forefront-prvs: 0884AAA693 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(136003)(39860400002)(366004)(346002)(396003)(376002)(189003)(199004)(3846002)(71190400001)(6512007)(97736004)(256004)(66066001)(2501003)(4744004)(81166006)(50226002)(53936002)(6436002)(71200400001)(8676002)(106356001)(4326008)(6116002)(39060400002)(53946003)(105586002)(478600001)(8936002)(6486002)(305945005)(386003)(6506007)(44832011)(110136005)(81156014)(186003)(72206003)(68736007)(7736002)(102836004)(486006)(316002)(54906003)(26005)(99286004)(76176011)(14454004)(86362001)(11346002)(476003)(5660300001)(2906002)(446003)(36756003)(52116002)(25786009)(118296001)(2616005); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB0446; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; x-microsoft-antispam-message-info: LsVoFtyIe6tDLNI7/7+gixhrkn4QRJb/oWvJnywp67YLmvzmgwsFb/UmdxeMsLTWH4B8/hHEQWBgwiAZzGKxD7eTJMPlJPchFe0V92V+y97Sm99UbwsEFjP32ilse1HfAYAJR6JKw8NaPRBRAjJXSm53AjRFgoYp4K7O89/IPNRcPAKIzgJ6IH9C1uegJadZlxXbOB3y97dm5AE/CX3JP79JWJ+gWQLzX8LH8KICtaeHc2RtLiY5uNmWGIaLB98AVc7XpTcnpx0lMr1DbSgJyxDoxxeW3l3Ou9GQmZViJNgynoVSz+kkhleBL+0UXx6p spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: 35f8f506-f4c3-4158-d847-08d6606a644b X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Dec 2018 19:45:38.7027 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB0446 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.141 Subject: [Qemu-devel] [PATCH v1 18/23] 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 b0061a7e83..f3708fe8e1 100644 --- a/tcg/riscv/tcg-target.inc.c +++ b/tcg/riscv/tcg-target.inc.c @@ -1292,3 +1292,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_reg(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_reg(s, OPC_MULH, a0, a1, a2); + break; + + case INDEX_op_muluh_i32: + case INDEX_op_muluh_i64: + tcg_out_opc_reg(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 Wed Dec 12 19:45: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: 10727055 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 12FFC1759 for ; Wed, 12 Dec 2018 20:02:56 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 03AA52B9DD for ; Wed, 12 Dec 2018 20:02:56 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id EC3CD2B9E6; Wed, 12 Dec 2018 20:02: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 509282B9DD for ; Wed, 12 Dec 2018 20:02:55 +0000 (UTC) Received: from localhost ([::1]:47808 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXAic-0000Pt-87 for patchwork-qemu-devel@patchwork.kernel.org; Wed, 12 Dec 2018 15:02:54 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49288) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXASG-0002ep-H1 for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:46:02 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gXASC-0003FS-Em for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:46:00 -0500 Received: from esa5.hgst.iphmx.com ([216.71.153.144]:5273) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gXASA-0003DI-Mt; Wed, 12 Dec 2018 14:45: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=1544643954; x=1576179954; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=OK1/30khwz5mfVuFaADaHWS1iEE02IoLMP8pd3AeEwE=; b=mN1swIY3WdyWCBkFfQ0CiEbWEwOl43Y4oH2DnUIop3CjBYO5gZDYctTe fAaerdlpZbLEqilS9HLXI0dPxqz6Szd5cBqPjvHHRBy1cT0+Q3lqPT/7d CODl71iqLeRpbwic2qBbBuiafyfIAS48P+deS8rr64TiuUOFLvtjfVoUm ZHXbK/gAz2Z/zZYCSjHe4CB0moDms0gd+WlLnICsGfEjWLf1khSXXzmK/ yZKH1hQETTzQTdv2t7A7U0BAxW5OaHlhOKeASBk59Wox7eei04lNS3Hiu 5ANDNdJD8iTe+9fe9TVJHuCIk0UNvlEW5PaPE/Pm58A7RRwlTfH3FyEz7 g==; X-IronPort-AV: E=Sophos;i="5.56,345,1539619200"; d="scan'208";a="97665548" Received: from mail-dm3nam05lp2054.outbound.protection.outlook.com (HELO NAM05-DM3-obe.outbound.protection.outlook.com) ([104.47.49.54]) by ob1.hgst.iphmx.com with ESMTP; 13 Dec 2018 03:45:50 +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=E/dFkTcjxiwpd5cKtPDiDWCvZaxjapQGglVza0ZM1Mg=; b=Yvqin6GQ2xVO3UJZ/+uW8Ly903GBtwMFNYsAkWzS9IsVfXg0JyXH3drUhiHd2tqoGnn+Lqb54cddSNiGyFhqFQNoGGaY1VKVbX1dwTlVuF0tdvUNGilYRWGZPm9J9WTuf4nv4I+PCTsGHREMRcMjMa6YtI4gMDzmU0QeCZP8NiQ= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB0593.namprd04.prod.outlook.com (10.173.49.146) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.22; Wed, 12 Dec 2018 19:45:48 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604%3]) with mapi id 15.20.1425.016; Wed, 12 Dec 2018 19:45:48 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [PATCH v1 19/23] riscv: tcg-target: Add the prologue generation and register the JIT Thread-Index: AQHUklNH5DuOA5Bk1EKlAq8vvBbh+Q== Date: Wed, 12 Dec 2018 19:45:48 +0000 Message-ID: <31f2af51ec9c9e3ca7490e17d284a037ee2ed6b5.1544643238.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: 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; MWHPR04MB0593; 6:oVJ6P7kxPi+EWqEGP1dJ+aRXSVGhpLSdVJ2N7YpQLqQYbgDNAMdAR9TwJwSbFSRYDsa2BAN9QdlqT8ZTPDqcIK6L85M6XkA7JR8B7ZzmAlMFsxj8i4D5i1UBxM0ajx1eebSJErdS9n+fUWWH+ZpQ+0UWOVZ4EbRqOplQkv2ZCkBrLyWcMhmLj+gyvxYcS8IflWMengFvEFnpQFiCJbk1QGSZ+/Yybmp0bEuMARzijVlP5fRAWnzfCInxM6zmeGVaPl6pMwIxEoVPKXbY9cB0j1kwMyXQSaihbTHxg608Nq56euw4jOT02NH+aL1K8xxoWtQcuKUqjkJT9XJ2t0N+49Kqn3YU8wkdmWS3djwvmNIvJ8R2nCBZoxIFbE12KIzzjjww197xRmQQUpefzxei3RoHAQYyGXShC+rnbtD0M/xH5B0zlss4QfxZEFyqllKV3YXiK17ANzpX2sZx7J1YJw==; 5:mqrwAyOuL6SgBf/sT+H67TW8cDDcWYOj2Xs3k1ePaRJP4dftKfeMh7xYUwr1/XdBd4xLUhckLsTJBkjxdCPjsuSLEk8aXpTG69eMO6xGt4cPhWynqapYrwNXsqTmVTNNlcAQaNxElGj9ApPE/shBu8KT2YDHr48EjaAwxT8RU74=; 7:TFzHWCPDea+ITNgmpuvmsEqldQ9cR4oGVt621vhaHC2efDbOweR8MjBj7kmvd/qzFHI3UV8d2oi/soBCyshQrmC4GpIBSfg2D5/iE7ZwngMip1F8yGY77M4zfQCmMtCnbarSd1RrxJ5bApjnv/WMLg== x-ms-office365-filtering-correlation-id: d47bf392-b729-4764-70e5-08d6606a6a33 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:MWHPR04MB0593; x-ms-traffictypediagnostic: MWHPR04MB0593: 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)(10201501046)(93006095)(93001095)(3231455)(999002)(944501520)(52105112)(3002001)(6055026)(148016)(149066)(150057)(6041310)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123558120)(20161123564045)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB0593; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB0593; x-forefront-prvs: 0884AAA693 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(366004)(376002)(396003)(39860400002)(346002)(136003)(199004)(189003)(3846002)(99286004)(6512007)(256004)(2501003)(36756003)(86362001)(118296001)(53936002)(6486002)(52116002)(8936002)(105586002)(6116002)(106356001)(76176011)(97736004)(71190400001)(54906003)(110136005)(39060400002)(316002)(486006)(305945005)(7736002)(5660300001)(2616005)(68736007)(446003)(25786009)(4326008)(71200400001)(2906002)(44832011)(478600001)(186003)(50226002)(102836004)(386003)(8676002)(26005)(72206003)(6506007)(11346002)(81166006)(81156014)(66066001)(476003)(6436002)(14454004); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB0593; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; x-microsoft-antispam-message-info: m2KG+oBR1aHUfnRDV9up7C9EmzeO4sFq6qMrendDj45GeBgtv7iD/2mQJOQT6nwOrYNsW1vfzPMQI5FuDQenlTe9O6luNwmNMBHPfx3oPi/8RD8COmqamLS7I8PJRvoX7AwqoTDqPXXTyAuJke7G8UL4jVrzZtQq8LMKt4kbzgjTNHX2NSzUupGW6g1oWWc7LEaLxDJ9/eHxCEnFM2p14HLWuikUV6wddXAaBcG1Zr9pFdRTHiL/xePAV6M0FXV3bDrm/b0UiGfv2xo8WsLOL7q+PGKf/NnuC3GM+zjRkw9rt70tUqWaBuO/s6OXHcad spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: d47bf392-b729-4764-70e5-08d6606a6a33 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Dec 2018 19:45:48.7184 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB0593 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.144 Subject: [Qemu-devel] [PATCH v1 19/23] 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 f3708fe8e1..5483d1d350 100644 --- a/tcg/riscv/tcg-target.inc.c +++ b/tcg/riscv/tcg-target.inc.c @@ -1785,3 +1785,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 Wed Dec 12 19:45: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: 10727057 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 D57FF91E for ; Wed, 12 Dec 2018 20:03:09 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C60BB2B9E6 for ; Wed, 12 Dec 2018 20:03:09 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id BA2022BA23; Wed, 12 Dec 2018 20:03:09 +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 3EF3F2B9E6 for ; Wed, 12 Dec 2018 20:03:09 +0000 (UTC) Received: from localhost ([::1]:47809 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXAiq-0000dp-7y for patchwork-qemu-devel@patchwork.kernel.org; Wed, 12 Dec 2018 15:03:08 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49313) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXASK-0002gh-FJ for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:46:05 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gXASG-0003Ht-I1 for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:46:04 -0500 Received: from esa5.hgst.iphmx.com ([216.71.153.144]:5273) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gXASG-0003DI-5M; Wed, 12 Dec 2018 14:46:00 -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=1544643960; x=1576179960; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=4rKn8Zo3J85VmMGOhjoxELwfEep4KXCzNwmePHOIqrY=; b=SBAdBDEZ0q7PB7fksg8aIAfoJ/QsVYDIwQHUUqtns8jJI3xaoUwLmkPq XKqT1mR6lAHMW3nkWyHma4+meTBhADuFsZs6erJ73bNyOi94o/QVWxrXE BZdZlDita3sYom7MMNcRPI+4TmMWhEB6Vf7MX2LBgUHjabMctR1NGmv24 NwGlbN5ynHZyFUo0LlcglmaxLEojD953trRNgrUU0hckDmsOFnHOKFWIc 0QGbdR07j49CiShTFzqeenluBfvAuCatf+tjRn2ikJ5vZFU3QDDNknqLB fn5Q9P8xALJTql0q64xhbxYy0Yclod+/igNPPLsZBnBbWt0kpWRrs0MrK A==; X-IronPort-AV: E=Sophos;i="5.56,345,1539619200"; d="scan'208";a="97665551" Received: from mail-dm3nam05lp2055.outbound.protection.outlook.com (HELO NAM05-DM3-obe.outbound.protection.outlook.com) ([104.47.49.55]) by ob1.hgst.iphmx.com with ESMTP; 13 Dec 2018 03:45: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=An2FfaAy7U0Fi7AaGx7EXDCPnmcIOFT+9w2vtAxbLFc=; b=X1hoxdU9iVQ++YSDtf1yJENH5oDO9J2omrAPPxahQNZis+MYrBwbbaQd8kYXtz9bZOyvXBSbnCrQaATPgAFMKAXdvp4/LjsgdGyJw3ow8nVca1EyorT+ldu/PoCD/QaR214h9GAHKMnImo5BkDSBxJC0RKKF+N/54Qu6uh3WfJc= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB0593.namprd04.prod.outlook.com (10.173.49.146) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.22; Wed, 12 Dec 2018 19:45:58 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604%3]) with mapi id 15.20.1425.016; Wed, 12 Dec 2018 19:45:58 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [PATCH v1 20/23] riscv: tcg-target: Add the target init code Thread-Index: AQHUklNNDpJXEUqtvE2GGNv/nYDgsg== Date: Wed, 12 Dec 2018 19:45:57 +0000 Message-ID: <9f20f4297e7da092a5a436ef83c5ac1ae5fc273e.1544643238.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: BYAPR11CA0066.namprd11.prod.outlook.com (2603:10b6:a03:80::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; MWHPR04MB0593; 6:Gz2A6YexQgnJzJ7pIS0rqXHGLkg5xGZTwyaNCHLQUgwShrRGla6NMc/CVkkZQS8Rhd1cZCA5LrkmKW6sHTPcpfB317TDv/8/ddIaIxcoiVnYAgoemFuTN1fi/7zVVpdq/rnfKr1V0go+s+x9dv5PAVVTK+oT4cBDn23+Fp5up/SGo/AYtHnZq5Kt1m2lSn3FG7BYiM+kxup7+wUv7lncGZVu8z61C0bt4/wMCghTwF0XJiYJBwymNbk4Qz2Ct+hF2vw1lrDwkOMwl7mkBlUtJWdtBkhqg/OqBHgLGKbNYb5l3yRqHEosiLz08/OwY5Y0L9jcchQwCDZVM2/hTJzjc4rSwiMfuL+flOYzickrZzt+UrhQylDYaVHS7gUMLBtp0ufAJq3qB8EozdbYnkxlOm0IicMeNJbUHQHt87ulV2eJBPbrHtu/xzUOhmmtqPHp79yZhkRg9hZk9p0KDMH+KA==; 5:HME3Heb1qxv5xmXKnFbICKlFMoGj/HLqwU1k0pOjm7iMVFzhLLLislnfOMXD+T5QUmpoikxs5bg7T7cFW/xey/cwQ+T5R/S0oX/mwl1sBsNDDypc8Vd/IdjjTBGNd4Nhe9CTK5THjj/9NzOBYSFN7vf/Yf8QoqObWT+jyiH6EhI=; 7:pjzSo4WCZFDxfITqxmnbGWRO9yFQWlPV1NGTZ/xjD2xkP27vXUKAOUb44gpC39gGwl7AVaPQsdXOHNB3ftnBBLJMj8zBWcEQlYnBRG2U1VoPqKnHIv123Ws4csTEESh19xaYHa7jf2Kw2KBk6JeRVA== x-ms-office365-filtering-correlation-id: aa8414ab-bdce-4601-0d48-08d6606a6fbe 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:MWHPR04MB0593; x-ms-traffictypediagnostic: MWHPR04MB0593: 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)(10201501046)(93006095)(93001095)(3231455)(999002)(944501520)(52105112)(3002001)(6055026)(148016)(149066)(150057)(6041310)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123558120)(20161123564045)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB0593; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB0593; x-forefront-prvs: 0884AAA693 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(366004)(376002)(396003)(39860400002)(346002)(136003)(199004)(189003)(3846002)(99286004)(6512007)(256004)(2501003)(36756003)(86362001)(118296001)(53936002)(6486002)(52116002)(8936002)(105586002)(6116002)(106356001)(76176011)(97736004)(71190400001)(54906003)(110136005)(39060400002)(316002)(486006)(305945005)(7736002)(5660300001)(2616005)(68736007)(446003)(25786009)(4326008)(71200400001)(2906002)(44832011)(478600001)(186003)(50226002)(102836004)(386003)(8676002)(26005)(72206003)(6506007)(11346002)(81166006)(81156014)(66066001)(476003)(6436002)(14454004); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB0593; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; x-microsoft-antispam-message-info: EEOiA3maP2mif3RMpSZYQgm2AYTNXupV8rXdEEeWESS0vKoNZabxQfKJWQ0FqKjTGQKGllEqSFmlbCPT5ta8E6Ph6t9VmOlrOWRWnEA5LcL064YBgDJJmtgKrQ9p+BiKODCv5xCaGnWAmQ4UmLUGNRz4mreRQo9MIwx2aHY0grhTm9YoAHDzc1nuaLNJm3IQl6Ri/rsRTYc9QZV5MYUnPPblIpw0JVptCbIXVDzXneW0Yf86c3NgqyvIQQTF7akE1cmaNIvIAhXFaDE4xH0wMAloICAJnKDy0Q0fazP3rL88TTioXejr8fodyNKyXATm spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: aa8414ab-bdce-4601-0d48-08d6606a6fbe X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Dec 2018 19:45:57.9686 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB0593 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.144 Subject: [Qemu-devel] [PATCH v1 20/23] 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 5483d1d350..b6aafd121a 100644 --- a/tcg/riscv/tcg-target.inc.c +++ b/tcg/riscv/tcg-target.inc.c @@ -1852,6 +1852,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 Wed Dec 12 19:46:07 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 10727063 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 0BF7F91E for ; Wed, 12 Dec 2018 20:06:20 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id F1F7F2B7D5 for ; Wed, 12 Dec 2018 20:06:19 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E62402BA29; Wed, 12 Dec 2018 20:06:19 +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 64D952B7D5 for ; Wed, 12 Dec 2018 20:06:19 +0000 (UTC) Received: from localhost ([::1]:47820 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXAlu-00025g-Li for patchwork-qemu-devel@patchwork.kernel.org; Wed, 12 Dec 2018 15:06:18 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49360) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXASU-0002pS-Pv for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:46:15 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gXASQ-0003Nl-PZ for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:46:14 -0500 Received: from esa2.hgst.iphmx.com ([68.232.143.124]:25781) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gXASQ-0003NF-GV; Wed, 12 Dec 2018 14:46:10 -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=1544644006; x=1576180006; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=d/vgDPhfzdcDSncbcj6SM70p3CgdU/kMp06loHl8EIc=; b=lO7HbrX6yrC8S5GmlF5MqsHWJOOxBaAGYYaH1kpwd6lPBjazcHhTQvqf lZ9T/9XfD8uRcgL4P0w6SKSsPJ2eHDvGyV9GoYrT5Q+AJViWFBBPN/4lL TcI8Xl/FcwAQ8kwP5rEb6fuSBPejq8DWPxAfu7hOdoBMpMpMaI2tYVVtZ VIwTC/hEvlPcQ15xK6G5KMvM8yYVe8hbgcU3COqIoOfY2vmp+8CkpziTY TA7QWVEJLeEDfzrYCJ6P5hgx2dL2E5ZylS9PetfIzRbRq62L5BaAr7d+c BRVkptLY7SGuprxU+SsdLJ4TDpZYhLujPafeo+IQ1568q0Rspz942CAWz g==; X-IronPort-AV: E=Sophos;i="5.56,345,1539619200"; d="scan'208";a="194334243" Received: from mail-by2nam01lp2057.outbound.protection.outlook.com (HELO NAM01-BY2-obe.outbound.protection.outlook.com) ([104.47.34.57]) by ob1.hgst.iphmx.com with ESMTP; 13 Dec 2018 03:46: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=yPUJaM0wWZHLTYVfZkTyHnHTkJnpg2ybHbfiWpabKRI=; b=U1k5yYkLpqeR0IiKnPEy8SAD+RLarRXhNMOfO4Uf99aSK4tdeuHR+lVvCn+qYsDuTKPq/1a+tdsd1e9hn/P0QNWRJVLkWukOubDFEGCbC0cMQqNIFgeMMhUsKDTCfZPiyy7YQvh/pUqyWGEYjsUDwbcR2Vc8Wo5xKVYJG0W8HL4= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB0446.namprd04.prod.outlook.com (10.173.48.139) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.21; Wed, 12 Dec 2018 19:46:07 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604%3]) with mapi id 15.20.1425.016; Wed, 12 Dec 2018 19:46:07 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [PATCH v1 21/23] tcg: Add RISC-V cpu signal handler Thread-Index: AQHUklNSMz49GiZU/Ee0ABuUwzDQ8Q== Date: Wed, 12 Dec 2018 19:46:07 +0000 Message-ID: <19bfdaf95140e095e141f5be97566eb67d05d916.1544643238.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: BYAPR11CA0064.namprd11.prod.outlook.com (2603:10b6:a03:80::41) 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; MWHPR04MB0446; 6:MxojBBOP9Qbe6jdqlqywIchop74usUwiTorD0PrLWvqtRbofcc07Rz+n6MGTsvfy/ARky8Z6V65Q2/KtyMTWsmo0YYNVM7pNMM094NVV/Bq7/ZHrk3hZ0BIhGRmBQpVw8GFMps7yuxCdaA5I4ahRwnIbS5MVivcKAMwSSbMkQycDB/wk51hEwiyXWRN0MX5H+pVHIRw+A1XJj01GMjKqrRgs6DgkKqnlMCeH+mSTsY1/U6vcVqVc8OsH7fHyQNv7Af/n1UUeMAPn94jVaLPjhvSV46ega2iqIoZre2Car8e0wSmdD78EX/cLh5Z4AiNaXqfPUxCts6ijmiIOeVFlG0o6N+LB0/2VTYNqVubg26gg4m+Ii9poQ0x2rhSi2BKI5Rj4H1/dFE7gjoHcr+MrzUnMW+BqYAQPEo6FPI42LauEHSDNNsKXOx3R7VMv9s2xX4SPeO25JSVT+SzQB9hxGQ==; 5:SDSdXUDCjENq9UKy+d5UykGwcVjB87+Q5V3IKIzDZzX6yESA9wJa3fIUMBLIYqkvoofrAepbPBVoSy0+fZ61lJAcARf978UQcgmCQFMOTpe9XwwWYBMXp7VCUgGafZqdhZOWXegr9/13jlJoc4lgsrzEqcHlkBRu1xq3SfTLdfs=; 7:CYeCeBA7gu7qPhb6H15c+ZrnR3itCnfV0gCnNkRUWunceICJXnNzM8OxPaOdkLQPOcd0h3uan/NOsiE0Aq+OttiHTkxGvFNGM8bLOkGneF37cQJOFpSEY+n1tZ7Gmj9boT8uOhbGXqBtG+kZQIUT5g== x-ms-office365-filtering-correlation-id: d5a27ecf-a2ad-476f-82bc-08d6606a7541 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:MWHPR04MB0446; x-ms-traffictypediagnostic: MWHPR04MB0446: 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)(10201501046)(3231455)(999002)(944501520)(52105112)(93006095)(93001095)(3002001)(6055026)(148016)(149066)(150057)(6041310)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123558120)(20161123564045)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB0446; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB0446; x-forefront-prvs: 0884AAA693 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(136003)(39860400002)(366004)(346002)(396003)(376002)(189003)(199004)(3846002)(71190400001)(6512007)(97736004)(256004)(66066001)(2501003)(81166006)(14444005)(50226002)(53936002)(6436002)(71200400001)(8676002)(106356001)(4326008)(6116002)(39060400002)(105586002)(478600001)(8936002)(6486002)(305945005)(386003)(6506007)(44832011)(110136005)(81156014)(186003)(72206003)(68736007)(7736002)(102836004)(486006)(316002)(54906003)(26005)(99286004)(76176011)(14454004)(86362001)(11346002)(476003)(5660300001)(2906002)(446003)(36756003)(52116002)(25786009)(118296001)(2616005); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB0446; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; x-microsoft-antispam-message-info: zIvN7ZpckLKrfnTddqxrvhLBGgac0BWM65QTdbowmmE6jdmLxFHlj3HeH3g+RX+vBxN0FDCGvoFpNRrfs9MCXCteeKnTdRS89/mnQkYLpn/IMC/Ef3ZRGFhKAg1ZYyzLs/CbiwwqLdvUrU0+0qDqNZpx0g3PvDJk1mTHIgWGk2d7jOIUt94QyQ/fvNjNpVBzSdhFW6mdWCcL8xzXkULTJkfzQt5kzUNJfNTZ21+SRla9JuDzPJwuPJEC6OnFr2As6fz7ulRh+OOjI3XIXGpA80V0SbwiJvrL6vU9B94sTK1jWUFfI/uTpda+w3QSP3bd spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: d5a27ecf-a2ad-476f-82bc-08d6606a7541 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Dec 2018 19:46:07.2187 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB0446 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 68.232.143.124 Subject: [Qemu-devel] [PATCH v1 21/23] 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 Wed Dec 12 19:46: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: 10727069 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 BA4B491E for ; Wed, 12 Dec 2018 20:08:46 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 97A302A0B5 for ; Wed, 12 Dec 2018 20:08:45 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 856502A0FB; Wed, 12 Dec 2018 20:08:45 +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 EEA942A0B5 for ; Wed, 12 Dec 2018 20:08:44 +0000 (UTC) Received: from localhost ([::1]:47867 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXAoF-0005If-VE for patchwork-qemu-devel@patchwork.kernel.org; Wed, 12 Dec 2018 15:08:44 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49404) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXASd-0002v6-7Q for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:46:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gXASZ-0003SL-7s for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:46:23 -0500 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:39292) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gXASY-0003Rj-Tb; Wed, 12 Dec 2018 14:46:19 -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=1544643979; x=1576179979; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=G3S9Dt2dYVWGm7ZW7Y1T0WEiO5lLHciM/p5Y6OkVtko=; b=Oylw/Dj5MSO8qUDiA7zW5V6uzGB4Sz314BzgULHY6D5SA9xWzDbZ6jia cZeCU1bNN02ZLbl/eaxWJWXFO9tIqp95rco2UNpVvDo4ArvggWqiG1oQN lJ03sJlkGh3Z8CuOIMUwG5/bigDVJTE1N/mOuqCylZLSq3LOfaizOMxxk MemZRyn8naodxegIGhCpxi+G4GiJWi7PSaPgwMLMhuIVc0YUlcnGF0OVc 9i5pM8TMZFybfpqqR8rgap7lcoqNALLEuVRTQ0aL60W50xdwB63JdWxB4 Rkw168t2fwkoaw0RwRH1VEc5Nyj5FMfWwfRdeHqjSx6v5QjpOm+xGFN9F A==; X-IronPort-AV: E=Sophos;i="5.56,345,1539619200"; d="scan'208";a="101342420" Received: from mail-by2nam01lp2053.outbound.protection.outlook.com (HELO NAM01-BY2-obe.outbound.protection.outlook.com) ([104.47.34.53]) by ob1.hgst.iphmx.com with ESMTP; 13 Dec 2018 03:46:18 +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=ViCeJWXWw/Xqs2usCQiHpshu/KpZtMW/Rf2cgVKWBPkwN7TEVh9MzPr5Crtv//295jnNp1hGyIPSsFL5QqDdGQWocCC9C090tWQriNvg74ll3XR4opLZXAoZT5LfAIA/LRU808cSuq6jXZjMj59O8RcjgPm6QTwJ+pF2Hwuoa4g= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB0446.namprd04.prod.outlook.com (10.173.48.139) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.21; Wed, 12 Dec 2018 19:46:16 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604%3]) with mapi id 15.20.1425.016; Wed, 12 Dec 2018 19:46:16 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [PATCH v1 22/23] dias: Add RISC-V support Thread-Index: AQHUklNYqe7nYuJ6Sk+9YHdB0dsQYg== Date: Wed, 12 Dec 2018 19:46:16 +0000 Message-ID: <97ab2db0d4eac20809f092a9d095ac03b8f7ff3c.1544643238.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: BYAPR11CA0055.namprd11.prod.outlook.com (2603:10b6:a03:80::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; MWHPR04MB0446; 6:03GZcalwRli2/bI4goB5v16j5VdXQ+Z4/UuMBtI8N0aZSPMsT4ewy0+EI/1YI/ewjkZf2QNa7lb8+VpwRvB59w8GWfb84p0fL65NWQwgRPQF6PgKO8t9uUbOocSG5OSxQRnpJOCPIwEld+PkCaJOoh9F4FY4mjl42grp7KjGVXcx6cOa8331N0rUy4A+tExcaFyh88usAv84zXCIsKBCKsvcN+U7fW7vfKlYS0sVihwedJ7TZuRDxeGQlqjsfiMObr+VEnaiN4xGVXo8XhE93bRAn1v/CV7CJhYLWGZ7CRgNjTD/Au+ho+wJCl0vqCBSTHklHXkHR880o4w6wOQT9/Qay7yL94TQcYLw/TAJ+Jd4ibHyZ1T6pPjMP3AxMvLqSAwt4W4ILwrvP/QTJ4/8Ue7LN4j2Ed9Ptsm5Huduaco91H/c62M7ERfxnvsPTm3Xu5FMGD4wXpO4cQWdvk76zw==; 5:Mp0tzkKioFhUhy0YpXh+9HYiQrANA4Dmq+KS3xYZmQWJ5XY2j1NY0GM6+ELNpEi2jeM4ehdDzlSiqAFUH+TcRIdqMr9SuGjRGwziLHuLn/vRwqc7wTbvkjcdVQXzQuws4XbpnNADij0RzRynysgFnQoU1FfLbo7eHqX7h3nG4yo=; 7:B6EmTF2ilq+PTjFsjpzxKFu1ixWULhpkBGY/Dco30EgxHWHO8zcEGCCY0Z5o/VfRvmTc/4CNL+gdP88cJ3eJwL9WmjOTQZCFQsdnEr6BGn08agNuCpvqeXm/sCOlZVyjrhlXENmNjfg+dDUgJ27uWg== x-ms-office365-filtering-correlation-id: e87bcea4-8055-47b1-5bae-08d6606a7aa8 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:MWHPR04MB0446; x-ms-traffictypediagnostic: MWHPR04MB0446: 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)(10201501046)(3231455)(999002)(944501520)(52105112)(93006095)(93001095)(3002001)(6055026)(148016)(149066)(150057)(6041310)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123558120)(20161123564045)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB0446; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB0446; x-forefront-prvs: 0884AAA693 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(136003)(39860400002)(366004)(346002)(396003)(376002)(189003)(199004)(3846002)(71190400001)(6512007)(97736004)(256004)(66066001)(2501003)(81166006)(50226002)(53936002)(6436002)(71200400001)(8676002)(106356001)(4326008)(6116002)(39060400002)(105586002)(478600001)(8936002)(6486002)(305945005)(386003)(6506007)(44832011)(110136005)(81156014)(186003)(72206003)(68736007)(7736002)(102836004)(486006)(316002)(54906003)(26005)(99286004)(76176011)(14454004)(86362001)(11346002)(476003)(5660300001)(2906002)(446003)(36756003)(52116002)(25786009)(118296001)(2616005); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB0446; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; x-microsoft-antispam-message-info: 3ibi3rytDuaIfFhCqm2GIGOzqCdXDei0Rwzdvnq+qndbrMYdXomr0737LcWJWAVDLuwYDlQ6FUme6Nmd1DsyDnA0sSf4vM/Zci1ybvB1GbVfvE9Sexnvhry5jrgl+qyR3BdUUwY3XgPJeaWFWl8puIzY8/n9kIL9Uuh/cppM3x9rAYvtCekA7iA+s7h6QFw8MzqArT2QbPeY2xIJvIoahMw12h6EdlkKMdXqbNEI1OSiAs5DpeyCVeYrdfUHJrsb6082F4FWLv7QAsZF2BKOFqXlMKL/qxemflnFCPwp7zq9X6NEJoombTQHUNkpqf2P spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: e87bcea4-8055-47b1-5bae-08d6606a7aa8 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Dec 2018 19:46:16.2813 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB0446 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.141 Subject: [Qemu-devel] [PATCH v1 22/23] 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 Wed Dec 12 19:46: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: 10727075 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 E6110112E for ; Wed, 12 Dec 2018 20:11:03 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D80EA2BA2A for ; Wed, 12 Dec 2018 20:11:03 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id CCA8C2BA2D; Wed, 12 Dec 2018 20:11: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 599A72BA2A for ; Wed, 12 Dec 2018 20:11:03 +0000 (UTC) Received: from localhost ([::1]:47881 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXAqU-00075K-Ip for patchwork-qemu-devel@patchwork.kernel.org; Wed, 12 Dec 2018 15:11:02 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49468) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXASo-00033J-LH for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:46:38 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gXASk-0003ZF-HZ for qemu-devel@nongnu.org; Wed, 12 Dec 2018 14:46:34 -0500 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:39298) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gXASk-0003X3-0n; Wed, 12 Dec 2018 14:46: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=1544643990; x=1576179990; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=dpz4/gnPBplgoUnvtKnRzRogXNhxbdNcpFehJNuVSPo=; b=km3bieK0HYup8ImAVzPLUrbXS0UP6n5pSLWAG2okfjrZzzSFz756Rp+J pdTGHW8UKFgaamTn2aQPzhBgoGW3k2Km9UJXaYvvMbnE/DW0xwpmHW9UO tiaM3gnoLfqRYwUMH6tQ4Tomi7ZVKhwJdSzUQiTAczi/x4rxabm3Jo/BS aDiK5+u7TemfvwLWZ63teFOKVolVB7GYWnKLAmhgtxoc9UJUyBMcUMBRf ODcMAAvuP/WLw5ojKEiIHJH7KVIfDdt063onBO7Oi+QpoF/YZiYZVv1YG iB4ngK8yKLzhgoa9VdjAvFg7hui1Un1XnGs++11EMUX76yVNb/gYes/cj A==; X-IronPort-AV: E=Sophos;i="5.56,345,1539619200"; d="scan'208";a="101342426" Received: from mail-by2nam01lp2051.outbound.protection.outlook.com (HELO NAM01-BY2-obe.outbound.protection.outlook.com) ([104.47.34.51]) by ob1.hgst.iphmx.com with ESMTP; 13 Dec 2018 03:46:27 +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=DEBZ1zbUnJ7MrHXYHHOCT2QIjMn+XK9nSpnpri0SL4SnWBk6hKOETe4k08IDOfNC45kr/7is0KKNPbRDqM1cBjoK2yYhn6D1CIsmzjujzh4EFccDCa4l4m/aALtdjFD245827u0mAT2/pnfVWQawZRlMVqMldisiJjVZmr3tUb0= Received: from MWHPR04MB0401.namprd04.prod.outlook.com (10.173.48.18) by MWHPR04MB0446.namprd04.prod.outlook.com (10.173.48.139) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.21; Wed, 12 Dec 2018 19:46:25 +0000 Received: from MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604]) by MWHPR04MB0401.namprd04.prod.outlook.com ([fe80::9067:fb44:66b2:7604%3]) with mapi id 15.20.1425.016; Wed, 12 Dec 2018 19:46:25 +0000 From: Alistair Francis To: "qemu-devel@nongnu.org" , "qemu-riscv@nongnu.org" Thread-Topic: [PATCH v1 23/23] configure: Add support for building RISC-V host Thread-Index: AQHUklNd3qMbeMYmdkeETM0eyVdnPg== Date: Wed, 12 Dec 2018 19:46: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: BYAPR11CA0063.namprd11.prod.outlook.com (2603:10b6:a03:80::40) 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; MWHPR04MB0446; 6:LrIeOXltcCViLUELN0obptYtdSYFfk0isR3HNF95dbu1/dhK8g7HpKXXQxwKR2T3T2z7pV2ZDbbyr9IAYjDKSMFjP5H6lsq/lp+OZQiNjCO6d8H1czsBRjJ73f2wpkoVLMYpfqt1sG87IJUXxewVo52JwsUBbepXku23ntTdU9VF4YzzZQ75zmscGkS1f2TIeP/uheHk/mZ4LRFZrEDC6Njyk0iAUyri6LZ/ityvB2awaM4Ct2EbCojJ9ikQdUP0KT62BYA/2D34Wj/K5U658K6s+ulRrI6WM2TY66xmeiatmJcjM7kp5Wnb5sXQ1twSQsbZMaeNIoOVn8uc1os+oB+6JKuyTwDzZOxES4SaUlKqBU7maJJiOQapETK+5LQ+DIJ/NIDS+2YrAHXuoRU0uONkTO4yV4DXFFrpQn7n5YwK6FdVrDs9MQgcikG1m0MHcw9xZEZ7tnX3/LLqReXGIQ==; 5:6z5WH8XHX+2eP8dLpslvpafrpi8Keg99BWXwxS9xTtiLaZuA8ebx4NnfdUwMjUYqa9SdbMNRz9hJWgqK9do/mnAMgp06RK8C9P1xHOynYoU910f2ZxmkSiVf3qU/Ygqbzy8nviXJfRFAwA5MP70TxCXJRckHhHW+WCIkT3KTsyo=; 7:dr2azMtdYvDZN183jeidmkjUTlSqMFI91KLZXGRmwDJ42ND2VVpzRlzM0tdCJYXiao5omoiH1GX+Lm4nL6kar2uUFbwCfBeintaFVCZd/rRgBg5wVmzKoH/Uu0hv4KCmVq1ZNHvZapvyjtLojvhzpw== x-ms-office365-filtering-correlation-id: ec85ad63-9e77-459f-d284-08d6606a800c 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:MWHPR04MB0446; x-ms-traffictypediagnostic: MWHPR04MB0446: 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)(10201501046)(3231455)(999002)(944501520)(52105112)(93006095)(93001095)(3002001)(6055026)(148016)(149066)(150057)(6041310)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123558120)(20161123564045)(201708071742011)(7699051)(76991095); SRVR:MWHPR04MB0446; BCL:0; PCL:0; RULEID:; SRVR:MWHPR04MB0446; x-forefront-prvs: 0884AAA693 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(136003)(39860400002)(366004)(346002)(396003)(376002)(189003)(199004)(3846002)(71190400001)(6512007)(97736004)(256004)(66066001)(2501003)(81166006)(50226002)(53936002)(6436002)(71200400001)(8676002)(106356001)(4326008)(6116002)(39060400002)(105586002)(478600001)(8936002)(6486002)(305945005)(386003)(6506007)(44832011)(110136005)(81156014)(186003)(72206003)(68736007)(7736002)(102836004)(486006)(316002)(54906003)(26005)(99286004)(76176011)(14454004)(86362001)(11346002)(476003)(5660300001)(2906002)(446003)(36756003)(52116002)(25786009)(118296001)(2616005); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR04MB0446; H:MWHPR04MB0401.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; x-microsoft-antispam-message-info: 7yX0w3CpqBr2kp6xBrS4zwrvz9uOXyr9YhVqxTvjnAk1DFqSaU80UuUk3AV11Q+cYPZ6+TnKH5IoTw52ll9sjqElMF2OrQiZs4cTM++FgiE/YXWZoz+DcxNjQlW6Zuyry75nwbggdE+2ApQgcV4BB8Yiin5wh2pZmYrv2G+QQvWwlJ1uTw419SDwMlmuHE7nanCH8R74Gwba51NPBlvYww6GfP4w7xX3yWzJdRzomdweiV0c6+mbO+2kJ4DBgDjVTzkEaaePV5HeLS1HdMNU9BW7yVAed1e0a+WH4wXGT2yQZJfsNe0wTpuJSSmdoghY spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: ec85ad63-9e77-459f-d284-08d6606a800c X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Dec 2018 19:46:25.3127 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB0446 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.141 Subject: [Qemu-devel] [PATCH v1 23/23] 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*)