Subversion Repositories HelenOS

Rev

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

Rev 3788 Rev 3790
Line 86... Line 86...
86
static void trap_virtual_eoi(void)
86
static void trap_virtual_eoi(void)
87
{
87
{
88
    if (eoi_function)
88
    if (eoi_function)
89
        eoi_function();
89
        eoi_function();
90
    else
90
    else
91
        panic("no eoi_function\n");
91
        panic("No eoi_function.");
92
 
92
 
93
}
93
}
94
 
94
 
95
static void null_interrupt(int n, istate_t *istate)
95
static void null_interrupt(int n, istate_t *istate)
96
{
96
{
97
    fault_if_from_uspace(istate, "Unserviced interrupt: %d", n);
97
    fault_if_from_uspace(istate, "Unserviced interrupt: %d.", n);
98
 
98
 
99
    decode_istate(istate);
99
    decode_istate(istate);
100
    panic("Unserviced interrupt: %d\n", n);
100
    panic("Unserviced interrupt: %d.", n);
101
}
101
}
102
 
102
 
103
/** General Protection Fault. */
103
/** General Protection Fault. */
104
static void gp_fault(int n, istate_t *istate)
104
static void gp_fault(int n, istate_t *istate)
105
{
105
{
Line 119... Line 119...
119
             * the instruction.
119
             * the instruction.
120
             */
120
             */
121
            io_perm_bitmap_install();
121
            io_perm_bitmap_install();
122
            return;
122
            return;
123
        }
123
        }
124
        fault_if_from_uspace(istate, "General protection fault");
124
        fault_if_from_uspace(istate, "General protection fault.");
125
    }
125
    }
126
 
126
 
127
    decode_istate(istate);
127
    decode_istate(istate);
128
    panic("General protection fault\n");
128
    panic("General protection fault.");
129
}
129
}
130
 
130
 
131
static void ss_fault(int n, istate_t *istate)
131
static void ss_fault(int n, istate_t *istate)
132
{
132
{
133
    fault_if_from_uspace(istate, "Stack fault");
133
    fault_if_from_uspace(istate, "Stack fault.");
134
 
134
 
135
    decode_istate(istate);
135
    decode_istate(istate);
136
    panic("Stack fault\n");
136
    panic("Stack fault.");
137
}
137
}
138
 
138
 
139
static void simd_fp_exception(int n, istate_t *istate)
139
static void simd_fp_exception(int n, istate_t *istate)
140
{
140
{
141
    uint32_t mxcsr;
141
    uint32_t mxcsr;
142
    asm
142
    asm
143
    (
143
    (
144
        "stmxcsr %0;\n"
144
        "stmxcsr %0;\n"
145
        :"=m"(mxcsr)
145
        :"=m"(mxcsr)
146
    );
146
    );
147
    fault_if_from_uspace(istate, "SIMD FP exception(19), MXCSR: %#zx",
147
    fault_if_from_uspace(istate, "SIMD FP exception(19), MXCSR: %#zx.",
148
                 (unative_t)mxcsr);
148
                 (unative_t)mxcsr);
149
 
149
 
150
    decode_istate(istate);
150
    decode_istate(istate);
151
    printf("MXCSR: %#zx\n",(unative_t)(mxcsr));
151
    printf("MXCSR: %#zx\n",(unative_t)(mxcsr));
152
    panic("SIMD FP exception(19)\n");
152
    panic("SIMD FP exception(19).");
153
}
153
}
154
 
154
 
155
static void nm_fault(int n, istate_t *istate)
155
static void nm_fault(int n, istate_t *istate)
156
{
156
{
157
#ifdef CONFIG_FPU_LAZY     
157
#ifdef CONFIG_FPU_LAZY     
158
    scheduler_fpu_lazy_request();
158
    scheduler_fpu_lazy_request();
159
#else
159
#else
160
    fault_if_from_uspace(istate, "FPU fault");
160
    fault_if_from_uspace(istate, "FPU fault.");
161
    panic("FPU fault");
161
    panic("FPU fault.");
162
#endif
162
#endif
163
}
163
}
164
 
164
 
165
#ifdef CONFIG_SMP
165
#ifdef CONFIG_SMP
166
static void tlb_shootdown_ipi(int n, istate_t *istate)
166
static void tlb_shootdown_ipi(int n, istate_t *istate)
Line 231... Line 231...
231
void trap_virtual_enable_irqs(uint16_t irqmask)
231
void trap_virtual_enable_irqs(uint16_t irqmask)
232
{
232
{
233
    if (enable_irqs_function)
233
    if (enable_irqs_function)
234
        enable_irqs_function(irqmask);
234
        enable_irqs_function(irqmask);
235
    else
235
    else
236
        panic("no enable_irqs_function\n");
236
        panic("No enable_irqs_function.");
237
}
237
}
238
 
238
 
239
void trap_virtual_disable_irqs(uint16_t irqmask)
239
void trap_virtual_disable_irqs(uint16_t irqmask)
240
{
240
{
241
    if (disable_irqs_function)
241
    if (disable_irqs_function)
242
        disable_irqs_function(irqmask);
242
        disable_irqs_function(irqmask);
243
    else
243
    else
244
        panic("no disable_irqs_function\n");
244
        panic("No disable_irqs_function.");
245
}
245
}
246
 
246
 
247
/** @}
247
/** @}
248
 */
248
 */