From patchwork Wed Sep 5 22:09: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: 10589585 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 A23DA157A for ; Wed, 5 Sep 2018 22:16:51 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 328822A9EC for ; Wed, 5 Sep 2018 22:16:51 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 25B1F2AA1B; Wed, 5 Sep 2018 22:16:51 +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.8 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI,T_DKIM_INVALID 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 871F82A9EC for ; Wed, 5 Sep 2018 22:16:50 +0000 (UTC) Received: from localhost ([::1]:58288 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fxg6T-0007P7-3P for patchwork-qemu-devel@patchwork.kernel.org; Wed, 05 Sep 2018 18:16:49 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57675) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fxg0P-0001C5-Ai for qemu-devel@nongnu.org; Wed, 05 Sep 2018 18:10:34 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fxg0K-0003zx-S9 for qemu-devel@nongnu.org; Wed, 05 Sep 2018 18:10:33 -0400 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:48173) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fxg0H-0003le-53 for qemu-devel@nongnu.org; Wed, 05 Sep 2018 18:10:26 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1536185425; x=1567721425; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=a2IpJ1Qa3B7KQtef8cH3YqtQU+X0C+P2ZGaICmoolaM=; b=aMOuelT5vva9NjO9L9dRTQXaU+3QbzuwY5xnR66FsdVF7qcrbxXTefTS R7soZKTYLB7FN87Pqevm/U+40MkU3/YX+yEBOnO5qdzgIMnPVMpc8l42L X3zycYXi3Ix1jtehfVD4OD1DQE1GkbURaNlKH1IMlaqaqkzvEDUIeIS2l 5KEhUnwyfHihHpBkDMMbjUDlKcx1WMUjCqFTl2o24LbYQfmaWiNua3NkE M1FDx2mZIT6DzsZABS/SfPXZ/A0YxWGVBYosmoxO1f5Wzmg0jTmGoIAoe ozHh5Y8XGrCfFUXFpZJuBHYt2RitChbud7hwz47BH3MiYc+2gSN7KE0m5 A==; X-IronPort-AV: E=Sophos;i="5.53,334,1531756800"; d="scan'208";a="93247423" Received: from mail-by2nam01lp0178.outbound.protection.outlook.com (HELO NAM01-BY2-obe.outbound.protection.outlook.com) ([216.32.181.178]) by ob1.hgst.iphmx.com with ESMTP; 06 Sep 2018 06:10: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=vL0sVr8SipgV1ie+zBP9woPBR5U1Pmnbt5Iazcuf1k0=; b=TgdULGFIv/XrI3Dno65ztos1IbvzqOb7QTBspyll+146wIstYLzwFEN1h3K9hlHRttkFS6OPeWJ/jbVexUxi+0i2L44EnE2O51X3UsJV5/c1ctx28vlt2aQhOw3WagckiPIf5oWWOptWcT8awFEA78EXhgqOb0ZnJMVTvcBmgcw= Received: from risc6-mainframe.int.fusionio.com (199.255.44.171) by BN6PR04MB0386.namprd04.prod.outlook.com (2603:10b6:404:91::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1101.18; Wed, 5 Sep 2018 22:10:03 +0000 From: Alistair Francis To: qemu-devel@nongnu.org Date: Wed, 5 Sep 2018 15:09:27 -0700 Message-Id: <20180905220932.6152-5-alistair.francis@wdc.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180905220932.6152-1-alistair.francis@wdc.com> References: <20180905220932.6152-1-alistair.francis@wdc.com> MIME-Version: 1.0 X-Originating-IP: [199.255.44.171] X-ClientProxiedBy: CO2PR06CA0060.namprd06.prod.outlook.com (2603:10b6:104:3::18) To BN6PR04MB0386.namprd04.prod.outlook.com (2603:10b6:404:91::15) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5062bed3-007f-45e2-d49f-08d6137c5848 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:BN6PR04MB0386; X-Microsoft-Exchange-Diagnostics: 1; BN6PR04MB0386; 3:0zBVSrNXoJo8J/CpgJilNInhIKDSRbp2zddn/n7M1Yhsofk0rrE3GH8gt6KEaDtj1Ki2yPXAq0Jk1BN748lU2goCpC3QaxfZRBTZLFNiQInYqN7dNA9pCuMSs8LtbiJbT19j8Ra7i2y/fUGXtOMewWC0INO8jWtcrCm1x6zYA6NxDy+KSVPdnFYTKWzE/Fk4P/7IX9CM6lW4k4cRZXCXBnXQbiQDABnyd/0Fd1/lHnU4433pwde9zyPDQWrsQPsx; 25:ifCmQrKnwlpTJNqRy8tQMTiOVkP+PZXzcYFB0yRJFMVXT0LZS6C/x1gC1PmFAjG3w4+6Otf+dJNwZdwNm7wKGYksUnqPr4rcrSQPS5ICfk40wDNjCKWZfiCuuIkA9ppFpRxLFuEc2hrDiF2lCXfUB5BkwVJi6SgnYMvLAd7+AjhjD9QkJETIimJIn8l+D82cyNkH9/A4y4tFBd+Po0DfmCI9lXusTzg9zJSu7GcFmYdjtWsqGDU7lQdiyFStQL99lEWm2BmX/LrGtw5H1rjPjRqsL8EOqdyyTcXD3WRqtYR+PECZUVaW8+2S+bdmFgMos+RvnOBlkr1yNaMcx/CtuQ==; 31:wDoRE1IvqzpZbRV1E8uDoVi/wqWZzyQ0LaMPjfTbyaWdX2s8ut3yboC245pLLmZ+W5tBzK+zaunhPhnCWsN9FkbBR+ebL3sJMcLN8TSf4mq6HaY32Z3yzzXrf0KfnGUU4pvS+i5WymAGWa736gMr5wk9g6Zn4IW7iGVHKK8c5E9LpoTkmQpZTHKsM5iU8Qvkz+vYnwfqMi0ZMdF9CkUGtCj0b3DSNgjV0iae45GFWfo= X-MS-TrafficTypeDiagnostic: BN6PR04MB0386: WDCIPOUTBOUND: EOP-TRUE X-Microsoft-Exchange-Diagnostics: 1; BN6PR04MB0386; 20:BdmMINLyfnXyPYk4b4KgNhAvA10AfLDbd69UxFVDDWkJKMOfa+jaiVFGTUbrWNKytNVcrDHx5Hxj/cJdKXHdeqolkU3as9zx8Vh7TxMpb+fylIp3hWy7JiolxZqRi7cXfZWmEG8lqQbSSwMyZBafD5IpUtPZBmkAG7+HIzDPJIoy+hXvP/CoWse67QeRhK0IpzgeJxbrOk8YdxBhZhFg6JYSpK2i82z5+diJBqjad5+dVM0bFxBv2iLTlsOe8ODiSR7sLRflD9VOy7C4lmecr7BYmCq5qPiUZ0FQmmJy2gjJ8xkBswGa7PeKSONyiarxbFTVbQrNhvGlZq6z58Y+BJXNWA0irGILbcmQRYgh3eVdUVMRD3E1/fMWlumr4OsdybaYjovNuXrcTFVaOjcyo1ssdZXy3Ps52YRH85PINdu9I7HL+LuEej6jbdhDMXA2yd9sVoPEBFa/hSOXr8q0SoQLaX8hP5sa9qAEHcJDtOIEhphW68fLZETnzLIlV1yg; 4:TtwaeQZ+/uX//OQciggFv+O8309Dn7dvMwevqA5C7i0pOCrUrUdlCrA/ou7oceN3VybjtAkWiAiemIreBuvmuKZrnUzIPUcquvI+0NPaFu+0IvM7ByqCVISd21KYKm4lRPZqPla8Yia1C4XWdvZeC7FXsBj3LPaSXcQKd0h2vZfOs4DghUHgYc3NDGg0WqgAGeJNZJB48zxubc8iPP4qJL7spK5hbDMrn9iqAXzUJr/oGQC6gWUBbu+Bduv34fqPNbGQEY/7R14FcpdLAxMgXQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(823301075)(10201501046)(3231344)(944501410)(52105095)(3002001)(93006095)(93001095)(6055026)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123558120)(20161123560045)(20161123564045)(201708071742011)(7699016); SRVR:BN6PR04MB0386; BCL:0; PCL:0; RULEID:; SRVR:BN6PR04MB0386; X-Forefront-PRVS: 078693968A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(366004)(39860400002)(346002)(396003)(376002)(136003)(199004)(189003)(44832011)(53936002)(6512007)(86362001)(5660300001)(97736004)(6346003)(48376002)(6666003)(2906002)(6916009)(50466002)(386003)(6506007)(72206003)(186003)(26005)(1076002)(478600001)(36756003)(47776003)(66066001)(8676002)(16526019)(486006)(3846002)(68736007)(6486002)(6116002)(11346002)(956004)(2616005)(106356001)(105586002)(7736002)(2361001)(4326008)(16586007)(476003)(76176011)(81156014)(81166006)(316002)(54906003)(8936002)(50226002)(2351001)(52116002)(51416003)(25786009)(305945005)(14444005)(446003); DIR:OUT; SFP:1102; SCL:1; SRVR:BN6PR04MB0386; H:risc6-mainframe.int.fusionio.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Alistair.Francis@wdc.com; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN6PR04MB0386; 23:ELhEGwamoYF5PHXMiihrsnPGiBcMJpYZIg+qxwx3g?= m5CVk3KvHR60/emilxOb3xoEk0GzVXNZ727tLYv2MsK7mAAuGM9lPQhI5mtWQGcEhBa1WDqVXSfIPnnBjh0RRlm5QFGxNYzmbLjc0F2Q5BKQ8Fp0QSSst+bMlBT8lMOyriEhRC8+bfz8vAweCTtJ86CP4xe5w/TH2AeSti7JfHDLZihNAnED7P3WbDdEv7g2gePryUM6STmKu/PfDz9aEfK9ThznJ1OsJ96wPe89nKmrGAQGvNxLPMlXdJ7v/ZYK/HLTvooX38eb3FLx8Phe2xZpsFV4RvYCetE4/LQyvtrKB8McIs3+RkwporR9cGLtIyeLEHqiDzb8QVmQekY5lTbcIbANtff/RvNhGSJh9Rmp6xZn54Q+MJ35tb72abJT4k6XHCaYfPVa8RU1tWCNSPO7gDy3y9tpgCnk5Ud2qByTa/3KIXUqo1h1X5rkyuCahKohU3nyegINMHB13LPEnX29WQpggo6UWgQkoORY9hjoCgr1txghYxW6+DUtqP9dTwNjyI5nZlYa+N6kit95ZzEeJuiAoui9Yvl+I8uy0Fzj7lZnnQLACTsho8Co3lbu4bjJfH3hg4c8eI/URIY3/B1bnGcsiRVeoQxiQJDcOh60P00al3Vep4z5PvgD5aHqr5WdWjfIYRaOIyZ0HKC3+VSHaPVhvRPwhs/uUiTix04EPRtrxocKjnTfuvBYi5M7ieHsr8AiCEUeuysP6bTJMQtux9Qvup/E+aESLkUGNim9KhlP2TFZMSzCmnPGikPb2HdGcvoCK9F1roJzZqEX1KWQtZzLstQCXkVeBxPYs6vO7cqgjx3N2Yl/1FnMXF1SmfVIwixsg9CPqvOHG3e/9dRDK8UsxhJJJIi/tFNnNn06IsO7fz1p/Q0SOZ1WPR/wAOgdckn9zHRobtZITmlrlr1iZNfB4m0ATbAo9GWWRcisIaukES9pnTz797WaXX9B0B/sw1JQ3+HvQMVeGGRXbx+PEWy5bpSBqZy0wHp55ZlkEMdud2oKO8pBwvWi6lh27L1GWJkzE2wU3eY/0C50RaRI8LDegCqx2WeUQRU/cfXmP29iAUhAn/Jd69KOoudUNfr/WDBeb7Fm8YlnfoOX7KzYvBUdHysaV0JcGq8vpllLL1DB4hijMZbxZW0bVNnGACWPIwOWl9hsuaEl7dtPbPEmBxioPF0XdGs3qOEHmRQ3TQC+BJ4rIkAcB3tnAbKvFWf22FrdUtEJx+acBoiVSqmVQkBjVbl4XTqSfqTLsSQ0X/0pBAVkL81yjE1ht2yYTC+GUiZSHSEkeRBjgw6KOXH X-Microsoft-Antispam-Message-Info: jUjf+yCGl5C5zbvQHvqLeOPwIHyPwCr14VODYYaT+mHk4hMPlivGKRmgcF46NPooh9KpBJ6x9rWqimCFfztMXuDOfEG01qgGraEOOjqQ7+c+VnVHPJlf5knCoSqsHNVFpT61Y6Ar9shvUvi75bYTNZHExzUdsn2bWPGVOOzscarYWtXagnVFHzbYtmwz8Ouet7cpjSfZVGnggTrqq4sKXQoy0ZZr/GRA5eG+SKdQr1q6mlQDx5MLGNqOV4X+5xkOJ7r6UTg6ScPRaIwBQm21QJs/qdmSNTkQiM9EHIhv1RZhkyup9t9URaljWO701sLMeH1EN6rVE0gp+TODd0ZzvsncdI4eSiAPaf7jWTFtBgM= X-Microsoft-Exchange-Diagnostics: 1; BN6PR04MB0386; 6:UAebNJqw2zogT0A1iluc97iz06wIeCo8DwVjh0SmuAAa5O505wJAK3rvvgWM27dQk87vinQ+FzSUeQHZ483iEjYuRZkqWODBXdgs0hS54ytrNwpLqaC2ETjvLIwjo6CuRqEN2g0/9ORSAgOHJ8Wa1f60sFZeq0367YVpXrupdo71VtUDcG/f5RU7nS+28HwKhf03Z59En9IKNW1nWzqc0f5k9PYuf7LcOa2xAcqJ7GNPE3IGmcaWz2nCbs/3EtnP/J1luNfAblAQ06nFLRdj8rTh3WeRIZAzbZU2WcswiRBdEhfTtVGcdA/9VQZAz2UZzt4lOu7gWNCHHhz6kzZjFuDKoaeLbjsXlwYDWiciJwiHuSLYFN04tVwmiaqvHyI4B96PTJrt3MEkD5h3lEaV+QvuWMdUakh6rQ0j+f4XVhfh5kVmJlu1arIhObSrixRPpt17KC4eVw6H1XoZBIKawg==; 5:P+CgkNfEsQvqsDs/PtOEqi1zMzf+H8LOGz72gPu00RR6DarD3wb89igUNA8zClnnhrzKkWcaZ2N6g2hQqvhZqwDoWxPF6tfW7fsTxWtQgWeFjY16y+xcSmgjam7zKz1SdjpAYc5s5ekprzE7DIx1e7WFSp2X6BParNB4JWdbDGE=; 7:W7dDC1fOHh3naHy3dK/UK0cWqIzbiqDcUSPXayRwbkOYutIuvnQghYkM351w6R4b+GY/g+Tw+fzyRE5vMwNeKAX6mktdfBwjFgPHHbMss77Zztk/oec+nBGrHdx3S+johpSblPVEbPfkL6owEJlUwz/HQ47F2JovDuIqxJdE32h0bRIXd0shgbsNCtyDCbLq4UxqAyIVUmagfmpK2uIxssmlQBwN7yYZo3g3t1/b+8Kv+3Qjmrc3YkbePaymnbQO SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Sep 2018 22:10:03.8636 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5062bed3-007f-45e2-d49f-08d6137c5848 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR04MB0386 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 216.71.153.141 Subject: [Qemu-devel] [PULL v2 04/10] RISC-V: Simplify riscv_cpu_local_irqs_pending 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: Bastian Koppelmann , Alistair Francis , Michael Clark , Palmer Dabbelt , Sagar Karandikar Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP From: Michael Clark This commit is intended to improve readability. There is no change to the logic. Cc: Sagar Karandikar Cc: Bastian Koppelmann Cc: Palmer Dabbelt Cc: Alistair Francis Signed-off-by: Michael Clark Reviewed-by: Alistair Francis Signed-off-by: Alistair Francis --- target/riscv/helper.c | 34 ++++++++++++---------------------- 1 file changed, 12 insertions(+), 22 deletions(-) diff --git a/target/riscv/helper.c b/target/riscv/helper.c index 1f0527e07f..63b3386b76 100644 --- a/target/riscv/helper.c +++ b/target/riscv/helper.c @@ -35,28 +35,18 @@ int riscv_cpu_mmu_index(CPURISCVState *env, bool ifetch) } #ifndef CONFIG_USER_ONLY -/* - * Return RISC-V IRQ number if an interrupt should be taken, else -1. - * Used in cpu-exec.c - * - * Adapted from Spike's processor_t::take_interrupt() - */ -static int riscv_cpu_hw_interrupts_pending(CPURISCVState *env) +static int riscv_cpu_local_irq_pending(CPURISCVState *env) { - target_ulong pending_interrupts = atomic_read(&env->mip) & env->mie; - - target_ulong mie = get_field(env->mstatus, MSTATUS_MIE); - target_ulong m_enabled = env->priv < PRV_M || (env->priv == PRV_M && mie); - target_ulong enabled_interrupts = pending_interrupts & - ~env->mideleg & -m_enabled; - - target_ulong sie = get_field(env->mstatus, MSTATUS_SIE); - target_ulong s_enabled = env->priv < PRV_S || (env->priv == PRV_S && sie); - enabled_interrupts |= pending_interrupts & env->mideleg & - -s_enabled; - - if (enabled_interrupts) { - return ctz64(enabled_interrupts); /* since non-zero */ + target_ulong mstatus_mie = get_field(env->mstatus, MSTATUS_MIE); + target_ulong mstatus_sie = get_field(env->mstatus, MSTATUS_SIE); + target_ulong pending = atomic_read(&env->mip) & env->mie; + target_ulong mie = env->priv < PRV_M || (env->priv == PRV_M && mstatus_mie); + target_ulong sie = env->priv < PRV_S || (env->priv == PRV_S && mstatus_sie); + target_ulong irqs = (pending & ~env->mideleg & -mie) | + (pending & env->mideleg & -sie); + + if (irqs) { + return ctz64(irqs); /* since non-zero */ } else { return EXCP_NONE; /* indicates no pending interrupt */ } @@ -69,7 +59,7 @@ bool riscv_cpu_exec_interrupt(CPUState *cs, int interrupt_request) if (interrupt_request & CPU_INTERRUPT_HARD) { RISCVCPU *cpu = RISCV_CPU(cs); CPURISCVState *env = &cpu->env; - int interruptno = riscv_cpu_hw_interrupts_pending(env); + int interruptno = riscv_cpu_local_irq_pending(env); if (interruptno >= 0) { cs->exception_index = RISCV_EXCP_INT_FLAG | interruptno; riscv_cpu_do_interrupt(cs);