Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  * Copyright 2014, Michael Ellerman, IBM Corp.
0004  */
0005 
0006 #include <ppc-asm.h>
0007 
0008     .text
0009 
0010 FUNC_START(core_busy_loop)
0011     stdu    %r1, -168(%r1)
0012     std r14, 160(%r1)
0013     std r15, 152(%r1)
0014     std r16, 144(%r1)
0015     std r17, 136(%r1)
0016     std r18, 128(%r1)
0017     std r19, 120(%r1)
0018     std r20, 112(%r1)
0019     std r21, 104(%r1)
0020     std r22, 96(%r1)
0021     std r23, 88(%r1)
0022     std r24, 80(%r1)
0023     std r25, 72(%r1)
0024     std r26, 64(%r1)
0025     std r27, 56(%r1)
0026     std r28, 48(%r1)
0027     std r29, 40(%r1)
0028     std r30, 32(%r1)
0029     std r31, 24(%r1)
0030 
0031     li   r3, 0x3030
0032     std  r3, -96(%r1)
0033     li   r4, 0x4040
0034     std  r4, -104(%r1)
0035     li   r5, 0x5050
0036     std  r5, -112(%r1)
0037     li   r6, 0x6060
0038     std  r6, -120(%r1)
0039     li   r7, 0x7070
0040     std  r7, -128(%r1)
0041     li   r8, 0x0808
0042     std  r8, -136(%r1)
0043     li   r9, 0x0909
0044     std  r9, -144(%r1)
0045     li  r10, 0x1010
0046     std r10, -152(%r1)
0047     li  r11, 0x1111
0048     std r11, -160(%r1)
0049     li  r14, 0x1414
0050     std r14, -168(%r1)
0051     li  r15, 0x1515
0052     std r15, -176(%r1)
0053     li  r16, 0x1616
0054     std r16, -184(%r1)
0055     li  r17, 0x1717
0056     std r17, -192(%r1)
0057     li  r18, 0x1818
0058     std r18, -200(%r1)
0059     li  r19, 0x1919
0060     std r19, -208(%r1)
0061     li  r20, 0x2020
0062     std r20, -216(%r1)
0063     li  r21, 0x2121
0064     std r21, -224(%r1)
0065     li  r22, 0x2222
0066     std r22, -232(%r1)
0067     li  r23, 0x2323
0068     std r23, -240(%r1)
0069     li  r24, 0x2424
0070     std r24, -248(%r1)
0071     li  r25, 0x2525
0072     std r25, -256(%r1)
0073     li  r26, 0x2626
0074     std r26, -264(%r1)
0075     li  r27, 0x2727
0076     std r27, -272(%r1)
0077     li  r28, 0x2828
0078     std r28, -280(%r1)
0079     li  r29, 0x2929
0080     std r29, -288(%r1)
0081     li  r30, 0x3030
0082     li  r31, 0x3131
0083 
0084     li  r3, 0
0085 0:  addi    r3, r3, 1
0086     cmpwi   r3, 100
0087     blt 0b
0088 
0089     /* Return 1 (fail) unless we get through all the checks */
0090     li  r3, 1
0091 
0092     /* Check none of our registers have been corrupted */
0093     cmpwi   r4,  0x4040
0094     bne 1f
0095     cmpwi   r5,  0x5050
0096     bne 1f
0097     cmpwi   r6,  0x6060
0098     bne 1f
0099     cmpwi   r7,  0x7070
0100     bne 1f
0101     cmpwi   r8,  0x0808
0102     bne 1f
0103     cmpwi   r9,  0x0909
0104     bne 1f
0105     cmpwi   r10, 0x1010
0106     bne 1f
0107     cmpwi   r11, 0x1111
0108     bne 1f
0109     cmpwi   r14, 0x1414
0110     bne 1f
0111     cmpwi   r15, 0x1515
0112     bne 1f
0113     cmpwi   r16, 0x1616
0114     bne 1f
0115     cmpwi   r17, 0x1717
0116     bne 1f
0117     cmpwi   r18, 0x1818
0118     bne 1f
0119     cmpwi   r19, 0x1919
0120     bne 1f
0121     cmpwi   r20, 0x2020
0122     bne 1f
0123     cmpwi   r21, 0x2121
0124     bne 1f
0125     cmpwi   r22, 0x2222
0126     bne 1f
0127     cmpwi   r23, 0x2323
0128     bne 1f
0129     cmpwi   r24, 0x2424
0130     bne 1f
0131     cmpwi   r25, 0x2525
0132     bne 1f
0133     cmpwi   r26, 0x2626
0134     bne 1f
0135     cmpwi   r27, 0x2727
0136     bne 1f
0137     cmpwi   r28, 0x2828
0138     bne 1f
0139     cmpwi   r29, 0x2929
0140     bne 1f
0141     cmpwi   r30, 0x3030
0142     bne 1f
0143     cmpwi   r31, 0x3131
0144     bne 1f
0145 
0146     /* Load junk into all our registers before we reload them from the stack. */
0147     li  r3,  0xde
0148     li  r4,  0xad
0149     li  r5,  0xbe
0150     li  r6,  0xef
0151     li  r7,  0xde
0152     li  r8,  0xad
0153     li  r9,  0xbe
0154     li  r10, 0xef
0155     li  r11, 0xde
0156     li  r14, 0xad
0157     li  r15, 0xbe
0158     li  r16, 0xef
0159     li  r17, 0xde
0160     li  r18, 0xad
0161     li  r19, 0xbe
0162     li  r20, 0xef
0163     li  r21, 0xde
0164     li  r22, 0xad
0165     li  r23, 0xbe
0166     li  r24, 0xef
0167     li  r25, 0xde
0168     li  r26, 0xad
0169     li  r27, 0xbe
0170     li  r28, 0xef
0171     li  r29, 0xdd
0172 
0173     ld  r3, -96(%r1)
0174     cmpwi   r3,  0x3030
0175     bne 1f
0176     ld  r4, -104(%r1)
0177     cmpwi   r4,  0x4040
0178     bne 1f
0179     ld  r5, -112(%r1)
0180     cmpwi   r5,  0x5050
0181     bne 1f
0182     ld  r6, -120(%r1)
0183     cmpwi   r6,  0x6060
0184     bne 1f
0185     ld  r7, -128(%r1)
0186     cmpwi   r7,  0x7070
0187     bne 1f
0188     ld  r8, -136(%r1)
0189     cmpwi   r8,  0x0808
0190     bne 1f
0191     ld  r9, -144(%r1)
0192     cmpwi   r9,  0x0909
0193     bne 1f
0194     ld  r10, -152(%r1)
0195     cmpwi   r10, 0x1010
0196     bne 1f
0197     ld  r11, -160(%r1)
0198     cmpwi   r11, 0x1111
0199     bne 1f
0200     ld  r14, -168(%r1)
0201     cmpwi   r14, 0x1414
0202     bne 1f
0203     ld  r15, -176(%r1)
0204     cmpwi   r15, 0x1515
0205     bne 1f
0206     ld  r16, -184(%r1)
0207     cmpwi   r16, 0x1616
0208     bne 1f
0209     ld  r17, -192(%r1)
0210     cmpwi   r17, 0x1717
0211     bne 1f
0212     ld  r18, -200(%r1)
0213     cmpwi   r18, 0x1818
0214     bne 1f
0215     ld  r19, -208(%r1)
0216     cmpwi   r19, 0x1919
0217     bne 1f
0218     ld  r20, -216(%r1)
0219     cmpwi   r20, 0x2020
0220     bne 1f
0221     ld  r21, -224(%r1)
0222     cmpwi   r21, 0x2121
0223     bne 1f
0224     ld  r22, -232(%r1)
0225     cmpwi   r22, 0x2222
0226     bne 1f
0227     ld  r23, -240(%r1)
0228     cmpwi   r23, 0x2323
0229     bne 1f
0230     ld  r24, -248(%r1)
0231     cmpwi   r24, 0x2424
0232     bne 1f
0233     ld  r25, -256(%r1)
0234     cmpwi   r25, 0x2525
0235     bne 1f
0236     ld  r26, -264(%r1)
0237     cmpwi   r26, 0x2626
0238     bne 1f
0239     ld  r27, -272(%r1)
0240     cmpwi   r27, 0x2727
0241     bne 1f
0242     ld  r28, -280(%r1)
0243     cmpwi   r28, 0x2828
0244     bne 1f
0245     ld  r29, -288(%r1)
0246     cmpwi   r29, 0x2929
0247     bne 1f
0248 
0249     /* Load 0 (success) to return */
0250     li  r3, 0
0251 
0252 1:  ld  r14, 160(%r1)
0253     ld  r15, 152(%r1)
0254     ld  r16, 144(%r1)
0255     ld  r17, 136(%r1)
0256     ld  r18, 128(%r1)
0257     ld  r19, 120(%r1)
0258     ld  r20, 112(%r1)
0259     ld  r21, 104(%r1)
0260     ld  r22, 96(%r1)
0261     ld  r23, 88(%r1)
0262     ld  r24, 80(%r1)
0263     ld  r25, 72(%r1)
0264     ld  r26, 64(%r1)
0265     ld  r27, 56(%r1)
0266     ld  r28, 48(%r1)
0267     ld  r29, 40(%r1)
0268     ld  r30, 32(%r1)
0269     ld  r31, 24(%r1)
0270     addi    %r1, %r1, 168
0271     blr