52 panic(
"Unhandled exception at %04x:%p\n"
53 "Vec %u %pe %%cr2 %p\n",
54 regs->cs,
_p(regs->ip), regs->entry_vector,
_p(exc),
_p(cr2));
57 panic(
"Unhandled exception at %04x:%p\n"
59 regs->cs,
_p(regs->ip), regs->entry_vector,
_p(exc));
70 panic(
"Unhandled syscall\n");
75 panic(
"Unhandled sysenter\n");
80 panic(
"Unhandled evtchn upcall\n");
static unsigned long read_cr2(void)
const struct extable_entry * search_extable(unsigned long addr)
Search the exception table to find the entry associated with a specific faulting address.
Helper routines for decoding x86 state.
unsigned int exinfo_t
Packed exception and error code information.
void panic(const char *fmt,...)
#define IS_DEFINED(x)
Evalute whether the CONFIG_ token x is defined.
#define _p(v)
Express an abitrary integer v as void *.
bool(* handler)(struct cpu_regs *regs, const struct extable_entry *ex)
Optional custom handler.
unsigned long fixup
Fixup address.
unsigned long exec_user_ss
unsigned long exec_user_cs
unsigned long exec_user_efl_and_mask
void do_exception(struct cpu_regs *regs)
void do_syscall(struct cpu_regs *regs)
May be implemented by a guest to handle SYSCALL invocations.
void do_evtchn(struct cpu_regs *regs)
May be implemented by a guest to handle Event Channel upcalls.
void do_sysenter(struct cpu_regs *regs)
May be implemented by a guest to handle SYSENTER invocations.
unsigned long exec_user_efl_or_mask
bool do_unhandled_exception(struct cpu_regs *regs)
May be implemented by a guest to provide custom exception handling.