x86: Use {push,pop}_cfi in more places
Cleaning up and shortening code... Signed-off-by: Jan Beulich <jbeulich@novell.com> Cc: Alexander van Heukelum <heukelum@fastmail.fm> LKML-Reference: <4D6BD35002000078000341DA@vpn.id2.novell.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
39f2205e1a
commit
60cf637a13
|
@ -126,26 +126,20 @@ ENTRY(ia32_sysenter_target)
|
||||||
*/
|
*/
|
||||||
ENABLE_INTERRUPTS(CLBR_NONE)
|
ENABLE_INTERRUPTS(CLBR_NONE)
|
||||||
movl %ebp,%ebp /* zero extension */
|
movl %ebp,%ebp /* zero extension */
|
||||||
pushq $__USER32_DS
|
pushq_cfi $__USER32_DS
|
||||||
CFI_ADJUST_CFA_OFFSET 8
|
|
||||||
/*CFI_REL_OFFSET ss,0*/
|
/*CFI_REL_OFFSET ss,0*/
|
||||||
pushq %rbp
|
pushq_cfi %rbp
|
||||||
CFI_ADJUST_CFA_OFFSET 8
|
|
||||||
CFI_REL_OFFSET rsp,0
|
CFI_REL_OFFSET rsp,0
|
||||||
pushfq
|
pushfq_cfi
|
||||||
CFI_ADJUST_CFA_OFFSET 8
|
|
||||||
/*CFI_REL_OFFSET rflags,0*/
|
/*CFI_REL_OFFSET rflags,0*/
|
||||||
movl 8*3-THREAD_SIZE+TI_sysenter_return(%rsp), %r10d
|
movl 8*3-THREAD_SIZE+TI_sysenter_return(%rsp), %r10d
|
||||||
CFI_REGISTER rip,r10
|
CFI_REGISTER rip,r10
|
||||||
pushq $__USER32_CS
|
pushq_cfi $__USER32_CS
|
||||||
CFI_ADJUST_CFA_OFFSET 8
|
|
||||||
/*CFI_REL_OFFSET cs,0*/
|
/*CFI_REL_OFFSET cs,0*/
|
||||||
movl %eax, %eax
|
movl %eax, %eax
|
||||||
pushq %r10
|
pushq_cfi %r10
|
||||||
CFI_ADJUST_CFA_OFFSET 8
|
|
||||||
CFI_REL_OFFSET rip,0
|
CFI_REL_OFFSET rip,0
|
||||||
pushq %rax
|
pushq_cfi %rax
|
||||||
CFI_ADJUST_CFA_OFFSET 8
|
|
||||||
cld
|
cld
|
||||||
SAVE_ARGS 0,0,1
|
SAVE_ARGS 0,0,1
|
||||||
/* no need to do an access_ok check here because rbp has been
|
/* no need to do an access_ok check here because rbp has been
|
||||||
|
@ -182,11 +176,9 @@ sysexit_from_sys_call:
|
||||||
xorq %r9,%r9
|
xorq %r9,%r9
|
||||||
xorq %r10,%r10
|
xorq %r10,%r10
|
||||||
xorq %r11,%r11
|
xorq %r11,%r11
|
||||||
popfq
|
popfq_cfi
|
||||||
CFI_ADJUST_CFA_OFFSET -8
|
|
||||||
/*CFI_RESTORE rflags*/
|
/*CFI_RESTORE rflags*/
|
||||||
popq %rcx /* User %esp */
|
popq_cfi %rcx /* User %esp */
|
||||||
CFI_ADJUST_CFA_OFFSET -8
|
|
||||||
CFI_REGISTER rsp,rcx
|
CFI_REGISTER rsp,rcx
|
||||||
TRACE_IRQS_ON
|
TRACE_IRQS_ON
|
||||||
ENABLE_INTERRUPTS_SYSEXIT32
|
ENABLE_INTERRUPTS_SYSEXIT32
|
||||||
|
@ -421,8 +413,7 @@ ENTRY(ia32_syscall)
|
||||||
*/
|
*/
|
||||||
ENABLE_INTERRUPTS(CLBR_NONE)
|
ENABLE_INTERRUPTS(CLBR_NONE)
|
||||||
movl %eax,%eax
|
movl %eax,%eax
|
||||||
pushq %rax
|
pushq_cfi %rax
|
||||||
CFI_ADJUST_CFA_OFFSET 8
|
|
||||||
cld
|
cld
|
||||||
/* note the registers are not zero extended to the sf.
|
/* note the registers are not zero extended to the sf.
|
||||||
this could be a problem. */
|
this could be a problem. */
|
||||||
|
|
|
@ -7,14 +7,12 @@
|
||||||
frame pointer later */
|
frame pointer later */
|
||||||
#ifdef CONFIG_FRAME_POINTER
|
#ifdef CONFIG_FRAME_POINTER
|
||||||
.macro FRAME
|
.macro FRAME
|
||||||
pushl %ebp
|
pushl_cfi %ebp
|
||||||
CFI_ADJUST_CFA_OFFSET 4
|
|
||||||
CFI_REL_OFFSET ebp,0
|
CFI_REL_OFFSET ebp,0
|
||||||
movl %esp,%ebp
|
movl %esp,%ebp
|
||||||
.endm
|
.endm
|
||||||
.macro ENDFRAME
|
.macro ENDFRAME
|
||||||
popl %ebp
|
popl_cfi %ebp
|
||||||
CFI_ADJUST_CFA_OFFSET -4
|
|
||||||
CFI_RESTORE ebp
|
CFI_RESTORE ebp
|
||||||
.endm
|
.endm
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -1409,8 +1409,7 @@ END(general_protection)
|
||||||
#ifdef CONFIG_KVM_GUEST
|
#ifdef CONFIG_KVM_GUEST
|
||||||
ENTRY(async_page_fault)
|
ENTRY(async_page_fault)
|
||||||
RING0_EC_FRAME
|
RING0_EC_FRAME
|
||||||
pushl $do_async_page_fault
|
pushl_cfi $do_async_page_fault
|
||||||
CFI_ADJUST_CFA_OFFSET 4
|
|
||||||
jmp error_code
|
jmp error_code
|
||||||
CFI_ENDPROC
|
CFI_ENDPROC
|
||||||
END(apf_page_fault)
|
END(apf_page_fault)
|
||||||
|
|
|
@ -15,14 +15,12 @@
|
||||||
|
|
||||||
/* if you want SMP support, implement these with real spinlocks */
|
/* if you want SMP support, implement these with real spinlocks */
|
||||||
.macro LOCK reg
|
.macro LOCK reg
|
||||||
pushfl
|
pushfl_cfi
|
||||||
CFI_ADJUST_CFA_OFFSET 4
|
|
||||||
cli
|
cli
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro UNLOCK reg
|
.macro UNLOCK reg
|
||||||
popfl
|
popfl_cfi
|
||||||
CFI_ADJUST_CFA_OFFSET -4
|
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
#define BEGIN(op) \
|
#define BEGIN(op) \
|
||||||
|
|
|
@ -14,14 +14,12 @@
|
||||||
#include <asm/dwarf2.h>
|
#include <asm/dwarf2.h>
|
||||||
|
|
||||||
.macro SAVE reg
|
.macro SAVE reg
|
||||||
pushl %\reg
|
pushl_cfi %\reg
|
||||||
CFI_ADJUST_CFA_OFFSET 4
|
|
||||||
CFI_REL_OFFSET \reg, 0
|
CFI_REL_OFFSET \reg, 0
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro RESTORE reg
|
.macro RESTORE reg
|
||||||
popl %\reg
|
popl_cfi %\reg
|
||||||
CFI_ADJUST_CFA_OFFSET -4
|
|
||||||
CFI_RESTORE \reg
|
CFI_RESTORE \reg
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
|
|
|
@ -50,11 +50,9 @@ unsigned int csum_partial(const unsigned char * buff, int len, unsigned int sum)
|
||||||
*/
|
*/
|
||||||
ENTRY(csum_partial)
|
ENTRY(csum_partial)
|
||||||
CFI_STARTPROC
|
CFI_STARTPROC
|
||||||
pushl %esi
|
pushl_cfi %esi
|
||||||
CFI_ADJUST_CFA_OFFSET 4
|
|
||||||
CFI_REL_OFFSET esi, 0
|
CFI_REL_OFFSET esi, 0
|
||||||
pushl %ebx
|
pushl_cfi %ebx
|
||||||
CFI_ADJUST_CFA_OFFSET 4
|
|
||||||
CFI_REL_OFFSET ebx, 0
|
CFI_REL_OFFSET ebx, 0
|
||||||
movl 20(%esp),%eax # Function arg: unsigned int sum
|
movl 20(%esp),%eax # Function arg: unsigned int sum
|
||||||
movl 16(%esp),%ecx # Function arg: int len
|
movl 16(%esp),%ecx # Function arg: int len
|
||||||
|
@ -132,11 +130,9 @@ ENTRY(csum_partial)
|
||||||
jz 8f
|
jz 8f
|
||||||
roll $8, %eax
|
roll $8, %eax
|
||||||
8:
|
8:
|
||||||
popl %ebx
|
popl_cfi %ebx
|
||||||
CFI_ADJUST_CFA_OFFSET -4
|
|
||||||
CFI_RESTORE ebx
|
CFI_RESTORE ebx
|
||||||
popl %esi
|
popl_cfi %esi
|
||||||
CFI_ADJUST_CFA_OFFSET -4
|
|
||||||
CFI_RESTORE esi
|
CFI_RESTORE esi
|
||||||
ret
|
ret
|
||||||
CFI_ENDPROC
|
CFI_ENDPROC
|
||||||
|
@ -148,11 +144,9 @@ ENDPROC(csum_partial)
|
||||||
|
|
||||||
ENTRY(csum_partial)
|
ENTRY(csum_partial)
|
||||||
CFI_STARTPROC
|
CFI_STARTPROC
|
||||||
pushl %esi
|
pushl_cfi %esi
|
||||||
CFI_ADJUST_CFA_OFFSET 4
|
|
||||||
CFI_REL_OFFSET esi, 0
|
CFI_REL_OFFSET esi, 0
|
||||||
pushl %ebx
|
pushl_cfi %ebx
|
||||||
CFI_ADJUST_CFA_OFFSET 4
|
|
||||||
CFI_REL_OFFSET ebx, 0
|
CFI_REL_OFFSET ebx, 0
|
||||||
movl 20(%esp),%eax # Function arg: unsigned int sum
|
movl 20(%esp),%eax # Function arg: unsigned int sum
|
||||||
movl 16(%esp),%ecx # Function arg: int len
|
movl 16(%esp),%ecx # Function arg: int len
|
||||||
|
@ -260,11 +254,9 @@ ENTRY(csum_partial)
|
||||||
jz 90f
|
jz 90f
|
||||||
roll $8, %eax
|
roll $8, %eax
|
||||||
90:
|
90:
|
||||||
popl %ebx
|
popl_cfi %ebx
|
||||||
CFI_ADJUST_CFA_OFFSET -4
|
|
||||||
CFI_RESTORE ebx
|
CFI_RESTORE ebx
|
||||||
popl %esi
|
popl_cfi %esi
|
||||||
CFI_ADJUST_CFA_OFFSET -4
|
|
||||||
CFI_RESTORE esi
|
CFI_RESTORE esi
|
||||||
ret
|
ret
|
||||||
CFI_ENDPROC
|
CFI_ENDPROC
|
||||||
|
@ -309,14 +301,11 @@ ENTRY(csum_partial_copy_generic)
|
||||||
CFI_STARTPROC
|
CFI_STARTPROC
|
||||||
subl $4,%esp
|
subl $4,%esp
|
||||||
CFI_ADJUST_CFA_OFFSET 4
|
CFI_ADJUST_CFA_OFFSET 4
|
||||||
pushl %edi
|
pushl_cfi %edi
|
||||||
CFI_ADJUST_CFA_OFFSET 4
|
|
||||||
CFI_REL_OFFSET edi, 0
|
CFI_REL_OFFSET edi, 0
|
||||||
pushl %esi
|
pushl_cfi %esi
|
||||||
CFI_ADJUST_CFA_OFFSET 4
|
|
||||||
CFI_REL_OFFSET esi, 0
|
CFI_REL_OFFSET esi, 0
|
||||||
pushl %ebx
|
pushl_cfi %ebx
|
||||||
CFI_ADJUST_CFA_OFFSET 4
|
|
||||||
CFI_REL_OFFSET ebx, 0
|
CFI_REL_OFFSET ebx, 0
|
||||||
movl ARGBASE+16(%esp),%eax # sum
|
movl ARGBASE+16(%esp),%eax # sum
|
||||||
movl ARGBASE+12(%esp),%ecx # len
|
movl ARGBASE+12(%esp),%ecx # len
|
||||||
|
@ -426,17 +415,13 @@ DST( movb %cl, (%edi) )
|
||||||
|
|
||||||
.previous
|
.previous
|
||||||
|
|
||||||
popl %ebx
|
popl_cfi %ebx
|
||||||
CFI_ADJUST_CFA_OFFSET -4
|
|
||||||
CFI_RESTORE ebx
|
CFI_RESTORE ebx
|
||||||
popl %esi
|
popl_cfi %esi
|
||||||
CFI_ADJUST_CFA_OFFSET -4
|
|
||||||
CFI_RESTORE esi
|
CFI_RESTORE esi
|
||||||
popl %edi
|
popl_cfi %edi
|
||||||
CFI_ADJUST_CFA_OFFSET -4
|
|
||||||
CFI_RESTORE edi
|
CFI_RESTORE edi
|
||||||
popl %ecx # equivalent to addl $4,%esp
|
popl_cfi %ecx # equivalent to addl $4,%esp
|
||||||
CFI_ADJUST_CFA_OFFSET -4
|
|
||||||
ret
|
ret
|
||||||
CFI_ENDPROC
|
CFI_ENDPROC
|
||||||
ENDPROC(csum_partial_copy_generic)
|
ENDPROC(csum_partial_copy_generic)
|
||||||
|
@ -459,14 +444,11 @@ ENDPROC(csum_partial_copy_generic)
|
||||||
|
|
||||||
ENTRY(csum_partial_copy_generic)
|
ENTRY(csum_partial_copy_generic)
|
||||||
CFI_STARTPROC
|
CFI_STARTPROC
|
||||||
pushl %ebx
|
pushl_cfi %ebx
|
||||||
CFI_ADJUST_CFA_OFFSET 4
|
|
||||||
CFI_REL_OFFSET ebx, 0
|
CFI_REL_OFFSET ebx, 0
|
||||||
pushl %edi
|
pushl_cfi %edi
|
||||||
CFI_ADJUST_CFA_OFFSET 4
|
|
||||||
CFI_REL_OFFSET edi, 0
|
CFI_REL_OFFSET edi, 0
|
||||||
pushl %esi
|
pushl_cfi %esi
|
||||||
CFI_ADJUST_CFA_OFFSET 4
|
|
||||||
CFI_REL_OFFSET esi, 0
|
CFI_REL_OFFSET esi, 0
|
||||||
movl ARGBASE+4(%esp),%esi #src
|
movl ARGBASE+4(%esp),%esi #src
|
||||||
movl ARGBASE+8(%esp),%edi #dst
|
movl ARGBASE+8(%esp),%edi #dst
|
||||||
|
@ -527,14 +509,11 @@ DST( movb %dl, (%edi) )
|
||||||
jmp 7b
|
jmp 7b
|
||||||
.previous
|
.previous
|
||||||
|
|
||||||
popl %esi
|
popl_cfi %esi
|
||||||
CFI_ADJUST_CFA_OFFSET -4
|
|
||||||
CFI_RESTORE esi
|
CFI_RESTORE esi
|
||||||
popl %edi
|
popl_cfi %edi
|
||||||
CFI_ADJUST_CFA_OFFSET -4
|
|
||||||
CFI_RESTORE edi
|
CFI_RESTORE edi
|
||||||
popl %ebx
|
popl_cfi %ebx
|
||||||
CFI_ADJUST_CFA_OFFSET -4
|
|
||||||
CFI_RESTORE ebx
|
CFI_RESTORE ebx
|
||||||
ret
|
ret
|
||||||
CFI_ENDPROC
|
CFI_ENDPROC
|
||||||
|
|
|
@ -74,29 +74,23 @@ ENTRY(__read_lock_failed)
|
||||||
/* Fix up special calling conventions */
|
/* Fix up special calling conventions */
|
||||||
ENTRY(call_rwsem_down_read_failed)
|
ENTRY(call_rwsem_down_read_failed)
|
||||||
CFI_STARTPROC
|
CFI_STARTPROC
|
||||||
push %ecx
|
pushl_cfi %ecx
|
||||||
CFI_ADJUST_CFA_OFFSET 4
|
|
||||||
CFI_REL_OFFSET ecx,0
|
CFI_REL_OFFSET ecx,0
|
||||||
push %edx
|
pushl_cfi %edx
|
||||||
CFI_ADJUST_CFA_OFFSET 4
|
|
||||||
CFI_REL_OFFSET edx,0
|
CFI_REL_OFFSET edx,0
|
||||||
call rwsem_down_read_failed
|
call rwsem_down_read_failed
|
||||||
pop %edx
|
popl_cfi %edx
|
||||||
CFI_ADJUST_CFA_OFFSET -4
|
popl_cfi %ecx
|
||||||
pop %ecx
|
|
||||||
CFI_ADJUST_CFA_OFFSET -4
|
|
||||||
ret
|
ret
|
||||||
CFI_ENDPROC
|
CFI_ENDPROC
|
||||||
ENDPROC(call_rwsem_down_read_failed)
|
ENDPROC(call_rwsem_down_read_failed)
|
||||||
|
|
||||||
ENTRY(call_rwsem_down_write_failed)
|
ENTRY(call_rwsem_down_write_failed)
|
||||||
CFI_STARTPROC
|
CFI_STARTPROC
|
||||||
push %ecx
|
pushl_cfi %ecx
|
||||||
CFI_ADJUST_CFA_OFFSET 4
|
|
||||||
CFI_REL_OFFSET ecx,0
|
CFI_REL_OFFSET ecx,0
|
||||||
calll rwsem_down_write_failed
|
calll rwsem_down_write_failed
|
||||||
pop %ecx
|
popl_cfi %ecx
|
||||||
CFI_ADJUST_CFA_OFFSET -4
|
|
||||||
ret
|
ret
|
||||||
CFI_ENDPROC
|
CFI_ENDPROC
|
||||||
ENDPROC(call_rwsem_down_write_failed)
|
ENDPROC(call_rwsem_down_write_failed)
|
||||||
|
@ -105,12 +99,10 @@ ENTRY(call_rwsem_wake)
|
||||||
CFI_STARTPROC
|
CFI_STARTPROC
|
||||||
decw %dx /* do nothing if still outstanding active readers */
|
decw %dx /* do nothing if still outstanding active readers */
|
||||||
jnz 1f
|
jnz 1f
|
||||||
push %ecx
|
pushl_cfi %ecx
|
||||||
CFI_ADJUST_CFA_OFFSET 4
|
|
||||||
CFI_REL_OFFSET ecx,0
|
CFI_REL_OFFSET ecx,0
|
||||||
call rwsem_wake
|
call rwsem_wake
|
||||||
pop %ecx
|
popl_cfi %ecx
|
||||||
CFI_ADJUST_CFA_OFFSET -4
|
|
||||||
1: ret
|
1: ret
|
||||||
CFI_ENDPROC
|
CFI_ENDPROC
|
||||||
ENDPROC(call_rwsem_wake)
|
ENDPROC(call_rwsem_wake)
|
||||||
|
@ -118,17 +110,13 @@ ENTRY(call_rwsem_wake)
|
||||||
/* Fix up special calling conventions */
|
/* Fix up special calling conventions */
|
||||||
ENTRY(call_rwsem_downgrade_wake)
|
ENTRY(call_rwsem_downgrade_wake)
|
||||||
CFI_STARTPROC
|
CFI_STARTPROC
|
||||||
push %ecx
|
pushl_cfi %ecx
|
||||||
CFI_ADJUST_CFA_OFFSET 4
|
|
||||||
CFI_REL_OFFSET ecx,0
|
CFI_REL_OFFSET ecx,0
|
||||||
push %edx
|
pushl_cfi %edx
|
||||||
CFI_ADJUST_CFA_OFFSET 4
|
|
||||||
CFI_REL_OFFSET edx,0
|
CFI_REL_OFFSET edx,0
|
||||||
call rwsem_downgrade_wake
|
call rwsem_downgrade_wake
|
||||||
pop %edx
|
popl_cfi %edx
|
||||||
CFI_ADJUST_CFA_OFFSET -4
|
popl_cfi %ecx
|
||||||
pop %ecx
|
|
||||||
CFI_ADJUST_CFA_OFFSET -4
|
|
||||||
ret
|
ret
|
||||||
CFI_ENDPROC
|
CFI_ENDPROC
|
||||||
ENDPROC(call_rwsem_downgrade_wake)
|
ENDPROC(call_rwsem_downgrade_wake)
|
||||||
|
|
Loading…
Reference in New Issue