+static void sh2_irq_cb(int id, int level)
+{
+ // diagnostic for now
+ elprintf(EL_32X, "%csh2 ack %d @ %08x", id ? 's' : 'm', level, sh2_pc(id));
+}
+
+void p32x_update_irls(void)
+{
+ int irqs, mlvl = 0, slvl = 0;
+
+ // msh2
+ irqs = (Pico32x.sh2irqs | Pico32x.sh2irqi[0]) & ((Pico32x.sh2irq_mask[0] << 3) | P32XI_VRES);
+ while ((irqs >>= 1))
+ mlvl++;
+ mlvl *= 2;
+
+ // ssh2
+ irqs = (Pico32x.sh2irqs | Pico32x.sh2irqi[1]) & ((Pico32x.sh2irq_mask[1] << 3) | P32XI_VRES);
+ while ((irqs >>= 1))
+ slvl++;
+ slvl *= 2;
+
+ elprintf(EL_32X, "update_irls: m %d, s %d", mlvl, slvl);
+ sh2_irl_irq(&msh2, mlvl);
+ if (mlvl)
+ p32x_poll_event(0);
+ sh2_irl_irq(&ssh2, slvl);
+}
+