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