Subversion Repositories HelenOS-historic

Rev

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

Rev 1735 Rev 1780
Line 54... Line 54...
54
#include <ipc/irq.h>
54
#include <ipc/irq.h>
55
 
55
 
56
void print_info_errcode(int n, istate_t *istate)
56
void print_info_errcode(int n, istate_t *istate)
57
{
57
{
58
    char *symbol;
58
    char *symbol;
59
/*  __u64 *x = &istate->stack[0]; */
59
/*  uint64_t *x = &istate->stack[0]; */
60
 
60
 
61
    if (!(symbol=get_symtab_entry(istate->rip)))
61
    if (!(symbol=get_symtab_entry(istate->rip)))
62
        symbol = "";
62
        symbol = "";
63
 
63
 
64
    printf("-----EXCEPTION(%d) OCCURED----- ( %s )\n",n, __FUNCTION__);
64
    printf("-----EXCEPTION(%d) OCCURED----- ( %s )\n",n, __FUNCTION__);
Line 77... Line 77...
77
 
77
 
78
/*
78
/*
79
 * Interrupt and exception dispatching.
79
 * Interrupt and exception dispatching.
80
 */
80
 */
81
 
81
 
82
void (* disable_irqs_function)(__u16 irqmask) = NULL;
82
void (* disable_irqs_function)(uint16_t irqmask) = NULL;
83
void (* enable_irqs_function)(__u16 irqmask) = NULL;
83
void (* enable_irqs_function)(uint16_t irqmask) = NULL;
84
void (* eoi_function)(void) = NULL;
84
void (* eoi_function)(void) = NULL;
85
 
85
 
86
void null_interrupt(int n, istate_t *istate)
86
void null_interrupt(int n, istate_t *istate)
87
{
87
{
88
    fault_if_from_uspace(istate, "unserviced interrupt: %d", n);
88
    fault_if_from_uspace(istate, "unserviced interrupt: %d", n);
Line 139... Line 139...
139
{
139
{
140
    trap_virtual_eoi();
140
    trap_virtual_eoi();
141
    tlb_shootdown_ipi_recv();
141
    tlb_shootdown_ipi_recv();
142
}
142
}
143
 
143
 
144
void trap_virtual_enable_irqs(__u16 irqmask)
144
void trap_virtual_enable_irqs(uint16_t irqmask)
145
{
145
{
146
    if (enable_irqs_function)
146
    if (enable_irqs_function)
147
        enable_irqs_function(irqmask);
147
        enable_irqs_function(irqmask);
148
    else
148
    else
149
        panic("no enable_irqs_function\n");
149
        panic("no enable_irqs_function\n");
150
}
150
}
151
 
151
 
152
void trap_virtual_disable_irqs(__u16 irqmask)
152
void trap_virtual_disable_irqs(uint16_t irqmask)
153
{
153
{
154
    if (disable_irqs_function)
154
    if (disable_irqs_function)
155
        disable_irqs_function(irqmask);
155
        disable_irqs_function(irqmask);
156
    else
156
    else
157
        panic("no disable_irqs_function\n");
157
        panic("no disable_irqs_function\n");
Line 172... Line 172...
172
    trap_virtual_eoi();
172
    trap_virtual_eoi();
173
}
173
}
174
 
174
 
175
 
175
 
176
/* Reregister irq to be IPC-ready */
176
/* Reregister irq to be IPC-ready */
177
void irq_ipc_bind_arch(__native irq)
177
void irq_ipc_bind_arch(unative_t irq)
178
{
178
{
179
    if (irq == IRQ_CLK)
179
    if (irq == IRQ_CLK)
180
        return;
180
        return;
181
    exc_register(IVT_IRQBASE+irq, "ipc_int", ipc_int);
181
    exc_register(IVT_IRQBASE+irq, "ipc_int", ipc_int);
182
    trap_virtual_enable_irqs(1 << irq);
182
    trap_virtual_enable_irqs(1 << irq);