Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 1594 → Rev 1595

//kernel/trunk/arch/sparc64/include/interrupt.h
51,7 → 51,16
{
/* TODO */
}
static inline int istate_from_uspace(istate_t *istate)
{
/* TODO */
}
static inline __native istate_get_pc(istate_t *istate)
{
/* TODO */
}
 
 
extern void interrupt_register(int n, const char *name, iroutine f);
 
#endif
//kernel/trunk/arch/ia64/include/interrupt.h
113,6 → 113,17
istate->cr_ipsr.ri = 0; /* return to instruction slot #0 */
}
 
static inline __native istate_get_pc(istate_t *istate)
{
return istate->cr_iip;
}
#include <panic.h>
static inline int istate_from_uspace(istate_t *istate)
{
panic("TODO: istate_from_uspace not yet implemented");
return 0;
}
 
extern void *ivt;
 
extern void general_exception(__u64 vector, istate_t *istate);
//kernel/trunk/arch/ia64/src/interrupt.c
46,6 → 46,7
#include <ipc/sysipc.h>
#include <ipc/irq.h>
#include <ipc/ipc.h>
#include <interrupt.h>
 
 
#define VECTORS_64_BUNDLE 20
150,8 → 151,6
{
char *desc = "";
 
dump_interrupted_context(istate);
 
switch (istate->cr_isr.ge_code) {
case GE_ILLEGALOP:
desc = "Illegal Operation fault";
176,6 → 175,9
break;
}
 
fault_if_from_uspace(istate, "General Exception (%s)", desc);
 
dump_interrupted_context(istate);
panic("General Exception (%s)\n", desc);
}
 
186,6 → 188,7
#ifdef CONFIG_FPU_LAZY
scheduler_fpu_lazy_request();
#else
fault_if_from_uspace(istate, "Interruption: %#hx (%s)", (__u16) vector, vector_to_string(vector));
dump_interrupted_context(istate);
panic("Interruption: %#hx (%s)\n", (__u16) vector, vector_to_string(vector));
#endif
267,6 → 270,3
panic("not implemented\n");
/* TODO */
}
 
 
 
//kernel/trunk/arch/ppc32/include/exception.h
80,5 → 80,16
{
istate->pc = retaddr;
}
/** Return true if exception happened while in userspace */
#include <panic.h>
static inline int istate_from_uspace(istate_t *istate)
{
panic("istate_from_uspace not yet implemented");
return 0;
}
static inline __native istate_get_pc(istate_t *istate)
{
return istate->pc;
}
 
#endif
//kernel/trunk/arch/ppc32/src/interrupt.c
66,7 → 66,6
/* TODO */
}
 
#include <print.h>
/** Handler of externul interrupts */
void extint_handler(int n, istate_t *istate)
{
//kernel/trunk/arch/amd64/include/interrupt.h
86,10 → 86,20
__u64 stack[]; /* Additional data on stack */
};
 
/** Return true if exception happened while in userspace */
static inline int istate_from_uspace(istate_t *istate)
{
return !(istate->rip & 0x8000000000000000);
}
 
static inline void istate_set_retaddr(istate_t *istate, __address retaddr)
{
istate->rip = retaddr;
}
static inline __native istate_get_pc(istate_t *istate)
{
return istate->rip;
}
 
extern void (* disable_irqs_function)(__u16 irqmask);
extern void (* enable_irqs_function)(__u16 irqmask);
//kernel/trunk/arch/amd64/src/mm/page.c
183,6 → 183,8
access = PF_ACCESS_READ;
if (as_page_fault(page, access, istate) == AS_PF_FAULT) {
fault_if_from_uspace(istate, "Page fault: %#x", page);
 
print_info_errcode(n, istate);
printf("Page fault address: %llX\n", page);
panic("page fault\n");
//kernel/trunk/arch/amd64/src/interrupt.c
79,6 → 79,7
 
void null_interrupt(int n, istate_t *istate)
{
fault_if_from_uspace(istate, "unserviced interrupt: %d", n);
print_info_errcode(n, istate);
panic("unserviced interrupt\n");
}
104,6 → 105,7
io_perm_bitmap_install();
return;
}
fault_if_from_uspace(istate, "general protection fault");
}
 
print_info_errcode(n, istate);
112,6 → 114,7
 
void ss_fault(int n, istate_t *istate)
{
fault_if_from_uspace(istate, "stack fault");
print_info_errcode(n, istate);
panic("stack fault\n");
}
121,6 → 124,7
#ifdef CONFIG_FPU_LAZY
scheduler_fpu_lazy_request();
#else
fault_if_from_uspace(istate, "fpu fault");
panic("fpu fault");
#endif
}
//kernel/trunk/arch/ppc64/include/exception.h
80,5 → 80,16
{
istate->pc = retaddr;
}
/** Return true if exception happened while in userspace */
#include <panic.h>
static inline int istate_from_uspace(istate_t *istate)
{
panic("istate_from_uspace not yet implemented");
return 0;
}
static inline __native istate_get_pc(istate_t *istate)
{
return istate->pc;
}
 
#endif
//kernel/trunk/arch/mips32/include/exception.h
34,6 → 34,7
#endif
 
#include <typedefs.h>
#include <arch/cp0.h>
 
#define EXC_Int 0
#define EXC_Mod 1
98,6 → 99,16
istate->epc = retaddr;
}
 
