xref: /linux/tools/testing/selftests/powerpc/pmu/branch_loops.S (revision 4f2c0a4acffbec01079c28f839422e64ddeff004)
1*c55dabc6SKajol Jain/* SPDX-License-Identifier: GPL-2.0-only */
2*c55dabc6SKajol Jain/*
3*c55dabc6SKajol Jain * Copyright 2022, Kajol Jain, IBM Corp.
4*c55dabc6SKajol Jain */
5*c55dabc6SKajol Jain
6*c55dabc6SKajol Jain#include <ppc-asm.h>
7*c55dabc6SKajol Jain
8*c55dabc6SKajol Jain	.text
9*c55dabc6SKajol Jain
10*c55dabc6SKajol Jain#define ITER_SHIFT	31
11*c55dabc6SKajol Jain
12*c55dabc6SKajol JainFUNC_START(indirect_branch_loop)
13*c55dabc6SKajol Jain	li	r3, 1
14*c55dabc6SKajol Jain	sldi	r3, r3, ITER_SHIFT
15*c55dabc6SKajol Jain
16*c55dabc6SKajol Jain1:	cmpdi	r3, 0
17*c55dabc6SKajol Jain	beqlr
18*c55dabc6SKajol Jain
19*c55dabc6SKajol Jain	addi	r3, r3, -1
20*c55dabc6SKajol Jain
21*c55dabc6SKajol Jain	ld	r4, 2f@got(%r2)
22*c55dabc6SKajol Jain	mtctr	r4
23*c55dabc6SKajol Jain	bctr
24*c55dabc6SKajol Jain
25*c55dabc6SKajol Jain	.balign 32
26*c55dabc6SKajol Jain2:	b	1b
27*c55dabc6SKajol Jain
28*c55dabc6SKajol JainFUNC_END(indirect_branch_loop)
29