|
@@ -608,14 +608,6 @@ ENTRY(interrupt_entry)
|
|
|
ret
|
|
|
END(interrupt_entry)
|
|
|
|
|
|
-/* 0(%rsp): ~(interrupt number) */
|
|
|
- .macro interrupt func
|
|
|
- call interrupt_entry
|
|
|
-
|
|
|
- UNWIND_HINT_REGS indirect=1
|
|
|
- call \func /* rdi points to pt_regs */
|
|
|
- .endm
|
|
|
-
|
|
|
/*
|
|
|
* The interrupt stubs push (~vector+0x80) onto the stack and
|
|
|
* then jump to common_interrupt.
|
|
@@ -624,7 +616,9 @@ END(interrupt_entry)
|
|
|
common_interrupt:
|
|
|
ASM_CLAC
|
|
|
addq $-0x80, (%rsp) /* Adjust vector to [-256, -1] range */
|
|
|
- interrupt do_IRQ
|
|
|
+ call interrupt_entry
|
|
|
+ UNWIND_HINT_REGS indirect=1
|
|
|
+ call do_IRQ /* rdi points to pt_regs */
|
|
|
/* 0(%rsp): old RSP */
|
|
|
ret_from_intr:
|
|
|
DISABLE_INTERRUPTS(CLBR_ANY)
|
|
@@ -820,7 +814,9 @@ ENTRY(\sym)
|
|
|
ASM_CLAC
|
|
|
pushq $~(\num)
|
|
|
.Lcommon_\sym:
|
|
|
- interrupt \do_sym
|
|
|
+ call interrupt_entry
|
|
|
+ UNWIND_HINT_REGS indirect=1
|
|
|
+ call \do_sym /* rdi points to pt_regs */
|
|
|
jmp ret_from_intr
|
|
|
END(\sym)
|
|
|
.endm
|