/** Return true if exception happened while in userspace */
static inline int istate_from_uspace(istate_t *istate)
{
return istate->status & cp0_status_um_bit;
}
static inline __native istate_get_pc(istate_t *istate)
{
return istate->epc;
}
 
extern void exception(istate_t *istate);
extern void tlb_refill_entry(void);
extern void exception_entry(void);
//kernel/trunk/arch/mips32/include/arg.h
44,6 → 44,8
#define va_arg(ap, type) \
(((type *)((ap) = (va_list)( (sizeof(type) <= 4) ? ((__address)((ap) + 2*4 - 1) & (~3)) : ((__address)((ap) + 2*8 -1) & (~7)) )))[-1])
 
#define va_copy(dst,src) ((dst)=(src))
 
#define va_end(ap)
 
#endif
//kernel/trunk/arch/mips32/src/exception.c
78,6 → 78,8
 
static void unhandled_exception(int n, istate_t *istate)
{
fault_if_from_uspace(istate, "unhandled exception %s", exctable[n]);
print_regdump(istate);
panic("unhandled exception %s\n", exctable[n]);
}
119,8 → 121,10
{
if (cp0_cause_coperr(cp0_cause_read()) == fpu_cop_id)
scheduler_fpu_lazy_request();
else
else {
fault_if_from_uspace(istate, "unhandled Coprocessor Unusable Exception");
panic("unhandled Coprocessor Unusable Exception\n");
}
}
#endif
 
//kernel/trunk/arch/mips32/src/mm/tlb.c
39,6 → 39,7
#include <print.h>
#include <debug.h>
#include <align.h>
#include <interrupt.h>
 
static void tlb_refill_fail(istate_t *istate);
static void tlb_invalid_fail(istate_t *istate);
336,6 → 337,8
s = get_symtab_entry(istate->ra);
if (s)
sym2 = s;
 
fault_if_from_uspace(istate, "TLB Refill Exception on %P", cp0_badvaddr_read());
panic("%X: TLB Refill Exception at %X(%s<-%s)\n", cp0_badvaddr_read(), istate->epc, symbol, sym2);
}
 
347,6 → 350,7
char *s = get_symtab_entry(istate->epc);
if (s)
symbol = s;
fault_if_from_uspace(istate, "TLB Invalid Exception on %P", cp0_badvaddr_read());
panic("%X: TLB Invalid Exception at %X(%s)\n", cp0_badvaddr_read(), istate->epc, symbol);
}
 
357,6 → 361,7
char *s = get_symtab_entry(istate->epc);
if (s)
symbol = s;
fault_if_from_uspace(istate, "TLB Modified Exception on %P", cp0_badvaddr_read());
panic("%X: TLB Modified Exception at %X(%s)\n", cp0_badvaddr_read(), istate->epc, symbol);
}
 
//kernel/trunk/arch/ia32/include/interrupt.h
83,11 → 83,22
__u32 stack[];
};
 
/** Return true if exception happened while in userspace */
static inline int istate_from_uspace(istate_t *istate)
{
return !(istate->eip & 0x80000000);
}
 
static inline void istate_set_retaddr(istate_t *istate, __address retaddr)
{
istate->eip = retaddr;
}
 
static inline __native istate_get_pc(istate_t *istate)
{
return istate->eip;
}
 
extern void (* disable_irqs_function)(__u16 irqmask);
extern void (* enable_irqs_function)(__u16 irqmask);
extern void (* eoi_function)(void);
//kernel/trunk/arch/ia32/src/mm/page.c
103,6 → 103,8
access = PF_ACCESS_READ;
 
if (as_page_fault(page, access, istate) == AS_PF_FAULT) {
fault_if_from_uspace(istate, "Page fault: %#x", page);
 
PRINT_INFO_ERRCODE(istate);
printf("page fault address: %#x\n", page);
panic("page fault\n");
//kernel/trunk/arch/ia32/src/interrupt.c
79,6 → 79,8
 
void null_interrupt(int n, istate_t *istate)
{
fault_if_from_uspace(istate, "unserviced interrupt: %d", n);
 
PRINT_INFO_ERRCODE(istate);
panic("unserviced interrupt: %d\n", n);
}
104,6 → 106,7
io_perm_bitmap_install();
return;
}
fault_if_from_uspace(istate, "general protection fault");
}
 
PRINT_INFO_ERRCODE(istate);
112,6 → 115,8
 
void ss_fault(int n, istate_t *istate)
{
fault_if_from_uspace(istate, "stack fault");
 
PRINT_INFO_ERRCODE(istate);
panic("stack fault\n");
}
118,8 → 123,6
 
void simd_fp_exception(int n, istate_t *istate)
{
 
PRINT_INFO_ERRCODE(istate);
__u32 mxcsr;
asm
(
126,6 → 129,10
"stmxcsr %0;\n"
:"=m"(mxcsr)
);
fault_if_from_uspace(istate, "SIMD FP exception(19), MXCSR: %#zX",
(__native)mxcsr);
 
PRINT_INFO_ERRCODE(istate);
printf("MXCSR: %#zX\n",(__native)(mxcsr));
panic("SIMD FP exception(19)\n");
}
135,6 → 142,7
#ifdef CONFIG_FPU_LAZY
scheduler_fpu_lazy_request();
#else
fault_if_from_uspace(istate, "fpu fault");
panic("fpu fault");
#endif
}