@@ -807,3 +807,15 @@ bool spapr_xive_eq_for_target(sPAPRXive *xive, uint32_t target,
return true;
}
+
+void spapr_xive_mmio_map(sPAPRXive *xive)
+{
+ /* ESBs */
+ sysbus_mmio_map(SYS_BUS_DEVICE(xive), 0, xive->esb_base);
+
+ /* Thread Management Interrupt Areas */
+ /* TODO: Only map the OS TIMA for the moment. Mapping the whole
+ * region needs some rework in the handlers */
+ sysbus_mmio_map(SYS_BUS_DEVICE(xive), 1,
+ xive->tm_base + (1 << xive->tm_shift));
+}
@@ -70,5 +70,6 @@ typedef struct sPAPRMachineState sPAPRMachineState;
void spapr_xive_hcall_init(sPAPRMachineState *spapr);
void spapr_xive_populate(sPAPRXive *xive, void *fdt, uint32_t phandle);
+void spapr_xive_mmio_map(sPAPRXive *xive);
#endif /* PPC_SPAPR_XIVE_H */
It will be used when the guest chooses the XIVE exploitation mode in CAS. Signed-off-by: Cédric Le Goater <clg@kaod.org> --- hw/intc/spapr_xive.c | 12 ++++++++++++ include/hw/ppc/spapr_xive.h | 1 + 2 files changed, 13 insertions(+)