|
@@ -513,6 +513,7 @@ END(stub_rt_sigreturn)
|
|
|
swapgs
|
|
|
1: incl %gs:pda_irqcount # RED-PEN should check preempt count
|
|
|
cmoveq %gs:pda_irqstackptr,%rsp
|
|
|
+ push %rbp # backlink for old unwinder
|
|
|
/*
|
|
|
* We entered an interrupt context - irqs are off:
|
|
|
*/
|
|
@@ -1139,18 +1140,21 @@ ENTRY(machine_check)
|
|
|
END(machine_check)
|
|
|
#endif
|
|
|
|
|
|
+/* Call softirq on interrupt stack. Interrupts are off. */
|
|
|
ENTRY(call_softirq)
|
|
|
CFI_STARTPROC
|
|
|
- movq %gs:pda_irqstackptr,%rax
|
|
|
- movq %rsp,%rdx
|
|
|
- CFI_DEF_CFA_REGISTER rdx
|
|
|
+ push %rbp
|
|
|
+ CFI_ADJUST_CFA_OFFSET 8
|
|
|
+ CFI_REL_OFFSET rbp,0
|
|
|
+ mov %rsp,%rbp
|
|
|
+ CFI_DEF_CFA_REGISTER rbp
|
|
|
incl %gs:pda_irqcount
|
|
|
- cmove %rax,%rsp
|
|
|
- pushq %rdx
|
|
|
- /*todo CFI_DEF_CFA_EXPRESSION ...*/
|
|
|
+ cmove %gs:pda_irqstackptr,%rsp
|
|
|
+ push %rbp # backlink for old unwinder
|
|
|
call __do_softirq
|
|
|
- popq %rsp
|
|
|
+ leaveq
|
|
|
CFI_DEF_CFA_REGISTER rsp
|
|
|
+ CFI_ADJUST_CFA_OFFSET -8
|
|
|
decl %gs:pda_irqcount
|
|
|
ret
|
|
|
CFI_ENDPROC
|