Pass pointer to register set to set_pre_exception_table instead of eip.
Signed-off-by: cl349@cl.cam.ac.uk
}
unsigned long
-search_pre_exception_table(unsigned long addr)
+search_pre_exception_table(struct xen_regs *regs)
{
+ unsigned long addr = (unsigned long)regs->eip;
unsigned long fixup = search_one_table(
__start___pre_ex_table, __stop___pre_ex_table-1, addr);
DPRINTK("Pre-exception: %08lx -> %08lx\n", addr, fixup);
testl $(3|X86_EFLAGS_VM),%eax # interrupts disabled outside Xen?
jnz 1b # it really does happen!
# (e.g., DOM0 X server)
- pushl XREGS_eip(%esp)
+ pushl %esp
call search_pre_exception_table
addl $4,%esp
testl %eax,%eax # no fixup code for faulting EIP?