Index: xen-4.0.1-testing/xen/arch/x86/x86_32/entry.S =================================================================== --- xen-4.0.1-testing.orig/xen/arch/x86/x86_32/entry.S +++ xen-4.0.1-testing/xen/arch/x86/x86_32/entry.S @@ -403,21 +403,33 @@ ring1: /* obtain ss/esp from oldss/olde movl %eax,UREGS_eip+4(%esp) ret .section __ex_table,"a" - .long .Lft6,domain_crash_synchronous , .Lft7,domain_crash_synchronous - .long .Lft8,domain_crash_synchronous , .Lft9,domain_crash_synchronous - .long .Lft10,domain_crash_synchronous , .Lft11,domain_crash_synchronous - .long .Lft12,domain_crash_synchronous , .Lft13,domain_crash_synchronous - .long .Lft14,domain_crash_synchronous , .Lft15,domain_crash_synchronous - .long .Lft16,domain_crash_synchronous , .Lft17,domain_crash_synchronous - .long .Lft18,domain_crash_synchronous , .Lft19,domain_crash_synchronous - .long .Lft20,domain_crash_synchronous , .Lft21,domain_crash_synchronous - .long .Lft22,domain_crash_synchronous , .Lft23,domain_crash_synchronous - .long .Lft24,domain_crash_synchronous , .Lft25,domain_crash_synchronous + .long .Lft6,domain_crash_synchronous , .Lft7,domain_crash_page_fault + .long .Lft8,domain_crash_page_fault_4 , .Lft9,domain_crash_page_fault_8 + .long .Lft10,domain_crash_page_fault_12, .Lft11,domain_crash_page_fault + .long .Lft12,domain_crash_page_fault_4 , .Lft13,domain_crash_synchronous + .long .Lft14,domain_crash_page_fault , .Lft15,domain_crash_page_fault_4 + .long .Lft16,domain_crash_page_fault_8 , .Lft17,domain_crash_page_fault + .long .Lft18,domain_crash_page_fault , .Lft19,domain_crash_page_fault_4 + .long .Lft20,domain_crash_page_fault_8 , .Lft21,domain_crash_page_fault_12 + .long .Lft22,domain_crash_page_fault , .Lft23,domain_crash_page_fault_4 + .long .Lft24,domain_crash_page_fault_8 , .Lft25,domain_crash_page_fault_12 .previous +.section .rodata,"a" domain_crash_synchronous_string: .asciz "domain_crash_sync called from entry.S (%lx)\n" +.previous +domain_crash_page_fault_12: + addl $4,%esi +domain_crash_page_fault_8: + addl $4,%esi +domain_crash_page_fault_4: + addl $4,%esi +domain_crash_page_fault: + pushl %esi + call show_page_walk + addl $4,%esp domain_crash_synchronous: pushl $domain_crash_synchronous_string call printk Index: xen-4.0.1-testing/xen/arch/x86/x86_64/entry.S =================================================================== --- xen-4.0.1-testing.orig/xen/arch/x86/x86_64/entry.S +++ xen-4.0.1-testing/xen/arch/x86/x86_64/entry.S @@ -421,17 +421,30 @@ create_bounce_frame: movq %rax,UREGS_rip+8(%rsp) ret .section __ex_table,"a" - .quad .Lft2,domain_crash_synchronous , .Lft3,domain_crash_synchronous - .quad .Lft4,domain_crash_synchronous , .Lft5,domain_crash_synchronous - .quad .Lft6,domain_crash_synchronous , .Lft7,domain_crash_synchronous - .quad .Lft8,domain_crash_synchronous , .Lft9,domain_crash_synchronous - .quad .Lft10,domain_crash_synchronous , .Lft11,domain_crash_synchronous - .quad .Lft12,domain_crash_synchronous , .Lft13,domain_crash_synchronous + .quad .Lft2,domain_crash_page_fault_32, .Lft3,domain_crash_page_fault_24 + .quad .Lft4,domain_crash_page_fault_8 , .Lft5,domain_crash_page_fault_16 + .quad .Lft6,domain_crash_page_fault , .Lft7,domain_crash_page_fault + .quad .Lft8,domain_crash_page_fault_24, .Lft9,domain_crash_page_fault_16 + .quad .Lft10,domain_crash_page_fault_8 , .Lft11,domain_crash_page_fault + .quad .Lft12,domain_crash_page_fault_8 , .Lft13,domain_crash_page_fault .previous +.section .rodata,"a" domain_crash_synchronous_string: .asciz "domain_crash_sync called from entry.S\n" +.previous +domain_crash_page_fault_32: + addq $8,%rsi +domain_crash_page_fault_24: + addq $8,%rsi +domain_crash_page_fault_16: + addq $8,%rsi +domain_crash_page_fault_8: + addq $8,%rsi +domain_crash_page_fault: + movq %rsi,%rdi + call show_page_walk ENTRY(domain_crash_synchronous) # Get out of the guest-save area of the stack. GET_GUEST_REGS(%rax)