summaryrefslogtreecommitdiffstats
path: root/include/hw
diff options
context:
space:
mode:
authorCédric Le Goater2021-10-04 23:21:41 +0200
committerDavid Gibson2021-10-21 02:42:47 +0200
commit621f70d21027a914eda1446134193a24e7a662d5 (patch)
treea6deeb9fb2832c5d358b2dfd36b75900d393afc8 /include/hw
parentMerge remote-tracking branch 'remotes/mst/tags/for_upstream' into staging (diff)
downloadqemu-621f70d21027a914eda1446134193a24e7a662d5.tar.gz
qemu-621f70d21027a914eda1446134193a24e7a662d5.tar.xz
qemu-621f70d21027a914eda1446134193a24e7a662d5.zip
spapr/xive: Add source status helpers
and use them to set and test the ASSERTED bit of LSI sources. Signed-off-by: Cédric Le Goater <clg@kaod.org> Message-Id: <20211004212141.432954-1-clg@kaod.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Diffstat (limited to 'include/hw')
-rw-r--r--include/hw/ppc/xive.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/include/hw/ppc/xive.h b/include/hw/ppc/xive.h
index 252c58a1d6..b8ab0bf749 100644
--- a/include/hw/ppc/xive.h
+++ b/include/hw/ppc/xive.h
@@ -286,6 +286,30 @@ uint8_t xive_esb_set(uint8_t *pq, uint8_t value);
uint8_t xive_source_esb_get(XiveSource *xsrc, uint32_t srcno);
uint8_t xive_source_esb_set(XiveSource *xsrc, uint32_t srcno, uint8_t pq);
+/*
+ * Source status helpers
+ */
+static inline void xive_source_set_status(XiveSource *xsrc, uint32_t srcno,
+ uint8_t status, bool enable)
+{
+ if (enable) {
+ xsrc->status[srcno] |= status;
+ } else {
+ xsrc->status[srcno] &= ~status;
+ }
+}
+
+static inline void xive_source_set_asserted(XiveSource *xsrc, uint32_t srcno,
+ bool enable)
+{
+ xive_source_set_status(xsrc, srcno, XIVE_STATUS_ASSERTED, enable);
+}
+
+static inline bool xive_source_is_asserted(XiveSource *xsrc, uint32_t srcno)
+{
+ return xsrc->status[srcno] & XIVE_STATUS_ASSERTED;
+}
+
void xive_source_pic_print_info(XiveSource *xsrc, uint32_t offset,
Monitor *mon);