Commit 7fec9f5d authored by Christophe Leroy's avatar Christophe Leroy Committed by Michael Ellerman
Browse files

powerpc/vdso: Save and restore TOC pointer on PPC64



On PPC64, the TOC pointer needs to be saved and restored.

Suggested-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Signed-off-by: default avatarChristophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20201126131006.2431205-7-mpe@ellerman.id.au
parent ce7d8056
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -19,10 +19,16 @@
  .cfi_register lr, r0
	PPC_STLU	r1, -PPC_MIN_STKFRM(r1)
	PPC_STL		r0, PPC_MIN_STKFRM + PPC_LR_STKOFF(r1)
#ifdef __powerpc64__
	PPC_STL		r2, PPC_MIN_STKFRM + STK_GOT(r1)
#endif
	get_datapage	r5, r0
	addi		r5, r5, VDSO_DATA_OFFSET
	bl		DOTSYM(\funct)
	PPC_LL		r0, PPC_MIN_STKFRM + PPC_LR_STKOFF(r1)
#ifdef __powerpc64__
	PPC_LL		r2, PPC_MIN_STKFRM + STK_GOT(r1)
#endif
	cmpwi		r3, 0
	mtlr		r0
  .cfi_restore lr
@@ -42,10 +48,16 @@
  .cfi_register lr, r0
	PPC_STLU	r1, -PPC_MIN_STKFRM(r1)
	PPC_STL		r0, PPC_MIN_STKFRM + PPC_LR_STKOFF(r1)
#ifdef __powerpc64__
	PPC_STL		r2, PPC_MIN_STKFRM + STK_GOT(r1)
#endif
	get_datapage	r4, r0
	addi		r4, r4, VDSO_DATA_OFFSET
	bl		DOTSYM(\funct)
	PPC_LL		r0, PPC_MIN_STKFRM + PPC_LR_STKOFF(r1)
#ifdef __powerpc64__
	PPC_LL		r2, PPC_MIN_STKFRM + STK_GOT(r1)
#endif
	crclr		so
	mtlr		r0
  .cfi_restore lr