xref: /openbmc/linux/tools/testing/selftests/powerpc/pmu/ebb/busy_loop.S (revision 75bf465f0bc33e9b776a46d6a1b9b990f5fb7c37)
1*f50a7f3dSThomas Gleixner/* SPDX-License-Identifier: GPL-2.0-only */
26873def9SMichael Ellerman/*
36873def9SMichael Ellerman * Copyright 2014, Michael Ellerman, IBM Corp.
46873def9SMichael Ellerman */
56873def9SMichael Ellerman
66873def9SMichael Ellerman#include <ppc-asm.h>
76873def9SMichael Ellerman
86873def9SMichael Ellerman	.text
96873def9SMichael Ellerman
106873def9SMichael EllermanFUNC_START(core_busy_loop)
116873def9SMichael Ellerman	stdu	%r1, -168(%r1)
126873def9SMichael Ellerman	std	r14, 160(%r1)
136873def9SMichael Ellerman	std	r15, 152(%r1)
146873def9SMichael Ellerman	std	r16, 144(%r1)
156873def9SMichael Ellerman	std	r17, 136(%r1)
166873def9SMichael Ellerman	std	r18, 128(%r1)
176873def9SMichael Ellerman	std	r19, 120(%r1)
186873def9SMichael Ellerman	std	r20, 112(%r1)
196873def9SMichael Ellerman	std	r21, 104(%r1)
206873def9SMichael Ellerman	std	r22, 96(%r1)
216873def9SMichael Ellerman	std	r23, 88(%r1)
226873def9SMichael Ellerman	std	r24, 80(%r1)
236873def9SMichael Ellerman	std	r25, 72(%r1)
246873def9SMichael Ellerman	std	r26, 64(%r1)
256873def9SMichael Ellerman	std	r27, 56(%r1)
266873def9SMichael Ellerman	std	r28, 48(%r1)
276873def9SMichael Ellerman	std	r29, 40(%r1)
286873def9SMichael Ellerman	std	r30, 32(%r1)
296873def9SMichael Ellerman	std	r31, 24(%r1)
306873def9SMichael Ellerman
316873def9SMichael Ellerman	li	 r3, 0x3030
326873def9SMichael Ellerman	std	 r3, -96(%r1)
336873def9SMichael Ellerman	li	 r4, 0x4040
346873def9SMichael Ellerman	std	 r4, -104(%r1)
356873def9SMichael Ellerman	li	 r5, 0x5050
366873def9SMichael Ellerman	std	 r5, -112(%r1)
376873def9SMichael Ellerman	li	 r6, 0x6060
386873def9SMichael Ellerman	std	 r6, -120(%r1)
396873def9SMichael Ellerman	li	 r7, 0x7070
406873def9SMichael Ellerman	std	 r7, -128(%r1)
416873def9SMichael Ellerman	li	 r8, 0x0808
426873def9SMichael Ellerman	std	 r8, -136(%r1)
436873def9SMichael Ellerman	li	 r9, 0x0909
446873def9SMichael Ellerman	std	 r9, -144(%r1)
456873def9SMichael Ellerman	li	r10, 0x1010
466873def9SMichael Ellerman	std	r10, -152(%r1)
476873def9SMichael Ellerman	li	r11, 0x1111
486873def9SMichael Ellerman	std	r11, -160(%r1)
496873def9SMichael Ellerman	li	r14, 0x1414
506873def9SMichael Ellerman	std	r14, -168(%r1)
516873def9SMichael Ellerman	li	r15, 0x1515
526873def9SMichael Ellerman	std	r15, -176(%r1)
536873def9SMichael Ellerman	li	r16, 0x1616
546873def9SMichael Ellerman	std	r16, -184(%r1)
556873def9SMichael Ellerman	li	r17, 0x1717
566873def9SMichael Ellerman	std	r17, -192(%r1)
576873def9SMichael Ellerman	li	r18, 0x1818
586873def9SMichael Ellerman	std	r18, -200(%r1)
596873def9SMichael Ellerman	li	r19, 0x1919
606873def9SMichael Ellerman	std	r19, -208(%r1)
616873def9SMichael Ellerman	li	r20, 0x2020
626873def9SMichael Ellerman	std	r20, -216(%r1)
636873def9SMichael Ellerman	li	r21, 0x2121
646873def9SMichael Ellerman	std	r21, -224(%r1)
656873def9SMichael Ellerman	li	r22, 0x2222
666873def9SMichael Ellerman	std	r22, -232(%r1)
676873def9SMichael Ellerman	li	r23, 0x2323
686873def9SMichael Ellerman	std	r23, -240(%r1)
696873def9SMichael Ellerman	li	r24, 0x2424
706873def9SMichael Ellerman	std	r24, -248(%r1)
716873def9SMichael Ellerman	li	r25, 0x2525
726873def9SMichael Ellerman	std	r25, -256(%r1)
736873def9SMichael Ellerman	li	r26, 0x2626
746873def9SMichael Ellerman	std	r26, -264(%r1)
756873def9SMichael Ellerman	li	r27, 0x2727
766873def9SMichael Ellerman	std	r27, -272(%r1)
776873def9SMichael Ellerman	li	r28, 0x2828
786873def9SMichael Ellerman	std	r28, -280(%r1)
796873def9SMichael Ellerman	li	r29, 0x2929
806873def9SMichael Ellerman	std	r29, -288(%r1)
816873def9SMichael Ellerman	li	r30, 0x3030
826873def9SMichael Ellerman	li	r31, 0x3131
836873def9SMichael Ellerman
846873def9SMichael Ellerman	li	r3, 0
856873def9SMichael Ellerman0:	addi	r3, r3, 1
866873def9SMichael Ellerman	cmpwi	r3, 100
876873def9SMichael Ellerman	blt	0b
886873def9SMichael Ellerman
896873def9SMichael Ellerman	/* Return 1 (fail) unless we get through all the checks */
906873def9SMichael Ellerman	li	r3, 1
916873def9SMichael Ellerman
926873def9SMichael Ellerman	/* Check none of our registers have been corrupted */
936873def9SMichael Ellerman	cmpwi	r4,  0x4040
946873def9SMichael Ellerman	bne	1f
956873def9SMichael Ellerman	cmpwi	r5,  0x5050
966873def9SMichael Ellerman	bne	1f
976873def9SMichael Ellerman	cmpwi	r6,  0x6060
986873def9SMichael Ellerman	bne	1f
996873def9SMichael Ellerman	cmpwi	r7,  0x7070
1006873def9SMichael Ellerman	bne	1f
1016873def9SMichael Ellerman	cmpwi	r8,  0x0808
1026873def9SMichael Ellerman	bne	1f
1036873def9SMichael Ellerman	cmpwi	r9,  0x0909
1046873def9SMichael Ellerman	bne	1f
1056873def9SMichael Ellerman	cmpwi	r10, 0x1010
1066873def9SMichael Ellerman	bne	1f
1076873def9SMichael Ellerman	cmpwi	r11, 0x1111
1086873def9SMichael Ellerman	bne	1f
1096873def9SMichael Ellerman	cmpwi	r14, 0x1414
1106873def9SMichael Ellerman	bne	1f
1116873def9SMichael Ellerman	cmpwi	r15, 0x1515
1126873def9SMichael Ellerman	bne	1f
1136873def9SMichael Ellerman	cmpwi	r16, 0x1616
1146873def9SMichael Ellerman	bne	1f
1156873def9SMichael Ellerman	cmpwi	r17, 0x1717
1166873def9SMichael Ellerman	bne	1f
1176873def9SMichael Ellerman	cmpwi	r18, 0x1818
1186873def9SMichael Ellerman	bne	1f
1196873def9SMichael Ellerman	cmpwi	r19, 0x1919
1206873def9SMichael Ellerman	bne	1f
1216873def9SMichael Ellerman	cmpwi	r20, 0x2020
1226873def9SMichael Ellerman	bne	1f
1236873def9SMichael Ellerman	cmpwi	r21, 0x2121
1246873def9SMichael Ellerman	bne	1f
1256873def9SMichael Ellerman	cmpwi	r22, 0x2222
1266873def9SMichael Ellerman	bne	1f
1276873def9SMichael Ellerman	cmpwi	r23, 0x2323
1286873def9SMichael Ellerman	bne	1f
1296873def9SMichael Ellerman	cmpwi	r24, 0x2424
1306873def9SMichael Ellerman	bne	1f
1316873def9SMichael Ellerman	cmpwi	r25, 0x2525
1326873def9SMichael Ellerman	bne	1f
1336873def9SMichael Ellerman	cmpwi	r26, 0x2626
1346873def9SMichael Ellerman	bne	1f
1356873def9SMichael Ellerman	cmpwi	r27, 0x2727
1366873def9SMichael Ellerman	bne	1f
1376873def9SMichael Ellerman	cmpwi	r28, 0x2828
1386873def9SMichael Ellerman	bne	1f
1396873def9SMichael Ellerman	cmpwi	r29, 0x2929
1406873def9SMichael Ellerman	bne	1f
1416873def9SMichael Ellerman	cmpwi	r30, 0x3030
1426873def9SMichael Ellerman	bne	1f
1436873def9SMichael Ellerman	cmpwi	r31, 0x3131
1446873def9SMichael Ellerman	bne	1f
1456873def9SMichael Ellerman
1466873def9SMichael Ellerman	/* Load junk into all our registers before we reload them from the stack. */
1476873def9SMichael Ellerman	li	r3,  0xde
1486873def9SMichael Ellerman	li	r4,  0xad
1496873def9SMichael Ellerman	li	r5,  0xbe
1506873def9SMichael Ellerman	li	r6,  0xef
1516873def9SMichael Ellerman	li	r7,  0xde
1526873def9SMichael Ellerman	li	r8,  0xad
1536873def9SMichael Ellerman	li	r9,  0xbe
1546873def9SMichael Ellerman	li	r10, 0xef
1556873def9SMichael Ellerman	li	r11, 0xde
1566873def9SMichael Ellerman	li	r14, 0xad
1576873def9SMichael Ellerman	li	r15, 0xbe
1586873def9SMichael Ellerman	li	r16, 0xef
1596873def9SMichael Ellerman	li	r17, 0xde
1606873def9SMichael Ellerman	li	r18, 0xad
1616873def9SMichael Ellerman	li	r19, 0xbe
1626873def9SMichael Ellerman	li	r20, 0xef
1636873def9SMichael Ellerman	li	r21, 0xde
1646873def9SMichael Ellerman	li	r22, 0xad
1656873def9SMichael Ellerman	li	r23, 0xbe
1666873def9SMichael Ellerman	li	r24, 0xef
1676873def9SMichael Ellerman	li	r25, 0xde
1686873def9SMichael Ellerman	li	r26, 0xad
1696873def9SMichael Ellerman	li	r27, 0xbe
1706873def9SMichael Ellerman	li	r28, 0xef
1716873def9SMichael Ellerman	li	r29, 0xdd
1726873def9SMichael Ellerman
1736873def9SMichael Ellerman	ld	r3,	-96(%r1)
1746873def9SMichael Ellerman	cmpwi	r3,  0x3030
1756873def9SMichael Ellerman	bne	1f
1766873def9SMichael Ellerman	ld	r4,	-104(%r1)
1776873def9SMichael Ellerman	cmpwi	r4,  0x4040
1786873def9SMichael Ellerman	bne	1f
1796873def9SMichael Ellerman	ld	r5,	-112(%r1)
1806873def9SMichael Ellerman	cmpwi	r5,  0x5050
1816873def9SMichael Ellerman	bne	1f
1826873def9SMichael Ellerman	ld	r6,	-120(%r1)
1836873def9SMichael Ellerman	cmpwi	r6,  0x6060
1846873def9SMichael Ellerman	bne	1f
1856873def9SMichael Ellerman	ld	r7,	-128(%r1)
1866873def9SMichael Ellerman	cmpwi	r7,  0x7070
1876873def9SMichael Ellerman	bne	1f
1886873def9SMichael Ellerman	ld	r8,	-136(%r1)
1896873def9SMichael Ellerman	cmpwi	r8,  0x0808
1906873def9SMichael Ellerman	bne	1f
1916873def9SMichael Ellerman	ld	r9,	-144(%r1)
1926873def9SMichael Ellerman	cmpwi	r9,  0x0909
1936873def9SMichael Ellerman	bne	1f
1946873def9SMichael Ellerman	ld	r10, -152(%r1)
1956873def9SMichael Ellerman	cmpwi	r10, 0x1010
1966873def9SMichael Ellerman	bne	1f
1976873def9SMichael Ellerman	ld	r11, -160(%r1)
1986873def9SMichael Ellerman	cmpwi	r11, 0x1111
1996873def9SMichael Ellerman	bne	1f
2006873def9SMichael Ellerman	ld	r14, -168(%r1)
2016873def9SMichael Ellerman	cmpwi	r14, 0x1414
2026873def9SMichael Ellerman	bne	1f
2036873def9SMichael Ellerman	ld	r15, -176(%r1)
2046873def9SMichael Ellerman	cmpwi	r15, 0x1515
2056873def9SMichael Ellerman	bne	1f
2066873def9SMichael Ellerman	ld	r16, -184(%r1)
2076873def9SMichael Ellerman	cmpwi	r16, 0x1616
2086873def9SMichael Ellerman	bne	1f
2096873def9SMichael Ellerman	ld	r17, -192(%r1)
2106873def9SMichael Ellerman	cmpwi	r17, 0x1717
2116873def9SMichael Ellerman	bne	1f
2126873def9SMichael Ellerman	ld	r18, -200(%r1)
2136873def9SMichael Ellerman	cmpwi	r18, 0x1818
2146873def9SMichael Ellerman	bne	1f
2156873def9SMichael Ellerman	ld	r19, -208(%r1)
2166873def9SMichael Ellerman	cmpwi	r19, 0x1919
2176873def9SMichael Ellerman	bne	1f
2186873def9SMichael Ellerman	ld	r20, -216(%r1)
2196873def9SMichael Ellerman	cmpwi	r20, 0x2020
2206873def9SMichael Ellerman	bne	1f
2216873def9SMichael Ellerman	ld	r21, -224(%r1)
2226873def9SMichael Ellerman	cmpwi	r21, 0x2121
2236873def9SMichael Ellerman	bne	1f
2246873def9SMichael Ellerman	ld	r22, -232(%r1)
2256873def9SMichael Ellerman	cmpwi	r22, 0x2222
2266873def9SMichael Ellerman	bne	1f
2276873def9SMichael Ellerman	ld	r23, -240(%r1)
2286873def9SMichael Ellerman	cmpwi	r23, 0x2323
2296873def9SMichael Ellerman	bne	1f
2306873def9SMichael Ellerman	ld	r24, -248(%r1)
2316873def9SMichael Ellerman	cmpwi	r24, 0x2424
2326873def9SMichael Ellerman	bne	1f
2336873def9SMichael Ellerman	ld	r25, -256(%r1)
2346873def9SMichael Ellerman	cmpwi	r25, 0x2525
2356873def9SMichael Ellerman	bne	1f
2366873def9SMichael Ellerman	ld	r26, -264(%r1)
2376873def9SMichael Ellerman	cmpwi	r26, 0x2626
2386873def9SMichael Ellerman	bne	1f
2396873def9SMichael Ellerman	ld	r27, -272(%r1)
2406873def9SMichael Ellerman	cmpwi	r27, 0x2727
2416873def9SMichael Ellerman	bne	1f
2426873def9SMichael Ellerman	ld	r28, -280(%r1)
2436873def9SMichael Ellerman	cmpwi	r28, 0x2828
2446873def9SMichael Ellerman	bne	1f
2456873def9SMichael Ellerman	ld	r29, -288(%r1)
2466873def9SMichael Ellerman	cmpwi	r29, 0x2929
2476873def9SMichael Ellerman	bne	1f
2486873def9SMichael Ellerman
2496873def9SMichael Ellerman	/* Load 0 (success) to return */
2506873def9SMichael Ellerman	li	r3, 0
2516873def9SMichael Ellerman
2526873def9SMichael Ellerman1:	ld	r14, 160(%r1)
2536873def9SMichael Ellerman	ld	r15, 152(%r1)
2546873def9SMichael Ellerman	ld	r16, 144(%r1)
2556873def9SMichael Ellerman	ld	r17, 136(%r1)
2566873def9SMichael Ellerman	ld	r18, 128(%r1)
2576873def9SMichael Ellerman	ld	r19, 120(%r1)
2586873def9SMichael Ellerman	ld	r20, 112(%r1)
2596873def9SMichael Ellerman	ld	r21, 104(%r1)
2606873def9SMichael Ellerman	ld	r22, 96(%r1)
2616873def9SMichael Ellerman	ld	r23, 88(%r1)
2626873def9SMichael Ellerman	ld	r24, 80(%r1)
2636873def9SMichael Ellerman	ld	r25, 72(%r1)
2646873def9SMichael Ellerman	ld	r26, 64(%r1)
2656873def9SMichael Ellerman	ld	r27, 56(%r1)
2666873def9SMichael Ellerman	ld	r28, 48(%r1)
2676873def9SMichael Ellerman	ld	r29, 40(%r1)
2686873def9SMichael Ellerman	ld	r30, 32(%r1)
2696873def9SMichael Ellerman	ld	r31, 24(%r1)
2706873def9SMichael Ellerman	addi	%r1, %r1, 168
2716873def9SMichael Ellerman	blr
272