Subversion Repositories HelenOS

Rev

Rev 3675 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3675 Rev 4377
Line 70... Line 70...
70
    uint64_t status;
70
    uint64_t status;
71
    uint64_t intrcv;
71
    uint64_t intrcv;
72
    uint64_t data0;
72
    uint64_t data0;
73
    status = asi_u64_read(ASI_INTR_DISPATCH_STATUS, 0);
73
    status = asi_u64_read(ASI_INTR_DISPATCH_STATUS, 0);
74
    if (status & (!INTR_DISPATCH_STATUS_BUSY))
74
    if (status & (!INTR_DISPATCH_STATUS_BUSY))
75
        panic("Interrupt Dispatch Status busy bit not set\n");
75
        panic("Interrupt Dispatch Status busy bit not set.");
76
 
76
 
77
    intrcv = asi_u64_read(ASI_INTR_RECEIVE, 0);
77
    intrcv = asi_u64_read(ASI_INTR_RECEIVE, 0);
78
#if defined (US)
78
#if defined (US)
79
    data0 = asi_u64_read(ASI_INTR_R, ASI_UDB_INTR_R_DATA_0);
79
    data0 = asi_u64_read(ASI_INTR_R, ASI_UDB_INTR_R_DATA_0);
80
#elif defined (US3)
80
#elif defined (US3)
Line 84... Line 84...
84
    irq_t *irq = irq_dispatch_and_lock(data0);
84
    irq_t *irq = irq_dispatch_and_lock(data0);
85
    if (irq) {
85
    if (irq) {
86
        /*
86
        /*
87
         * The IRQ handler was found.
87
         * The IRQ handler was found.
88
         */
88
         */
89
        irq->handler(irq, irq->arg);
89
        irq->handler(irq);
90
        /*
90
        /*
91
         * See if there is a clear-interrupt-routine and call it.
91
         * See if there is a clear-interrupt-routine and call it.
92
         */
92
         */
93
        if (irq->cir) {
93
        if (irq->cir) {
94
            irq->cir(irq->cir_arg, irq->inr);
94
            irq->cir(irq->cir_arg, irq->inr);