Skip to contentSkip to conversation

x86_64: Cleanup root IRQ trampolines, align with i386

PATCH In review Jan Kiszka 1 participant 1 message Dec 26, 2007

lore
Share & tools
lore

Jan Kiszka

author
#0 lore raw

PATCH 4/4 x86_64: Cleanup root IRQ trampolines, align with i386

This patch reduces the xirq_handler trampoline to the required minimum and refactors call_root_virq_handler in the same manner. At this chance, it reorders the execution of irq_exit in the virq path in the same way as i386 does. I bet the current order was bogus, given that it first ran the Linux IRQ epilogue and _then_ called irq_exit...

Jan

---
 arch/x86_64/kernel/entry.S |   23 ------------------
 include/asm-x86_64/ipipe.h |   55 ++++++++++++++++++++++++++++++---------------
 2 files changed, 38 insertions(+), 40 deletions(-)
arch/x86_64/kernel/entry.S +1 -22
Index: linux-2.6.23.12-xeno_64/arch/x86_64/kernel/entry.S
===================================================================
@@ -580,28 +580,8 @@ END(stub_rt_sigreturn)
 #endif
 	.endm
 
-#ifdef CONFIG_IPIPE
-
-	/* %rdi=virq number, %rsi=cookie, %rdx=handler */
-ENTRY(__ipipe_root_virq_thunk)
-	movq %rsp, %rax
-	pushq $0
-	pushq %rax
-	pushfq
-	pushq $__KERNEL_CS
-	pushq $1f
-	pushq $-1
-	XCPT_FRAME
-	SAVE_ARGS
-	call *%rdx
-	jmp exit_intr
-	CFI_ENDPROC
-1:
-	cli
-        ret
-END(__ipipe_root_virq_thunk)
-	
 ENTRY(common_interrupt)
+#ifdef CONFIG_IPIPE
 	XCPT_FRAME
 	interrupt __ipipe_handle_irq
 	testl %eax, %eax
@@ -615,7 +595,6 @@ ENTRY(common_interrupt)
 	swapgs
 	jmp restore_args
 #else /* !CONFIG_IPIPE */
-ENTRY(common_interrupt)
 	XCPT_FRAME
 	interrupt do_IRQ
 #endif /* !CONFIG_IPIPE */	
include/asm-x86_64/ipipe.h +37 -18

79 lines not on this page · raw message