x86-64: Use symbolics instead of raw numbers in entry_64.S
... making the code a little less fragile. Also use pushq_cfi instead of raw CFI annotations in two more places, and add two missing annotations after stack pointer adjustments which got modified here anyway. Signed-off-by: Jan Beulich <jbeulich@novell.com> Acked-by: Alexander van Heukelum <heukelum@fastmail.fm> LKML-Reference: <4C7FBACF0200007800013F6A@vpn.id2.novell.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
1f130a783a
commit
b1cccb1bb0
|
@ -795,8 +795,8 @@ END(interrupt)
|
||||||
|
|
||||||
/* 0(%rsp): ~(interrupt number) */
|
/* 0(%rsp): ~(interrupt number) */
|
||||||
.macro interrupt func
|
.macro interrupt func
|
||||||
subq $10*8, %rsp
|
subq $ORIG_RAX-ARGOFFSET+8, %rsp
|
||||||
CFI_ADJUST_CFA_OFFSET 10*8
|
CFI_ADJUST_CFA_OFFSET ORIG_RAX-ARGOFFSET+8
|
||||||
call save_args
|
call save_args
|
||||||
PARTIAL_FRAME 0
|
PARTIAL_FRAME 0
|
||||||
call \func
|
call \func
|
||||||
|
@ -1035,8 +1035,8 @@ ENTRY(\sym)
|
||||||
INTR_FRAME
|
INTR_FRAME
|
||||||
PARAVIRT_ADJUST_EXCEPTION_FRAME
|
PARAVIRT_ADJUST_EXCEPTION_FRAME
|
||||||
pushq_cfi $-1 /* ORIG_RAX: no syscall to restart */
|
pushq_cfi $-1 /* ORIG_RAX: no syscall to restart */
|
||||||
subq $15*8,%rsp
|
subq $ORIG_RAX-R15, %rsp
|
||||||
CFI_ADJUST_CFA_OFFSET 15*8
|
CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15
|
||||||
call error_entry
|
call error_entry
|
||||||
DEFAULT_FRAME 0
|
DEFAULT_FRAME 0
|
||||||
movq %rsp,%rdi /* pt_regs pointer */
|
movq %rsp,%rdi /* pt_regs pointer */
|
||||||
|
@ -1051,9 +1051,9 @@ END(\sym)
|
||||||
ENTRY(\sym)
|
ENTRY(\sym)
|
||||||
INTR_FRAME
|
INTR_FRAME
|
||||||
PARAVIRT_ADJUST_EXCEPTION_FRAME
|
PARAVIRT_ADJUST_EXCEPTION_FRAME
|
||||||
pushq $-1 /* ORIG_RAX: no syscall to restart */
|
pushq_cfi $-1 /* ORIG_RAX: no syscall to restart */
|
||||||
CFI_ADJUST_CFA_OFFSET 8
|
subq $ORIG_RAX-R15, %rsp
|
||||||
subq $15*8, %rsp
|
CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15
|
||||||
call save_paranoid
|
call save_paranoid
|
||||||
TRACE_IRQS_OFF
|
TRACE_IRQS_OFF
|
||||||
movq %rsp,%rdi /* pt_regs pointer */
|
movq %rsp,%rdi /* pt_regs pointer */
|
||||||
|
@ -1069,9 +1069,9 @@ END(\sym)
|
||||||
ENTRY(\sym)
|
ENTRY(\sym)
|
||||||
INTR_FRAME
|
INTR_FRAME
|
||||||
PARAVIRT_ADJUST_EXCEPTION_FRAME
|
PARAVIRT_ADJUST_EXCEPTION_FRAME
|
||||||
pushq $-1 /* ORIG_RAX: no syscall to restart */
|
pushq_cfi $-1 /* ORIG_RAX: no syscall to restart */
|
||||||
CFI_ADJUST_CFA_OFFSET 8
|
subq $ORIG_RAX-R15, %rsp
|
||||||
subq $15*8, %rsp
|
CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15
|
||||||
call save_paranoid
|
call save_paranoid
|
||||||
TRACE_IRQS_OFF
|
TRACE_IRQS_OFF
|
||||||
movq %rsp,%rdi /* pt_regs pointer */
|
movq %rsp,%rdi /* pt_regs pointer */
|
||||||
|
@ -1088,8 +1088,8 @@ END(\sym)
|
||||||
ENTRY(\sym)
|
ENTRY(\sym)
|
||||||
XCPT_FRAME
|
XCPT_FRAME
|
||||||
PARAVIRT_ADJUST_EXCEPTION_FRAME
|
PARAVIRT_ADJUST_EXCEPTION_FRAME
|
||||||
subq $15*8,%rsp
|
subq $ORIG_RAX-R15, %rsp
|
||||||
CFI_ADJUST_CFA_OFFSET 15*8
|
CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15
|
||||||
call error_entry
|
call error_entry
|
||||||
DEFAULT_FRAME 0
|
DEFAULT_FRAME 0
|
||||||
movq %rsp,%rdi /* pt_regs pointer */
|
movq %rsp,%rdi /* pt_regs pointer */
|
||||||
|
@ -1106,8 +1106,8 @@ END(\sym)
|
||||||
ENTRY(\sym)
|
ENTRY(\sym)
|
||||||
XCPT_FRAME
|
XCPT_FRAME
|
||||||
PARAVIRT_ADJUST_EXCEPTION_FRAME
|
PARAVIRT_ADJUST_EXCEPTION_FRAME
|
||||||
subq $15*8,%rsp
|
subq $ORIG_RAX-R15, %rsp
|
||||||
CFI_ADJUST_CFA_OFFSET 15*8
|
CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15
|
||||||
call save_paranoid
|
call save_paranoid
|
||||||
DEFAULT_FRAME 0
|
DEFAULT_FRAME 0
|
||||||
TRACE_IRQS_OFF
|
TRACE_IRQS_OFF
|
||||||
|
@ -1497,8 +1497,8 @@ ENTRY(nmi)
|
||||||
INTR_FRAME
|
INTR_FRAME
|
||||||
PARAVIRT_ADJUST_EXCEPTION_FRAME
|
PARAVIRT_ADJUST_EXCEPTION_FRAME
|
||||||
pushq_cfi $-1
|
pushq_cfi $-1
|
||||||
subq $15*8, %rsp
|
subq $ORIG_RAX-R15, %rsp
|
||||||
CFI_ADJUST_CFA_OFFSET 15*8
|
CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15
|
||||||
call save_paranoid
|
call save_paranoid
|
||||||
DEFAULT_FRAME 0
|
DEFAULT_FRAME 0
|
||||||
/* paranoidentry do_nmi, 0; without TRACE_IRQS_OFF */
|
/* paranoidentry do_nmi, 0; without TRACE_IRQS_OFF */
|
||||||
|
|
Reference in New Issue