Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 39f2205e authored by Jan Beulich's avatar Jan Beulich Committed by Ingo Molnar
Browse files

x86-64: Add CFI annotations to lib/rwsem_64.S



These weren't part of the initial commit of this code.

Signed-off-by: default avatarJan Beulich <jbeulich@novell.com>
Cc: Alexander van Heukelum <heukelum@fastmail.fm>
LKML-Reference: <4D6BCDFF02000078000341B0@vpn.id2.novell.com>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent 7bf04be8
Loading
Loading
Loading
Loading
+34 −22
Original line number Diff line number Diff line
@@ -23,43 +23,50 @@
#include <asm/dwarf2.h>

#define save_common_regs \
	pushq %rdi; \
	pushq %rsi; \
	pushq %rcx; \
	pushq %r8; \
	pushq %r9; \
	pushq %r10; \
	pushq %r11
	pushq_cfi %rdi; CFI_REL_OFFSET rdi, 0; \
	pushq_cfi %rsi; CFI_REL_OFFSET rsi, 0; \
	pushq_cfi %rcx; CFI_REL_OFFSET rcx, 0; \
	pushq_cfi %r8;  CFI_REL_OFFSET r8,  0; \
	pushq_cfi %r9;  CFI_REL_OFFSET r9,  0; \
	pushq_cfi %r10; CFI_REL_OFFSET r10, 0; \
	pushq_cfi %r11; CFI_REL_OFFSET r11, 0

#define restore_common_regs \
	popq %r11; \
	popq %r10; \
	popq %r9; \
	popq %r8; \
	popq %rcx; \
	popq %rsi; \
	popq %rdi
	popq_cfi %r11; CFI_RESTORE r11; \
	popq_cfi %r10; CFI_RESTORE r10; \
	popq_cfi %r9;  CFI_RESTORE r9; \
	popq_cfi %r8;  CFI_RESTORE r8; \
	popq_cfi %rcx; CFI_RESTORE rcx; \
	popq_cfi %rsi; CFI_RESTORE rsi; \
	popq_cfi %rdi; CFI_RESTORE rdi

/* Fix up special calling conventions */
ENTRY(call_rwsem_down_read_failed)
	CFI_STARTPROC
	save_common_regs
	pushq %rdx
	pushq_cfi %rdx
	CFI_REL_OFFSET rdx, 0
	movq %rax,%rdi
	call rwsem_down_read_failed
	popq %rdx
	popq_cfi %rdx
	CFI_RESTORE rdx
	restore_common_regs
	ret
	CFI_ENDPROC
ENDPROC(call_rwsem_down_read_failed)

ENTRY(call_rwsem_down_write_failed)
	CFI_STARTPROC
	save_common_regs
	movq %rax,%rdi
	call rwsem_down_write_failed
	restore_common_regs
	ret
	CFI_ENDPROC
ENDPROC(call_rwsem_down_write_failed)

ENTRY(call_rwsem_wake)
	CFI_STARTPROC
	decl %edx	/* do nothing if still outstanding active readers */
	jnz 1f
	save_common_regs
@@ -67,15 +74,20 @@ ENTRY(call_rwsem_wake)
	call rwsem_wake
	restore_common_regs
1:	ret
	CFI_ENDPROC
ENDPROC(call_rwsem_wake)

/* Fix up special calling conventions */
ENTRY(call_rwsem_downgrade_wake)
	CFI_STARTPROC
	save_common_regs
	pushq %rdx
	pushq_cfi %rdx
	CFI_REL_OFFSET rdx, 0
	movq %rax,%rdi
	call rwsem_downgrade_wake
	popq %rdx
	popq_cfi %rdx
	CFI_RESTORE rdx
	restore_common_regs
	ret
	CFI_ENDPROC
ENDPROC(call_rwsem_downgrade_wake)