|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v5 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 |