aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcl349@arcadians.cl.cam.ac.uk <cl349@arcadians.cl.cam.ac.uk>2005-02-11 16:28:22 +0000
committercl349@arcadians.cl.cam.ac.uk <cl349@arcadians.cl.cam.ac.uk>2005-02-11 16:28:22 +0000
commita20f62e8f83830438cd81cef224652c86224ed50 (patch)
treedf0682a28f4a85e2fbca2778219071f6b4b08854
parent4db4e4f09f85c3905b01c37ad0dc4f1d59ffe2bb (diff)
downloadxen-a20f62e8f83830438cd81cef224652c86224ed50.tar.gz
xen-a20f62e8f83830438cd81cef224652c86224ed50.tar.bz2
xen-a20f62e8f83830438cd81cef224652c86224ed50.zip
bitkeeper revision 1.1159.258.2 (420cdd26biP1GgUIcVSoyZGOZjAu2A)
Pass pointer to register set to set_pre_exception_table instead of eip. Signed-off-by: cl349@cl.cam.ac.uk
-rw-r--r--xen/arch/x86/extable.c3
-rw-r--r--xen/arch/x86/x86_32/entry.S2
2 files changed, 3 insertions, 2 deletions
diff --git a/xen/arch/x86/extable.c b/xen/arch/x86/extable.c
index d3292027e0..bb70a3842b 100644
--- a/xen/arch/x86/extable.c
+++ b/xen/arch/x86/extable.c
@@ -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);
diff --git a/xen/arch/x86/x86_32/entry.S b/xen/arch/x86/x86_32/entry.S
index 1afeded9c9..aaf6caccef 100644
--- a/xen/arch/x86/x86_32/entry.S
+++ b/xen/arch/x86/x86_32/entry.S
@@ -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?