1/* SPDX-License-Identifier: GPL-2.0-only */
2/*
3 * Copyright 2013, Michael Ellerman, IBM Corp.
4 */
5
6#include <ppc-asm.h>
7
8 .text
9
10FUNC_START(thirty_two_instruction_loop)
11 cmpdi r3,0
12 beqlr
13 addi r4,r3,1
14 addi r4,r4,1
15 addi r4,r4,1
16 addi r4,r4,1
17 addi r4,r4,1
18 addi r4,r4,1
19 addi r4,r4,1
20 addi r4,r4,1
21 addi r4,r4,1
22 addi r4,r4,1
23 addi r4,r4,1
24 addi r4,r4,1
25 addi r4,r4,1
26 addi r4,r4,1
27 addi r4,r4,1
28 addi r4,r4,1
29 addi r4,r4,1
30 addi r4,r4,1
31 addi r4,r4,1
32 addi r4,r4,1
33 addi r4,r4,1
34 addi r4,r4,1
35 addi r4,r4,1
36 addi r4,r4,1
37 addi r4,r4,1
38 addi r4,r4,1
39 addi r4,r4,1
40 addi r4,r4,1 # 28 addi's
41 subi r3,r3,1
42 b FUNC_NAME(thirty_two_instruction_loop)
43FUNC_END(thirty_two_instruction_loop)
44
45FUNC_START(thirty_two_instruction_loop_with_ll_sc)
46 cmpdi r3,0
47 beqlr
48 addi r5,r5,1
49 addi r5,r5,1
50 addi r5,r5,1 # 5
51 addi r5,r5,1
52 addi r5,r5,1
53 addi r5,r5,1
54 addi r5,r5,1
551: ldarx r6,0,r4 # 10
56 addi r5,r5,1
57 addi r5,r5,1
58 addi r5,r5,1
59 addi r5,r5,1
60 addi r5,r5,1 # 15
61 addi r5,r5,1
62 addi r5,r5,1
63 stdcx. r6,0,r4
64 bne- 1b
65 addi r5,r5,1 # 20
66 addi r5,r5,1
67 addi r5,r5,1
68 addi r5,r5,1
69 addi r5,r5,1
70 addi r5,r5,1 # 25
71 addi r5,r5,1
72 addi r5,r5,1
73 addi r5,r5,1
74 addi r5,r5,1
75 addi r5,r5,1 # 30
76 subi r3,r3,1
77 b FUNC_NAME(thirty_two_instruction_loop_with_ll_sc)
78FUNC_END(thirty_two_instruction_loop_with_ll_sc)
79

source code of linux/tools/testing/selftests/powerpc/pmu/loop.S