diff options
author | Jan Beulich <jbeulich@novell.com> | 2011-07-01 20:43:55 +0100 |
---|---|---|
committer | Jan Beulich <jbeulich@novell.com> | 2011-07-01 20:43:55 +0100 |
commit | 442ecc90354a7a094ee7a9ad21ad8faaa40ce0c5 (patch) | |
tree | 97f23d14c06f85a151a4eab655cbe234253ae2c6 /xen/arch/x86/x86_64/entry.S | |
parent | 9e71918d4f039e5e4806493bd3310c8ceecedd08 (diff) | |
download | xen-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.S | 10 |
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) |