Loading...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 | /* SPDX-License-Identifier: GPL-2.0-only */ /* * Copyright 2014, Michael Ellerman, IBM Corp. */ #include <ppc-asm.h> .text FUNC_START(core_busy_loop) stdu %r1, -168(%r1) std r14, 160(%r1) std r15, 152(%r1) std r16, 144(%r1) std r17, 136(%r1) std r18, 128(%r1) std r19, 120(%r1) std r20, 112(%r1) std r21, 104(%r1) std r22, 96(%r1) std r23, 88(%r1) std r24, 80(%r1) std r25, 72(%r1) std r26, 64(%r1) std r27, 56(%r1) std r28, 48(%r1) std r29, 40(%r1) std r30, 32(%r1) std r31, 24(%r1) li r3, 0x3030 std r3, -96(%r1) li r4, 0x4040 std r4, -104(%r1) li r5, 0x5050 std r5, -112(%r1) li r6, 0x6060 std r6, -120(%r1) li r7, 0x7070 std r7, -128(%r1) li r8, 0x0808 std r8, -136(%r1) li r9, 0x0909 std r9, -144(%r1) li r10, 0x1010 std r10, -152(%r1) li r11, 0x1111 std r11, -160(%r1) li r14, 0x1414 std r14, -168(%r1) li r15, 0x1515 std r15, -176(%r1) li r16, 0x1616 std r16, -184(%r1) li r17, 0x1717 std r17, -192(%r1) li r18, 0x1818 std r18, -200(%r1) li r19, 0x1919 std r19, -208(%r1) li r20, 0x2020 std r20, -216(%r1) li r21, 0x2121 std r21, -224(%r1) li r22, 0x2222 std r22, -232(%r1) li r23, 0x2323 std r23, -240(%r1) li r24, 0x2424 std r24, -248(%r1) li r25, 0x2525 std r25, -256(%r1) li r26, 0x2626 std r26, -264(%r1) li r27, 0x2727 std r27, -272(%r1) li r28, 0x2828 std r28, -280(%r1) li r29, 0x2929 std r29, -288(%r1) li r30, 0x3030 li r31, 0x3131 li r3, 0 0: addi r3, r3, 1 cmpwi r3, 100 blt 0b /* Return 1 (fail) unless we get through all the checks */ li r3, 1 /* Check none of our registers have been corrupted */ cmpwi r4, 0x4040 bne 1f cmpwi r5, 0x5050 bne 1f cmpwi r6, 0x6060 bne 1f cmpwi r7, 0x7070 bne 1f cmpwi r8, 0x0808 bne 1f cmpwi r9, 0x0909 bne 1f cmpwi r10, 0x1010 bne 1f cmpwi r11, 0x1111 bne 1f cmpwi r14, 0x1414 bne 1f cmpwi r15, 0x1515 bne 1f cmpwi r16, 0x1616 bne 1f cmpwi r17, 0x1717 bne 1f cmpwi r18, 0x1818 bne 1f cmpwi r19, 0x1919 bne 1f cmpwi r20, 0x2020 bne 1f cmpwi r21, 0x2121 bne 1f cmpwi r22, 0x2222 bne 1f cmpwi r23, 0x2323 bne 1f cmpwi r24, 0x2424 bne 1f cmpwi r25, 0x2525 bne 1f cmpwi r26, 0x2626 bne 1f cmpwi r27, 0x2727 bne 1f cmpwi r28, 0x2828 bne 1f cmpwi r29, 0x2929 bne 1f cmpwi r30, 0x3030 bne 1f cmpwi r31, 0x3131 bne 1f /* Load junk into all our registers before we reload them from the stack. */ li r3, 0xde li r4, 0xad li r5, 0xbe li r6, 0xef li r7, 0xde li r8, 0xad li r9, 0xbe li r10, 0xef li r11, 0xde li r14, 0xad li r15, 0xbe li r16, 0xef li r17, 0xde li r18, 0xad li r19, 0xbe li r20, 0xef li r21, 0xde li r22, 0xad li r23, 0xbe li r24, 0xef li r25, 0xde li r26, 0xad li r27, 0xbe li r28, 0xef li r29, 0xdd ld r3, -96(%r1) cmpwi r3, 0x3030 bne 1f ld r4, -104(%r1) cmpwi r4, 0x4040 bne 1f ld r5, -112(%r1) cmpwi r5, 0x5050 bne 1f ld r6, -120(%r1) cmpwi r6, 0x6060 bne 1f ld r7, -128(%r1) cmpwi r7, 0x7070 bne 1f ld r8, -136(%r1) cmpwi r8, 0x0808 bne 1f ld r9, -144(%r1) cmpwi r9, 0x0909 bne 1f ld r10, -152(%r1) cmpwi r10, 0x1010 bne 1f ld r11, -160(%r1) cmpwi r11, 0x1111 bne 1f ld r14, -168(%r1) cmpwi r14, 0x1414 bne 1f ld r15, -176(%r1) cmpwi r15, 0x1515 bne 1f ld r16, -184(%r1) cmpwi r16, 0x1616 bne 1f ld r17, -192(%r1) cmpwi r17, 0x1717 bne 1f ld r18, -200(%r1) cmpwi r18, 0x1818 bne 1f ld r19, -208(%r1) cmpwi r19, 0x1919 bne 1f ld r20, -216(%r1) cmpwi r20, 0x2020 bne 1f ld r21, -224(%r1) cmpwi r21, 0x2121 bne 1f ld r22, -232(%r1) cmpwi r22, 0x2222 bne 1f ld r23, -240(%r1) cmpwi r23, 0x2323 bne 1f ld r24, -248(%r1) cmpwi r24, 0x2424 bne 1f ld r25, -256(%r1) cmpwi r25, 0x2525 bne 1f ld r26, -264(%r1) cmpwi r26, 0x2626 bne 1f ld r27, -272(%r1) cmpwi r27, 0x2727 bne 1f ld r28, -280(%r1) cmpwi r28, 0x2828 bne 1f ld r29, -288(%r1) cmpwi r29, 0x2929 bne 1f /* Load 0 (success) to return */ li r3, 0 1: ld r14, 160(%r1) ld r15, 152(%r1) ld r16, 144(%r1) ld r17, 136(%r1) ld r18, 128(%r1) ld r19, 120(%r1) ld r20, 112(%r1) ld r21, 104(%r1) ld r22, 96(%r1) ld r23, 88(%r1) ld r24, 80(%r1) ld r25, 72(%r1) ld r26, 64(%r1) ld r27, 56(%r1) ld r28, 48(%r1) ld r29, 40(%r1) ld r30, 32(%r1) ld r31, 24(%r1) addi %r1, %r1, 168 blr |