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");
bool do_unhandled_exception(struct cpu_regs *regs)
May be implemented by a guest to provide custom exception handling.
unsigned int exinfo_t
Packed exception and error code information.
unsigned long fixup
Fixup address.
void do_syscall(struct cpu_regs *regs)
May be implemented by a guest to handle SYSCALL invocations.
#define IS_DEFINED(x)
Evalute whether the CONFIG_ token x is defined.
bool(* handler)(struct cpu_regs *regs, const struct extable_entry *ex)
Optional custom handler.
void panic(const char *fmt,...)
Helper routines for decoding x86 state.
unsigned long exec_user_efl_or_mask
static unsigned long read_cr2(void)
unsigned long exec_user_cs
const struct extable_entry * search_extable(unsigned long addr)
Search the exception table to find the entry associated with a specific faulting address.
unsigned long exec_user_efl_and_mask
void do_sysenter(struct cpu_regs *regs)
May be implemented by a guest to handle SYSENTER invocations.
#define _p(v)
Express an abitrary integer v as void *.
unsigned long exec_user_ss
void do_exception(struct cpu_regs *regs)
void do_evtchn(struct cpu_regs *regs)
May be implemented by a guest to handle Event Channel upcalls.