mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-27 21:03:32 +00:00
s390/vdso: Add CFI for RA register to asm macro vdso_func
[ Upstream commitb961ec10b9
] 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:4bff8cb545
("s390: convert to GENERIC_VDSO") Signed-off-by: Jens Remus <jremus@linux.ibm.com> Acked-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
39a055e607
commit
160e19b95b
2 changed files with 3 additions and 0 deletions
|
@ -9,6 +9,7 @@
|
||||||
#define CFI_DEF_CFA_OFFSET .cfi_def_cfa_offset
|
#define CFI_DEF_CFA_OFFSET .cfi_def_cfa_offset
|
||||||
#define CFI_ADJUST_CFA_OFFSET .cfi_adjust_cfa_offset
|
#define CFI_ADJUST_CFA_OFFSET .cfi_adjust_cfa_offset
|
||||||
#define CFI_RESTORE .cfi_restore
|
#define CFI_RESTORE .cfi_restore
|
||||||
|
#define CFI_REL_OFFSET .cfi_rel_offset
|
||||||
|
|
||||||
#ifdef CONFIG_AS_CFI_VAL_OFFSET
|
#ifdef CONFIG_AS_CFI_VAL_OFFSET
|
||||||
#define CFI_VAL_OFFSET .cfi_val_offset
|
#define CFI_VAL_OFFSET .cfi_val_offset
|
||||||
|
|
|
@ -23,8 +23,10 @@ __kernel_\func:
|
||||||
CFI_DEF_CFA_OFFSET (STACK_FRAME_OVERHEAD + WRAPPER_FRAME_SIZE)
|
CFI_DEF_CFA_OFFSET (STACK_FRAME_OVERHEAD + WRAPPER_FRAME_SIZE)
|
||||||
CFI_VAL_OFFSET 15, -STACK_FRAME_OVERHEAD
|
CFI_VAL_OFFSET 15, -STACK_FRAME_OVERHEAD
|
||||||
stg %r14,STACK_FRAME_OVERHEAD(%r15)
|
stg %r14,STACK_FRAME_OVERHEAD(%r15)
|
||||||
|
CFI_REL_OFFSET 14, STACK_FRAME_OVERHEAD
|
||||||
brasl %r14,__s390_vdso_\func
|
brasl %r14,__s390_vdso_\func
|
||||||
lg %r14,STACK_FRAME_OVERHEAD(%r15)
|
lg %r14,STACK_FRAME_OVERHEAD(%r15)
|
||||||
|
CFI_RESTORE 14
|
||||||
aghi %r15,WRAPPER_FRAME_SIZE
|
aghi %r15,WRAPPER_FRAME_SIZE
|
||||||
CFI_DEF_CFA_OFFSET STACK_FRAME_OVERHEAD
|
CFI_DEF_CFA_OFFSET STACK_FRAME_OVERHEAD
|
||||||
CFI_RESTORE 15
|
CFI_RESTORE 15
|
||||||
|
|
Loading…
Reference in a new issue