Commit b961ec10 authored by Jens Remus's avatar Jens Remus Committed by Alexander Gordeev
Browse files

s390/vdso: Add CFI for RA register to asm macro vdso_func

The return-address (RA) register r14 is specified as volatile in the
s390x ELF ABI [1]. Nevertheless proper CFI directives must be provided
for an unwinder to restore the return address, if the RA register
value is changed from its value at function entry, as it is the case.

[1]: s390x ELF ABI, https://github.com/IBM/s390x-abi/releases



Fixes: 4bff8cb5 ("s390: convert to GENERIC_VDSO")
Signed-off-by: default avatarJens Remus <jremus@linux.ibm.com>
Acked-by: default avatarHeiko Carstens <hca@linux.ibm.com>
Signed-off-by: default avatarAlexander Gordeev <agordeev@linux.ibm.com>
parent 5e1a99cf
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -9,6 +9,7 @@
#define CFI_DEF_CFA_OFFSET	.cfi_def_cfa_offset
#define CFI_ADJUST_CFA_OFFSET	.cfi_adjust_cfa_offset
#define CFI_RESTORE		.cfi_restore
#define CFI_REL_OFFSET		.cfi_rel_offset

#ifdef CONFIG_AS_CFI_VAL_OFFSET
#define CFI_VAL_OFFSET		.cfi_val_offset
+2 −0
Original line number Diff line number Diff line
@@ -24,8 +24,10 @@ __kernel_\func:
	CFI_DEF_CFA_OFFSET (STACK_FRAME_OVERHEAD + WRAPPER_FRAME_SIZE)
	CFI_VAL_OFFSET 15, -STACK_FRAME_OVERHEAD
	stg	%r14,STACK_FRAME_OVERHEAD(%r15)
	CFI_REL_OFFSET 14, STACK_FRAME_OVERHEAD
	brasl	%r14,__s390_vdso_\func
	lg	%r14,STACK_FRAME_OVERHEAD(%r15)
	CFI_RESTORE 14
	aghi	%r15,WRAPPER_FRAME_SIZE
	CFI_DEF_CFA_OFFSET STACK_FRAME_OVERHEAD
	CFI_RESTORE 15