bitkeeper revision 1.1159.258.2 (420cdd26biP1GgUIcVSoyZGOZjAu2A)
authorcl349@arcadians.cl.cam.ac.uk <cl349@arcadians.cl.cam.ac.uk>
Fri, 11 Feb 2005 16:28:22 +0000 (16:28 +0000)
committercl349@arcadians.cl.cam.ac.uk <cl349@arcadians.cl.cam.ac.uk>
Fri, 11 Feb 2005 16:28:22 +0000 (16:28 +0000)
Pass pointer to register set to set_pre_exception_table instead of eip.

Signed-off-by: cl349@cl.cam.ac.uk
xen/arch/x86/extable.c
xen/arch/x86/x86_32/entry.S

index d3292027e0ffb391b367c2b6638fb6ef6d93c202..bb70a3842b3ff5a0db17896249f0c921773f4a2e 100644 (file)
@@ -63,8 +63,9 @@ search_exception_table(unsigned long addr)
 }
 
 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);
index 1afeded9c9237b1e36a6dde3958d183a9f348abe..aaf6caccef90920574f12c8da0000ee82160f3c0 100644 (file)
@@ -379,7 +379,7 @@ exception_with_ints_disabled:
         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?