-int
-isrm_ivexalloc(isr_cb handler)
-{
- struct gic_int_param param;
- struct gic_interrupt* intr;
-
- param = (struct gic_int_param) {
- .class = GIC_SPI,
- .group = GIC_G1NS,
- .trigger = GIC_TRIG_EDGE,
- };
-
- intr = gic_install_int(¶m, handler, true);
-
- return intr->intid;
-}
-
-isr_cb
-isrm_get(int iv)
-{
- struct gic_interrupt* intr;
-
- intr = __find_interrupt_record(iv);
- if (!intr) {
- return NULL;
- }
-
- return intr->handler;
-}
-
-ptr_t
-isrm_get_payload(const struct hart_state* state)
-{
- struct gic_interrupt* active;
-
- active = gic.pes[0].active;
- assert(active);
-
- return active->handler;
-}
-
-void
-isrm_set_payload(int iv, ptr_t payload)
-{
- struct gic_interrupt* intr;
-
- intr = __find_interrupt_record(iv);
- if (!intr) {
- return NULL;
- }
-
- intr->payload = payload;
-}
-
-void
-isrm_notify_eoi(cpu_t id, int iv)
-{
- gic_signal_eoi();
-}
-
-void
-isrm_notify_eos(cpu_t id)
-{
- isrm_notify_eoi(id, 0);
-}