Commit 692b21d7 authored by Christophe Leroy's avatar Christophe Leroy Committed by Michael Ellerman
Browse files

powerpc/vdso: Move cvdso_call macro into gettimeofday.S



Now that gettimeofday.S is unique, move cvdso_call macro
into that file which is the only user.

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/72720359d4c58e3a3b96dd74952741225faac3de.1642782130.git.christophe.leroy@csgroup.eu
parent 9b97bea9
Loading
Loading
Loading
Loading
+2 −50
Original line number Diff line number Diff line
@@ -2,57 +2,9 @@
#ifndef _ASM_POWERPC_VDSO_GETTIMEOFDAY_H
#define _ASM_POWERPC_VDSO_GETTIMEOFDAY_H

#include <asm/page.h>

#ifdef __ASSEMBLY__

#include <asm/ppc_asm.h>

/*
 * The macro sets two stack frames, one for the caller and one for the callee
 * because there are no requirement for the caller to set a stack frame when
 * calling VDSO so it may have omitted to set one, especially on PPC64
 */

.macro cvdso_call funct call_time=0
  .cfi_startproc
	PPC_STLU	r1, -PPC_MIN_STKFRM(r1)
	mflr		r0
  .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
	.ifeq	\call_time
	addi		r5, r5, VDSO_DATA_OFFSET
	.else
	addi		r4, r5, VDSO_DATA_OFFSET
	.endif
	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
	.ifeq	\call_time
	cmpwi		r3, 0
	.endif
	mtlr		r0
  .cfi_restore lr
	addi		r1, r1, 2 * PPC_MIN_STKFRM
	crclr		so
	.ifeq	\call_time
	beqlr+
	crset		so
	neg		r3, r3
	.endif
	blr
  .cfi_endproc
.endm

#else
#ifndef __ASSEMBLY__

#include <asm/page.h>
#include <asm/vdso/timebase.h>
#include <asm/barrier.h>
#include <asm/unistd.h>
+43 −1
Original line number Diff line number Diff line
@@ -12,7 +12,49 @@
#include <asm/vdso_datapage.h>
#include <asm/asm-offsets.h>
#include <asm/unistd.h>
#include <asm/vdso/gettimeofday.h>

/*
 * The macro sets two stack frames, one for the caller and one for the callee
 * because there are no requirement for the caller to set a stack frame when
 * calling VDSO so it may have omitted to set one, especially on PPC64
 */

.macro cvdso_call funct call_time=0
  .cfi_startproc
	PPC_STLU	r1, -PPC_MIN_STKFRM(r1)
	mflr		r0
  .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
	.ifeq	\call_time
	addi		r5, r5, VDSO_DATA_OFFSET
	.else
	addi		r4, r5, VDSO_DATA_OFFSET
	.endif
	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
	.ifeq	\call_time
	cmpwi		r3, 0
	.endif
	mtlr		r0
  .cfi_restore lr
	addi		r1, r1, 2 * PPC_MIN_STKFRM
	crclr		so
	.ifeq	\call_time
	beqlr+
	crset		so
	neg		r3, r3
	.endif
	blr
  .cfi_endproc
.endm

	.text
/*