Subversion Repositories HelenOS

Rev

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

Rev 1870 Rev 1875
Line 40... Line 40...
40
#include <arch/types.h>
40
#include <arch/types.h>
41
#include <debug.h>
41
#include <debug.h>
42
#include <ipc/sysipc.h>
42
#include <ipc/sysipc.h>
43
#include <arch/asm.h>
43
#include <arch/asm.h>
44
#include <arch/barrier.h>
44
#include <arch/barrier.h>
45
 
-
 
-
 
45
#include <print.h>
46
#include <genarch/kbd/z8530.h>
46
#include <genarch/kbd/z8530.h>
47
 
47
 
48
/** Register Interrupt Level Handler.
48
/** Register Interrupt Level Handler.
49
 *
49
 *
50
 * @param n Interrupt Level (1 - 15).
50
 * @param n Interrupt Level (1 - 15).
Line 59... Line 59...
59
}
59
}
60
 
60
 
61
/* Reregister irq to be IPC-ready */
61
/* Reregister irq to be IPC-ready */
62
void irq_ipc_bind_arch(unative_t irq)
62
void irq_ipc_bind_arch(unative_t irq)
63
{
63
{
64
    /* TODO */
64
#ifdef CONFIG_Z8530
-
 
65
    z8530_belongs_to_kernel = false;
-
 
66
#endif
65
}
67
}
66
 
68
 
67
void interrupt(int n, istate_t *istate)
69
void interrupt(int n, istate_t *istate)
68
{
70
{
69
    uint64_t intrcv;
71
    uint64_t intrcv;
Line 80... Line 82...
80
         * Since we don't have enough information about the FHC and
82
         * Since we don't have enough information about the FHC and
81
         * because the interrupt looks like level sensitive,
83
         * because the interrupt looks like level sensitive,
82
         * we cannot handle it by scheduling one of the level
84
         * we cannot handle it by scheduling one of the level
83
         * interrupt traps. Call the interrupt handler directly.
85
         * interrupt traps. Call the interrupt handler directly.
84
         */
86
         */
-
 
87
 
-
 
88
        if (z8530_belongs_to_kernel)
-
 
89
            z8530_interrupt();
-
 
90
        else
-
 
91
            ipc_irq_send_notif(0);
85
        fhc_uart_reset();
92
        fhc_uart_reset();
86
        z8530_interrupt();
-
 
87
        break;
93
        break;
-
 
94
 
88
#endif
95
#endif
89
    }
96
    }
90
 
97
 
91
    membar();
98
    membar();
92
    asi_u64_write(ASI_INTR_RECEIVE, 0, 0);
99
    asi_u64_write(ASI_INTR_RECEIVE, 0, 0);