aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/x86_64/entry.S
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@novell.com>2011-07-01 20:43:55 +0100
committerJan Beulich <jbeulich@novell.com>2011-07-01 20:43:55 +0100
commit442ecc90354a7a094ee7a9ad21ad8faaa40ce0c5 (patch)
tree97f23d14c06f85a151a4eab655cbe234253ae2c6 /xen/arch/x86/x86_64/entry.S
parent9e71918d4f039e5e4806493bd3310c8ceecedd08 (diff)
downloadxen-442ecc90354a7a094ee7a9ad21ad8faaa40ce0c5.tar.gz
xen-442ecc90354a7a094ee7a9ad21ad8faaa40ce0c5.tar.bz2
xen-442ecc90354a7a094ee7a9ad21ad8faaa40ce0c5.zip
x86: streamline page fault path
#PF is, in all "normal" usage models, the only potentially high frequency (and hence performance sensitive) exception. Thus make it the fall-through case into handle_exception (rather than divide_error for x86-32 and not having one at all for x86-64). Signed-off-by: Jan Beulich <jbeulich@novell.com>
Diffstat (limited to 'xen/arch/x86/x86_64/entry.S')
-rw-r--r--xen/arch/x86/x86_64/entry.S10
1 files changed, 4 insertions, 6 deletions
diff --git a/xen/arch/x86/x86_64/entry.S b/xen/arch/x86/x86_64/entry.S
index 4d49c4331c..fa51287a87 100644
--- a/xen/arch/x86/x86_64/entry.S
+++ b/xen/arch/x86/x86_64/entry.S
@@ -461,9 +461,11 @@ ENTRY(ret_from_intr)
jz test_all_events
jmp compat_test_all_events
- ALIGN
+ENTRY(page_fault)
+ movl $TRAP_page_fault,4(%rsp)
/* No special register assumptions. */
-ENTRY(handle_exception)
+ .globl handle_exception
+handle_exception:
SAVE_ALL
handle_exception_saved:
testb $X86_EFLAGS_IF>>8,UREGS_eflags+1(%rsp)
@@ -585,10 +587,6 @@ ENTRY(alignment_check)
movl $TRAP_alignment_check,4(%rsp)
jmp handle_exception
-ENTRY(page_fault)
- movl $TRAP_page_fault,4(%rsp)
- jmp handle_exception
-
ENTRY(spurious_interrupt_bug)
pushq $0
movl $TRAP_spurious_int,4(%rsp)