Subversion Repositories HelenOS

Rev

Rev 3655 | Rev 3790 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3655 Rev 3672
Line 65... Line 65...
65
 * @param n Ignored.
65
 * @param n Ignored.
66
 * @param istate Ignored.
66
 * @param istate Ignored.
67
 */
67
 */
68
void interrupt(int n, istate_t *istate)
68
void interrupt(int n, istate_t *istate)
69
{
69
{
-
 
70
    uint64_t status;
70
    uint64_t intrcv;
71
    uint64_t intrcv;
71
    uint64_t data0;
72
    uint64_t data0;
-
 
73
    status = asi_u64_read(ASI_INTR_DISPATCH_STATUS, 0);
-
 
74
    if (status & (!INTR_DISPATCH_STATUS_BUSY))
-
 
75
        panic("Interrupt Dispatch Status busy bit not set\n");
72
 
76
 
73
    intrcv = asi_u64_read(ASI_INTR_RECEIVE, 0);
77
    intrcv = asi_u64_read(ASI_INTR_RECEIVE, 0);
-
 
78
#if defined (US)
74
    data0 = asi_u64_read(ASI_UDB_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)
-
 
81
    data0 = asi_u64_read(ASI_INTR_R, VA_INTR_R_DATA_0);
-
 
82
#endif
75
 
83
 
76
    irq_t *irq = irq_dispatch_and_lock(data0);
84
    irq_t *irq = irq_dispatch_and_lock(data0);
77
    if (irq) {
85
    if (irq) {
78
        /*
86
        /*
79
         * The IRQ handler was found.
87
         * The IRQ handler was found.