From patchwork Tue Sep 4 23:14:37 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 10588109 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 2535813BB for ; Tue, 4 Sep 2018 23:22:45 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1344B29C80 for ; Tue, 4 Sep 2018 23:22:45 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 076C129C8C; Tue, 4 Sep 2018 23:22: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.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 6B42229C80 for ; Tue, 4 Sep 2018 23:22:44 +0000 (UTC) Received: from localhost ([::1]:53003 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fxKef-0007bO-1l for patchwork-qemu-devel@patchwork.kernel.org; Tue, 04 Sep 2018 19:22:41 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58049) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fxKXq-0000E6-DF for qemu-devel@nongnu.org; Tue, 04 Sep 2018 19:15:41 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fxKXm-0002BI-2x for qemu-devel@nongnu.org; Tue, 04 Sep 2018 19:15:38 -0400 Received: from esa1.hgst.iphmx.com ([68.232.141.245]:45245) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fxKXl-0002AQ-NR for qemu-devel@nongnu.org; Tue, 04 Sep 2018 19:15:33 -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=1536102933; x=1567638933; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=a2IpJ1Qa3B7KQtef8cH3YqtQU+X0C+P2ZGaICmoolaM=; b=neUoDEzdENHpImwK7d9dNHAJmBPTfB/wHlMNidtCFs+ItLwu15FOY2q0 lOYNVzIlsT6MonNULYrawQWU1ERP7YzI9aSepHTxl2ngNjl6TdQTWCQfR pSePn0ei6+9F/ENG6+FA5SOQIjgeywfZCll1tWYWwUl7VKRuSlpk9in1J rcrQbc9fZdB9SGFb1uWbS8m2eyzKfzlt2Cvc0ZOWvSpIQk6FOup9SlAuu jXv+IYwO4f2wN7E1Sg8TrgenhKWEPhQ+yuC43Y/UR1i5FRsy0YZfh/0g5 WSxwkvtfHqCXQkFUFndZLpXY4SVMXXyIlhjd+m93EbS75rI5HF27wgMqS Q==; X-IronPort-AV: E=Sophos;i="5.53,330,1531756800"; d="scan'208";a="193179302" Received: from mail-dm3nam03lp0018.outbound.protection.outlook.com (HELO NAM03-DM3-obe.outbound.protection.outlook.com) ([207.46.163.18]) by ob1.hgst.iphmx.com with ESMTP; 05 Sep 2018 07:15: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=vL0sVr8SipgV1ie+zBP9woPBR5U1Pmnbt5Iazcuf1k0=; b=KkhVKnKUk98WHCf+ZUDMEkv+XQieE3MtfjxG2iZ7TNSuvvikanlKpVGAQpztrUBJExKe4kXsg93eb2fSqwOpzXzApWCt+nUK4US/qcQegAuKXrDmszC04aRgkvWoP8MzV2oW5GpqhzWe8ZPsFGAH7eUV9LgYXMMg3DaEsIhFwqs= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Alistair.Francis@wdc.com; Received: from risc6-mainframe.int.fusionio.com (199.255.44.171) by BN6PR04MB0389.namprd04.prod.outlook.com (2603:10b6:404:91::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1101.18; Tue, 4 Sep 2018 23:15:22 +0000 From: Alistair Francis To: qemu-devel@nongnu.org Date: Tue, 4 Sep 2018 16:14:37 -0700 Message-Id: <20180904231442.18932-5-alistair.francis@wdc.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180904231442.18932-1-alistair.francis@wdc.com> References: <20180904231442.18932-1-alistair.francis@wdc.com> MIME-Version: 1.0 X-Originating-IP: [199.255.44.171] X-ClientProxiedBy: BYAPR07CA0023.namprd07.prod.outlook.com (2603:10b6:a02:bc::36) To BN6PR04MB0389.namprd04.prod.outlook.com (2603:10b6:404:91::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 26319b87-28ca-4a31-2751-08d612bc4d42 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:BN6PR04MB0389; X-Microsoft-Exchange-Diagnostics: 1; BN6PR04MB0389; 3:a85Hk3G5/JRu74pa+c64HAl85Uiq0kmjStxjlNoS4uz2S9j5Zdf1wu9yuVauqq7yuf3Ib2FDrYfHbkyeJ41K6QftvEFsWTOgEhkdg2T81qr2FThjnloxChIOzr7ApudUZq05as7FMhSr+6+VKpEFZ854EyMR9DHg3me2sjX9wY1uoopbtlkRUXvZTGZKel5kijpwxfsrciCwHN938joTNsc5D6jT+Mk5h+3kLCM209ykbPdRruEIWAAhpzBJ6lQs; 25:jF6Mk6SLXPaeRt3jH3TpWNCXnDNSU/cdcmOYLQX8K6nmZ9hwDb0raNTqDDcBYQPZG8yL+U7nV547uINu7v3mTCgfsovSAagGfkf4Fa+7MowknfJF8Wg35oHHIBlA52BtLuKPnn3frMThth6OpTqahlWvint6YQcIk3VCLlVsiVABwYYvru1EtC0zBJkU/6XS/h2+NIrdWe66pw8AEYUHV5jvq3Kpkf4M4bIuM22P3umJV+BuKkhEa4U6E5lVit1KokN4pULgqKJRMYe4Shvmh/9eXOuByURQxGRGwjP9BpcMwpB3lq9gphMe2UtAurRgmc7E1G7VYUt71+ocPNc04g==; 31:HDQjJF7FPNV/kqbYBHRyFfGRwFgp2655oYN/w6tyFP5sJTgJFY0UA30Q1wcIt8LC0fqu4vxFjAwCJeQu3KOZOlvRZelvhoFENXblow9yiCmwW9ndPtG23WOu5KkdP+cyrVoSXDhv8D8JKX76on2P+0MHUpcK4q+ZcpbzYhCxv5QXEII52fUX+56qEMSlC4IntRN05shin/tUpe7jSsMbI/JDTC4EMFErjuCsCur0v+o= X-MS-TrafficTypeDiagnostic: BN6PR04MB0389: WDCIPOUTBOUND: EOP-TRUE X-Microsoft-Exchange-Diagnostics: 1; BN6PR04MB0389; 20:5xOotFFcMKm1cSzNMC+27l2Vix/VIHQJvpzNI7H1z2FnVQqSDbh4FGwHUDck89H1+HS2T9M+kltrayGMP7RJx8GU1tHGjrPFFF8X1WFtinVHAWU84lw6x2byoHXS42k84KBLbA3FNceeJngihRXaSqQLgMkiod9HkyYt2RlBG75LLmt1qIg6N2Zzl2Md1J1/Y1l8WEUCnplh55qWMwGk/xIoVX685qETtARHuvwqWWvUu6OQKTuwuEs9AIEuY/MX7COA/ggTOEVi9lOVKFWasn7OIqUXCMyKHSFxByTXMrsers2yTGHALqkaS/mGfSCZlJ6mm1s5jAhkB0abZ7FlfKaaRv1obGF3en8c0gbd4/NuaiQU+HGwTCUceDKcgBAmgNPm8t+ANgn3rs4JRK7Ooj6aTWooiHVrCJryFN/Ri8RhNS+KTDcM4Ri56sOobgyHFe1I5FOV88orveJi9+bo7tZvh8DKR4P0FtU8YXNWizBQOjgsqxNMvRRxcfQkFhW+; 4:t3uMJxOLwi50UdqzEAsLasWq6c2bvhNxch64YzDWMgB1Lyo2W+/wprpRTv+remrZRTgGpN2GJYeaovUqsQNBeO/waQdyfEuEtLnUIFted855vhnS8xaLlgrouD5/n+HiHg32bsMzRD07RvZATV5FF6Z4gOumUWMxVIty26ES/2iFItF4fSfsWBYiWgpJAU0GsdwOUs37n0xp43T8gFxVlYZ4gvFOt0Q/9XaKTkSz+2U/ANFY/K/3E7e0ASBJlqWtKFvWM0i4WwGkTprC0Ymr6g== 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)(3231311)(944501410)(52105095)(3002001)(10201501046)(93006095)(93001095)(6055026)(149027)(150027)(6041310)(20161123564045)(20161123558120)(20161123562045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699016); SRVR:BN6PR04MB0389; BCL:0; PCL:0; RULEID:; SRVR:BN6PR04MB0389; X-Forefront-PRVS: 0785459C39 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(39860400002)(376002)(136003)(346002)(396003)(366004)(199004)(189003)(6512007)(2906002)(486006)(51416003)(76176011)(4326008)(68736007)(5660300001)(2351001)(44832011)(6916009)(52116002)(6486002)(14444005)(97736004)(106356001)(6666003)(2361001)(105586002)(478600001)(36756003)(3846002)(1076002)(6116002)(386003)(8936002)(305945005)(11346002)(7736002)(25786009)(26005)(54906003)(81156014)(8676002)(2616005)(53936002)(316002)(50466002)(186003)(956004)(16586007)(66066001)(16526019)(50226002)(86362001)(81166006)(72206003)(446003)(476003)(47776003)(6506007)(48376002); DIR:OUT; SFP:1102; SCL:1; SRVR:BN6PR04MB0389; H:risc6-mainframe.int.fusionio.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN6PR04MB0389; 23:+VayDgkAkqy3eK9JYKUO9urLIXSz8nGbCGMGR5Sj7?= nM1+LQSn2FoTuUdTR36zCNTVkJ88nzQ8qUwJLYGS1257ACl5J8P0WZ26Dey0aZXi+b7RPf+3Eidpl+AYwiNQYzqVBwjC9rDh9nHNcY7LN7itSv5egKuweBbXMuaP95K4pW+ijcE5UfCI5+VFDmFbcqDEenxQxKmf6yRjL6IWM996UUFBTkpqIxb9aFC9JKE/VnJjX3WKwYlNax8ycBmRK0wv6KxYLCYEyMxEWI2E/oT5lTxsO2y2u/yNZI53DWKkQPK1Vct3/AnrC/29ppinFW7oO06QdENLPR+FOQ5c7JFWRxCPYg4VxvwryWLs2KzOTcUMWsLjUVpOOA2qMlNhJcoRfoKRUbOEuZC/BjY3W7P/JT1/F4hciKqyPtcpDjy9WpfobbMnRtCKI8aJfox0sIYZBXYlgCNwvWUiT4L3fG3neXzBObHUdC7ow4B/xIQOlRZxyv1mdt69vkhEa+sZx9oSILq58Hpk1mTOsb+nKgrMx2xRlk2EG51X/UGTYqJG5eMODH3lmBaroAAX0Ba4Wb3Oq/Rgxl1n9kJMCOZSWr3Sp6nophCVJM94pZYnVCRKELnTK1mBxrNKMG/RZjIkiyse7lizyiPp/1S417Fa5V0nQHJNpBu1J97Yg6unKgPrV6md8BlJCG3i9o6BuNqK9IDe1ts/Cakke81P9MSheSkwDkpp17QE10u2Fi6czLaKAmMdGID1BTnCxAra2LtApAErs6uC3aRMZG18DU7VK2EcTVhXYdaqQGquNRja3+33vx7WSco4CGNYbrjzK2m3b7nZtsAcBSaEecVPL45kh75bmBOK6OjaD6V1C/eoRR6O7koNkyc08MA8QzPJWhRkmYNZglE1O3TN/jk+SPOgmF3McBS+OgGFkOJTRAuM9x/dNzaR3vV6TTO06i3Zh0J34mNlZaftCqOI3Hd/LSbiwddrGS9ASarpufIqfIZwX8vRaUVjFiMBxUoXLqz+k1zgVcEkLMsBsA0taH2rAIAX8MlXp4TC5eIMJrp2VLqglZMN2+xiAhdCU/mNjWUVIBRzBvGFTQ1XGOg2A8m+T8nOlATUZUWV3TM2KioZlWI56WS+w5QCvQmQttqLpRYu1Y0CUOUk5aJyxFNgRSG2tC6MIAaPv4xNdLzuhaXa7fCXBzfDnC7NFvGN87Iirs+x60cyG+vePiJJq1KuclKIdk8r1Sx6YmC2QaAxsUhlgFFfmAdRlt1Rq4BPf5W0ljvaWBmsMoX1ziOO8naqX1ain+T8mwfVcdQR2lACOJ+c9rn9M91/UQ= X-Microsoft-Antispam-Message-Info: MgiPMcJvYzlvZWgWBAieMUsYtWAfNZ4mjFISF4FhT+gNM2O5tbZx7PmOFOfRU/28h+5fubGWkF/PLViTBEcPVvX3IllGROKd0CP/jzknk22IRpB2kXOnW4CXD9xFz6nrt97lhRkCry8PNW4BoKgigLMUbOgtXHIdgTbvOn9/s6fahUghpZ2JkmFbeMMWvk/AFR2X7Kf5HVZBKiNKoZKtBJE7ndVn0kCMhdoVCN6ea7Z/phYQV+SljrPJ3z2ylFUmNlKmQl4O+lrx9J8a7R24sn1RNfGw8+CArhU7PGfbuo4AAXUTy3KHhQNiJJNYTleEtRjOmUXslvONCg8KW2FOtf9Gzns9zfxzkOzLOCf/Y/o= X-Microsoft-Exchange-Diagnostics: 1; BN6PR04MB0389; 6:49OJ1znsQhPiTnfVuc5584vQz2Wn9RrSY2qHaGWI7g8oreJfkgPAWQUW122WuNQVBYrfUlM77lrvRCmiituSpJBS1M7IwLoPU/Hvt4qT/Gt3Fbh4w60EFJwdlfvCN7ReSLsER5LG+dBLeLihHZe2xWe7kQF3pDKVrp1vUx7L2u04M6ZNvGIgEOjGH+lfw9n2iVlCDabwdeYQCQ4aLk/m6Xj1Uykh0TABYuaaAFLEvyx4vkfmhfACk3ngsDcOFkwivLynecjp8ZHAGPM/KEJoUCMsh/oekcPdUXv9ly42Xc6acYfI4ZV/FFWiascZQxqFWYLOUNwA7ZLpckb7T+EtAD/cwbm6ds1AZ5DLLaNYnz6CBCTn7n5a7cb49g838/DUPI0qyqamoWpd6BwbvZJf5NWTMm7UcUR52zcrbBCDlJWwN+6PQC+4DJ5B3zxoZ8LRR+apq3aweLSX4F2bg1v4RA==; 5:ZjV6kKoFJ5yaAXes1um7KqXhl5poH3gr3wlzCQCakUDhDji5N1S0bkqRn4EmCfDNiD55rP0GVS0XDyXjEcMqpA+MWE7HqJLXUQ+j+TySoymOuN8vn6xpDbLIpU7qMUxyHK9dV0+Igg1ODLwMRPOOc5RZB5kRsPcfDUwKOSF61to=; 7:F5wbFtvAZV1+lohkAd4Z+ETImy/pd4eGLMGSvEIT8+9I97v9YnG++Z15xSqNe2+dC861NA2Vk/fOTh/W8Z1HLixJUUJIchPnn1tBmxJCDhYUZbr5Q01pDPUPK3j0V8lXPzUAyKC282np2PhMk8jwTZesz7Q3nH6aB8UUPaCumQTzj4fHGAe2ndPHsGw4SbHjxlm47WskPw060W/hAiW8FabpUWJLKuK08MROqYrSCvp1DUH/CczIJlakEwc4hO7u SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Sep 2018 23:15:22.2741 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 26319b87-28ca-4a31-2751-08d612bc4d42 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR04MB0389 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 68.232.141.245 Subject: [Qemu-devel] [PULL 4/9] 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);