[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v6 02/10] x86: move common_interrupt to entry.S
This patch moves label common_interrupt from asm_defns.h to entry.S Signed-off-by: Feng Wu <feng.wu@xxxxxxxxx> Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx> Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> --- xen/arch/x86/i8259.c | 2 -- xen/arch/x86/x86_64/entry.S | 6 +++++ xen/include/asm-x86/x86_64/asm_defns.h | 49 ++++++++++++++-------------------- 3 files changed, 26 insertions(+), 31 deletions(-) diff --git a/xen/arch/x86/i8259.c b/xen/arch/x86/i8259.c index 6fdcce8..9fec490 100644 --- a/xen/arch/x86/i8259.c +++ b/xen/arch/x86/i8259.c @@ -35,8 +35,6 @@ __asm__(".section .text"); -BUILD_COMMON_IRQ() - #define IRQ_NAME(nr) VEC##nr##_interrupt #define BI(nr) \ diff --git a/xen/arch/x86/x86_64/entry.S b/xen/arch/x86/x86_64/entry.S index 3ea4683..1c81852 100644 --- a/xen/arch/x86/x86_64/entry.S +++ b/xen/arch/x86/x86_64/entry.S @@ -465,6 +465,12 @@ ENTRY(dom_crash_sync_extable) xorl %edi,%edi jmp asm_domain_crash_synchronous /* Does not return */ +ENTRY(common_interrupt) + SAVE_ALL + movq %rsp,%rdi + callq do_IRQ + jmp ret_from_intr + /* No special register assumptions. */ ENTRY(ret_from_intr) GET_CURRENT(%rbx) diff --git a/xen/include/asm-x86/x86_64/asm_defns.h b/xen/include/asm-x86/x86_64/asm_defns.h index bf63ac1..aedb2da 100644 --- a/xen/include/asm-x86/x86_64/asm_defns.h +++ b/xen/include/asm-x86/x86_64/asm_defns.h @@ -51,27 +51,27 @@ r__->entry_vector |= TRAP_regs_dirty; \ }) -#define SAVE_ALL \ - addq $-(UREGS_error_code-UREGS_r15), %rsp; \ - cld; \ - movq %rdi,UREGS_rdi(%rsp); \ - movq %rsi,UREGS_rsi(%rsp); \ - movq %rdx,UREGS_rdx(%rsp); \ - movq %rcx,UREGS_rcx(%rsp); \ - movq %rax,UREGS_rax(%rsp); \ - movq %r8,UREGS_r8(%rsp); \ - movq %r9,UREGS_r9(%rsp); \ - movq %r10,UREGS_r10(%rsp); \ - movq %r11,UREGS_r11(%rsp); \ - movq %rbx,UREGS_rbx(%rsp); \ - movq %rbp,UREGS_rbp(%rsp); \ - SETUP_EXCEPTION_FRAME_POINTER(UREGS_rbp); \ - movq %r12,UREGS_r12(%rsp); \ - movq %r13,UREGS_r13(%rsp); \ - movq %r14,UREGS_r14(%rsp); \ - movq %r15,UREGS_r15(%rsp); \ - #ifdef __ASSEMBLY__ +.macro SAVE_ALL + addq $-(UREGS_error_code-UREGS_r15), %rsp + cld + movq %rdi,UREGS_rdi(%rsp) + movq %rsi,UREGS_rsi(%rsp) + movq %rdx,UREGS_rdx(%rsp) + movq %rcx,UREGS_rcx(%rsp) + movq %rax,UREGS_rax(%rsp) + movq %r8,UREGS_r8(%rsp) + movq %r9,UREGS_r9(%rsp) + movq %r10,UREGS_r10(%rsp) + movq %r11,UREGS_r11(%rsp) + movq %rbx,UREGS_rbx(%rsp) + movq %rbp,UREGS_rbp(%rsp) + SETUP_EXCEPTION_FRAME_POINTER(UREGS_rbp) + movq %r12,UREGS_r12(%rsp) + movq %r13,UREGS_r13(%rsp) + movq %r14,UREGS_r14(%rsp) + movq %r15,UREGS_r15(%rsp) +.endm /* * Save all registers not preserved by C code or used in entry/exit code. Mark @@ -208,15 +208,6 @@ #define REX64_PREFIX "rex64/" #endif -#define BUILD_COMMON_IRQ() \ -__asm__( \ - "\n" __ALIGN_STR"\n" \ - "common_interrupt:\n\t" \ - STR(SAVE_ALL) "\n\t" \ - "movq %rsp,%rdi\n\t" \ - "callq " STR(do_IRQ) "\n\t" \ - "jmp ret_from_intr\n"); - #define BUILD_IRQ(nr) \ "pushq $0\n\t" \ "movl $"#nr",4(%rsp)\n\t" \ -- 1.8.3.1 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |