From nobody Sun Apr 12 04:37:33 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=git.sr.ht Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771600155349809.7482140105602; Fri, 20 Feb 2026 07:09:15 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vtS7s-0005re-O3; Fri, 20 Feb 2026 10:09:04 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vtS2Z-0008PE-95; Fri, 20 Feb 2026 10:03:35 -0500 Received: from mail-a.sr.ht ([46.23.81.152]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vtS2X-0002MU-LR; Fri, 20 Feb 2026 10:03:34 -0500 Received: from git.sr.ht (unknown [46.23.81.155]) by mail-a.sr.ht (Postfix) with ESMTPSA id 3249E25025; Fri, 20 Feb 2026 15:03:12 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=AHBKd/E7gyHUH8J6ORF6Q6SY/jbV6XihNGC5nYAYW8Y=; c=simple/simple; d=git.sr.ht; h=From:Date:Subject:Reply-to:In-Reply-To:To:Cc; q=dns/txt; s=20240113; t=1771599792; v=1; b=E7ZA/Ga9knyjjFTJb/IJKleVXgIabmEzGst8yeGmrBGD67nCLlcTT5ahiJIvpTsZScpVb7+L NBfyJ2uwxQ6ZKhd4bsqncE0U/45X2FcqNLBsZy3fnm6brPCjB44DhpLy4GICRkEKnLAyVCFWVtB 4yGxq8Os6LsjX+qpxX5A8aZ1QshKBs+jD//eid7jmrE88kFgd+jm24xvMITNH3xVdRpnuLxmk4a rB3xJ/G4pn+XiMQN0CH8HSYFdPBmFtZBkDJm3s7ZzOfxwZNth9SaktaNUJoiKziigLoA/X5yo/k GxqKQqU+qeXVpOHFVaq5EZfg/fhVwFlbpCGtNsz1/3LVQ== From: ~lexbaileylowrisc Date: Tue, 31 Jan 2023 14:52:45 +0100 Subject: [PATCH qemu 10/11] [ot] hw/riscv: add an IRQ wrapper Message-ID: <177159976712.8279.7732381632410882915-10@git.sr.ht> X-Mailer: git.sr.ht In-Reply-To: <177159976712.8279.7732381632410882915-0@git.sr.ht> To: qemu-devel@nongnu.org Cc: Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , qemu-riscv@nongnu.org, Paolo Bonzini , =?utf-8?q?Marc-Andr=C3=A9?= Lureau , Alistair Francis , Pierrick Bouvier , "Dr. David Alan Gilbert" , Daniel =?utf-8?q?P=2E_Berrang=C3=A9?= , Philippe =?utf-8?q?Mathieu-Daud=C3=A9?= , lowRISC , nabihestefan@google.com, Amit Kumar-Hermosillo Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=46.23.81.152; envelope-from=outgoing@sr.ht; helo=mail-a.sr.ht X-Spam_score_int: 17 X-Spam_score: 1.7 X-Spam_bar: + X-Spam_report: (1.7 / 5.0 requ) BAYES_00=-1.9, DATE_IN_PAST_96_XX=3.405, DKIM_INVALID=0.1, DKIM_SIGNED=0.1, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Fri, 20 Feb 2026 10:09:01 -0500 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: ~lexbaileylowrisc Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1771600157077154100 From: Emmanuel Blot Signed-off-by: Emmanuel Blot Includes existing MIT licenced code (already published elsewhere) --- include/hw/riscv/ibex_irq.h | 69 +++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 include/hw/riscv/ibex_irq.h diff --git a/include/hw/riscv/ibex_irq.h b/include/hw/riscv/ibex_irq.h new file mode 100644 index 0000000000..22ccff6d5e --- /dev/null +++ b/include/hw/riscv/ibex_irq.h @@ -0,0 +1,69 @@ +/* + * QEMU lowRISC Ibex IRQ wrapper + * + * Copyright (c) 2022-2023 Rivos, Inc. + * + * SPDX-License-Identifier: MIT + * + */ + +#ifndef HW_RISCV_IBEX_IRQ_H +#define HW_RISCV_IBEX_IRQ_H + +#include "qemu/osdep.h" +#include "qom/object.h" +#include "hw/irq.h" +#include "hw/qdev-core.h" +#include "hw/sysbus.h" + + +/** Simple IRQ wrapper to limit propagation of no-change calls */ +typedef struct { + qemu_irq irq; + int level; +} IbexIRQ; + +static inline bool ibex_irq_set(IbexIRQ *ibex_irq, int level) +{ + if (level !=3D ibex_irq->level) { + ibex_irq->level =3D level; + qemu_set_irq(ibex_irq->irq, level); + return true; + } + + return false; +} + +static inline bool ibex_irq_raise(IbexIRQ *irq) +{ + return ibex_irq_set(irq, 1); +} + +static inline bool ibex_irq_lower(IbexIRQ *irq) +{ + return ibex_irq_set(irq, 0); +} + +static inline void ibex_qdev_init_irq(Object *obj, IbexIRQ *irq, + const char *name) +{ + irq->level =3D 0; + qdev_init_gpio_out_named(DEVICE(obj), &irq->irq, name, 1); +} + +static inline void ibex_qdev_init_irqs(Object *obj, IbexIRQ *irqs, + const char *name, unsigned count) +{ + for (unsigned ix =3D 0; ix < count; ix++) { + irqs[ix].level =3D 0; + qdev_init_gpio_out_named(DEVICE(obj), &irqs[ix].irq, name, 1); + } +} + +static inline void ibex_sysbus_init_irq(Object *obj, IbexIRQ *irq) +{ + irq->level =3D 0; + sysbus_init_irq(SYS_BUS_DEVICE(obj), &irq->irq); +} + +#endif /* HW_RISCV_IBEX_IRQ_H */ --=20 2.49.1