Example #1
0
static void pht_refill_fail(uintptr_t badvaddr, istate_t *istate)
{
	fault_if_from_uspace(istate, "PHT Refill Exception on %p.",
	    (void *) badvaddr);
	panic_memtrap(istate, PF_ACCESS_UNKNOWN, badvaddr,
	    "PHT Refill Exception.");
}
Example #2
0
static void tlb_modified_fail(istate_t *istate)
{
	uintptr_t va = cp0_badvaddr_read();
	
	fault_if_from_uspace(istate, "TLB Modified Exception on %p.",
	    (void *) va);
	panic_memtrap(istate, PF_ACCESS_WRITE, va, "TLB Modified Exception.");
}
Example #3
0
static void tlb_invalid_fail(istate_t *istate)
{
	uintptr_t va = cp0_badvaddr_read();
	
	fault_if_from_uspace(istate, "TLB Invalid Exception on %p.",
	    (void *) va);
	panic_memtrap(istate, PF_ACCESS_UNKNOWN, va, "TLB Invalid Exception.");
}
Example #4
0
static void nm_fault(unsigned int n, istate_t *istate)
{
#ifdef CONFIG_FPU_LAZY
	scheduler_fpu_lazy_request();
#else
	fault_if_from_uspace(istate, "FPU fault.");
	panic("FPU fault.");
#endif
}
Example #5
0
static void cpuns_exception(unsigned int n, istate_t *istate)
{
	if (cp0_cause_coperr(cp0_cause_read()) == fpu_cop_id)
		scheduler_fpu_lazy_request();
	else {
		fault_if_from_uspace(istate,
		    "Unhandled Coprocessor Unusable Exception.");
		panic_badtrap(istate, n,
		    "Unhandled Coprocessor Unusable Exception.");
	}
}
Example #6
0
/** General Protection Fault.
 *
 */
static void gp_fault(unsigned int n, istate_t *istate)
{
	if (TASK) {
		irq_spinlock_lock(&TASK->lock, false);
		size_t ver = TASK->arch.iomapver;
		irq_spinlock_unlock(&TASK->lock, false);
		
		if (CPU->arch.iomapver_copy != ver) {
			/*
			 * This fault can be caused by an early access
			 * to I/O port because of an out-dated
			 * I/O Permission bitmap installed on CPU.
			 * Install the fresh copy and restart
			 * the instruction.
			 */
			io_perm_bitmap_install();
			return;
		}
		fault_if_from_uspace(istate, "General protection fault.");
	}
	panic_badtrap(istate, n, "General protection fault.");
}
Example #7
0
/** Handle syscall userspace call */
static void syscall_exception(unsigned int n, istate_t *istate)
{
	fault_if_from_uspace(istate, "Syscall is handled through shortcut.");
}
Example #8
0
static void unhandled_exception(unsigned int n, istate_t *istate)
{
	fault_if_from_uspace(istate, "Unhandled exception %s.", exctable[n]);
	panic_badtrap(istate, n, "Unhandled exception %s.", exctable[n]);
}
Example #9
0
static void ss_fault(unsigned int n, istate_t *istate)
{
	fault_if_from_uspace(istate, "Stack fault.");
	panic_badtrap(istate, n, "Stack fault.");
}
Example #10
0
static void de_fault(unsigned int n, istate_t *istate)
{
	fault_if_from_uspace(istate, "Divide error.");
	panic_badtrap(istate, n, "Divide error.");
}
Example #11
0
static void null_interrupt(unsigned int n, istate_t *istate)
{
	fault_if_from_uspace(istate, "Unserviced interrupt: %u.", n);
	panic_badtrap(istate, n, "Unserviced interrupt.");
}