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

Commit aaad4224 authored by Anton Blanchard's avatar Anton Blanchard Committed by Benjamin Herrenschmidt
Browse files

powerpc/pseries: Optimise hcall tracepoints



Now that we execute the hcall tracepoint entry and exit code out of
line, we can use the same stack across both functions.

Signed-off-by: default avatarAnton Blanchard <anton@samba.org>
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
parent cc1adb5f
Loading
Loading
Loading
Loading
+16 −22
Original line number Diff line number Diff line
@@ -46,33 +46,27 @@ hcall_tracepoint_refcount:
	addi	r4,r1,STK_PARAM(FIRST_REG);			\
	stdu	r1,-STACK_FRAME_OVERHEAD(r1);			\
	bl	__trace_hcall_entry;				\
	addi	r1,r1,STACK_FRAME_OVERHEAD;			\
	ld	r0,16(r1);					\
	ld	r3,STK_PARAM(R3)(r1);				\
	ld	r4,STK_PARAM(R4)(r1);				\
	ld	r5,STK_PARAM(R5)(r1);				\
	ld	r6,STK_PARAM(R6)(r1);				\
	ld	r7,STK_PARAM(R7)(r1);				\
	ld	r8,STK_PARAM(R8)(r1);				\
	ld	r9,STK_PARAM(R9)(r1);				\
	ld	r10,STK_PARAM(R10)(r1);				\
	mtlr	r0
	ld	r3,STACK_FRAME_OVERHEAD+STK_PARAM(R3)(r1);	\
	ld	r4,STACK_FRAME_OVERHEAD+STK_PARAM(R4)(r1);	\
	ld	r5,STACK_FRAME_OVERHEAD+STK_PARAM(R5)(r1);	\
	ld	r6,STACK_FRAME_OVERHEAD+STK_PARAM(R6)(r1);	\
	ld	r7,STACK_FRAME_OVERHEAD+STK_PARAM(R7)(r1);	\
	ld	r8,STACK_FRAME_OVERHEAD+STK_PARAM(R8)(r1);	\
	ld	r9,STACK_FRAME_OVERHEAD+STK_PARAM(R9)(r1);	\
	ld	r10,STACK_FRAME_OVERHEAD+STK_PARAM(R10)(r1)

/*
 * postcall is performed immediately before function return which
 * allows liberal use of volatile registers.
 */
#define __HCALL_INST_POSTCALL					\
	mflr	r0;						\
	ld	r6,STK_PARAM(R3)(r1);				\
	std	r3,STK_PARAM(R3)(r1);				\
	ld	r0,STACK_FRAME_OVERHEAD+STK_PARAM(R3)(r1);	\
	std	r3,STACK_FRAME_OVERHEAD+STK_PARAM(R3)(r1);	\
	mr	r4,r3;						\
	mr	r3,r6;						\
	std	r0,16(r1);					\
	stdu	r1,-STACK_FRAME_OVERHEAD(r1);			\
	mr	r3,r0;						\
	bl	__trace_hcall_exit;				\
	ld	r0,STACK_FRAME_OVERHEAD+16(r1);			\
	addi	r1,r1,STACK_FRAME_OVERHEAD;			\
	ld	r0,16(r1);					\
	ld	r3,STK_PARAM(R3)(r1);				\
	mtlr	r0

@@ -279,14 +273,14 @@ plpar_hcall9_trace:
	mr	r7,r8
	mr	r8,r9
	mr	r9,r10
	ld	r10,STK_PARAM(R11)(r1)
	ld	r11,STK_PARAM(R12)(r1)
	ld	r12,STK_PARAM(R13)(r1)
	ld	r10,STACK_FRAME_OVERHEAD+STK_PARAM(R11)(r1)
	ld	r11,STACK_FRAME_OVERHEAD+STK_PARAM(R12)(r1)
	ld	r12,STACK_FRAME_OVERHEAD+STK_PARAM(R13)(r1)

	HVSC

	mr	r0,r12
	ld	r12,STK_PARAM(R4)(r1)
	ld	r12,STACK_FRAME_OVERHEAD+STK_PARAM(R4)(r1)
	std	r4,0(r12)
	std	r5,8(r12)
	std	r6,16(r12)