Kumar Gala | da3de6d | 2008-06-13 07:20:58 +1000 | [diff] [blame] | 1 | /* |
| 2 | * Special support for eabi and SVR4 |
| 3 | * |
| 4 | * Copyright (C) 1995, 1996, 1998, 2000, 2001 Free Software Foundation, Inc. |
| 5 | * Copyright 2008 Freescale Semiconductor, Inc. |
| 6 | * Written By Michael Meissner |
| 7 | * |
| 8 | * Based on gcc/config/rs6000/crtsavres.asm from gcc |
Stephen Rothwell | 7fca5dc | 2010-06-29 20:08:42 +0000 | [diff] [blame] | 9 | * 64 bit additions from reading the PPC elf64abi document. |
Kumar Gala | da3de6d | 2008-06-13 07:20:58 +1000 | [diff] [blame] | 10 | * |
| 11 | * This file is free software; you can redistribute it and/or modify it |
| 12 | * under the terms of the GNU General Public License as published by the |
| 13 | * Free Software Foundation; either version 2, or (at your option) any |
| 14 | * later version. |
| 15 | * |
| 16 | * In addition to the permissions in the GNU General Public License, the |
| 17 | * Free Software Foundation gives you unlimited permission to link the |
| 18 | * compiled version of this file with other programs, and to distribute |
| 19 | * those programs without any restriction coming from the use of this |
| 20 | * file. (The General Public License restrictions do apply in other |
| 21 | * respects; for example, they cover modification of the file, and |
| 22 | * distribution when not linked into another program.) |
| 23 | * |
| 24 | * This file is distributed in the hope that it will be useful, but |
| 25 | * WITHOUT ANY WARRANTY; without even the implied warranty of |
| 26 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 27 | * General Public License for more details. |
| 28 | * |
| 29 | * You should have received a copy of the GNU General Public License |
| 30 | * along with this program; see the file COPYING. If not, write to |
| 31 | * the Free Software Foundation, 51 Franklin Street, Fifth Floor, |
| 32 | * Boston, MA 02110-1301, USA. |
| 33 | * |
| 34 | * As a special exception, if you link this library with files |
| 35 | * compiled with GCC to produce an executable, this does not cause |
| 36 | * the resulting executable to be covered by the GNU General Public License. |
| 37 | * This exception does not however invalidate any other reasons why |
| 38 | * the executable file might be covered by the GNU General Public License. |
| 39 | */ |
| 40 | |
| 41 | #include <asm/ppc_asm.h> |
| 42 | |
| 43 | .file "crtsavres.S" |
Kumar Gala | da3de6d | 2008-06-13 07:20:58 +1000 | [diff] [blame] | 44 | |
| 45 | #ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE |
| 46 | |
Stephen Rothwell | 7fca5dc | 2010-06-29 20:08:42 +0000 | [diff] [blame] | 47 | #ifndef CONFIG_PPC64 |
| 48 | |
Stephen Rothwell | 1d5a436 | 2012-07-05 21:09:40 +0000 | [diff] [blame] | 49 | .section ".text" |
| 50 | |
Kumar Gala | da3de6d | 2008-06-13 07:20:58 +1000 | [diff] [blame] | 51 | /* Routines for saving integer registers, called by the compiler. */ |
| 52 | /* Called with r11 pointing to the stack header word of the caller of the */ |
| 53 | /* function, just beyond the end of the integer save area. */ |
| 54 | |
| 55 | _GLOBAL(_savegpr_14) |
| 56 | _GLOBAL(_save32gpr_14) |
| 57 | stw 14,-72(11) /* save gp registers */ |
| 58 | _GLOBAL(_savegpr_15) |
| 59 | _GLOBAL(_save32gpr_15) |
| 60 | stw 15,-68(11) |
| 61 | _GLOBAL(_savegpr_16) |
| 62 | _GLOBAL(_save32gpr_16) |
| 63 | stw 16,-64(11) |
| 64 | _GLOBAL(_savegpr_17) |
| 65 | _GLOBAL(_save32gpr_17) |
| 66 | stw 17,-60(11) |
| 67 | _GLOBAL(_savegpr_18) |
| 68 | _GLOBAL(_save32gpr_18) |
| 69 | stw 18,-56(11) |
| 70 | _GLOBAL(_savegpr_19) |
| 71 | _GLOBAL(_save32gpr_19) |
| 72 | stw 19,-52(11) |
| 73 | _GLOBAL(_savegpr_20) |
| 74 | _GLOBAL(_save32gpr_20) |
| 75 | stw 20,-48(11) |
| 76 | _GLOBAL(_savegpr_21) |
| 77 | _GLOBAL(_save32gpr_21) |
| 78 | stw 21,-44(11) |
| 79 | _GLOBAL(_savegpr_22) |
| 80 | _GLOBAL(_save32gpr_22) |
| 81 | stw 22,-40(11) |
| 82 | _GLOBAL(_savegpr_23) |
| 83 | _GLOBAL(_save32gpr_23) |
| 84 | stw 23,-36(11) |
| 85 | _GLOBAL(_savegpr_24) |
| 86 | _GLOBAL(_save32gpr_24) |
| 87 | stw 24,-32(11) |
| 88 | _GLOBAL(_savegpr_25) |
| 89 | _GLOBAL(_save32gpr_25) |
| 90 | stw 25,-28(11) |
| 91 | _GLOBAL(_savegpr_26) |
| 92 | _GLOBAL(_save32gpr_26) |
| 93 | stw 26,-24(11) |
| 94 | _GLOBAL(_savegpr_27) |
| 95 | _GLOBAL(_save32gpr_27) |
| 96 | stw 27,-20(11) |
| 97 | _GLOBAL(_savegpr_28) |
| 98 | _GLOBAL(_save32gpr_28) |
| 99 | stw 28,-16(11) |
| 100 | _GLOBAL(_savegpr_29) |
| 101 | _GLOBAL(_save32gpr_29) |
| 102 | stw 29,-12(11) |
| 103 | _GLOBAL(_savegpr_30) |
| 104 | _GLOBAL(_save32gpr_30) |
| 105 | stw 30,-8(11) |
| 106 | _GLOBAL(_savegpr_31) |
| 107 | _GLOBAL(_save32gpr_31) |
| 108 | stw 31,-4(11) |
| 109 | blr |
| 110 | |
| 111 | /* Routines for restoring integer registers, called by the compiler. */ |
| 112 | /* Called with r11 pointing to the stack header word of the caller of the */ |
| 113 | /* function, just beyond the end of the integer restore area. */ |
| 114 | |
| 115 | _GLOBAL(_restgpr_14) |
| 116 | _GLOBAL(_rest32gpr_14) |
| 117 | lwz 14,-72(11) /* restore gp registers */ |
| 118 | _GLOBAL(_restgpr_15) |
| 119 | _GLOBAL(_rest32gpr_15) |
| 120 | lwz 15,-68(11) |
| 121 | _GLOBAL(_restgpr_16) |
| 122 | _GLOBAL(_rest32gpr_16) |
| 123 | lwz 16,-64(11) |
| 124 | _GLOBAL(_restgpr_17) |
| 125 | _GLOBAL(_rest32gpr_17) |
| 126 | lwz 17,-60(11) |
| 127 | _GLOBAL(_restgpr_18) |
| 128 | _GLOBAL(_rest32gpr_18) |
| 129 | lwz 18,-56(11) |
| 130 | _GLOBAL(_restgpr_19) |
| 131 | _GLOBAL(_rest32gpr_19) |
| 132 | lwz 19,-52(11) |
| 133 | _GLOBAL(_restgpr_20) |
| 134 | _GLOBAL(_rest32gpr_20) |
| 135 | lwz 20,-48(11) |
| 136 | _GLOBAL(_restgpr_21) |
| 137 | _GLOBAL(_rest32gpr_21) |
| 138 | lwz 21,-44(11) |
| 139 | _GLOBAL(_restgpr_22) |
| 140 | _GLOBAL(_rest32gpr_22) |
| 141 | lwz 22,-40(11) |
| 142 | _GLOBAL(_restgpr_23) |
| 143 | _GLOBAL(_rest32gpr_23) |
| 144 | lwz 23,-36(11) |
| 145 | _GLOBAL(_restgpr_24) |
| 146 | _GLOBAL(_rest32gpr_24) |
| 147 | lwz 24,-32(11) |
| 148 | _GLOBAL(_restgpr_25) |
| 149 | _GLOBAL(_rest32gpr_25) |
| 150 | lwz 25,-28(11) |
| 151 | _GLOBAL(_restgpr_26) |
| 152 | _GLOBAL(_rest32gpr_26) |
| 153 | lwz 26,-24(11) |
| 154 | _GLOBAL(_restgpr_27) |
| 155 | _GLOBAL(_rest32gpr_27) |
| 156 | lwz 27,-20(11) |
| 157 | _GLOBAL(_restgpr_28) |
| 158 | _GLOBAL(_rest32gpr_28) |
| 159 | lwz 28,-16(11) |
| 160 | _GLOBAL(_restgpr_29) |
| 161 | _GLOBAL(_rest32gpr_29) |
| 162 | lwz 29,-12(11) |
| 163 | _GLOBAL(_restgpr_30) |
| 164 | _GLOBAL(_rest32gpr_30) |
| 165 | lwz 30,-8(11) |
| 166 | _GLOBAL(_restgpr_31) |
| 167 | _GLOBAL(_rest32gpr_31) |
| 168 | lwz 31,-4(11) |
| 169 | blr |
| 170 | |
| 171 | /* Routines for restoring integer registers, called by the compiler. */ |
| 172 | /* Called with r11 pointing to the stack header word of the caller of the */ |
| 173 | /* function, just beyond the end of the integer restore area. */ |
| 174 | |
| 175 | _GLOBAL(_restgpr_14_x) |
| 176 | _GLOBAL(_rest32gpr_14_x) |
| 177 | lwz 14,-72(11) /* restore gp registers */ |
| 178 | _GLOBAL(_restgpr_15_x) |
| 179 | _GLOBAL(_rest32gpr_15_x) |
| 180 | lwz 15,-68(11) |
| 181 | _GLOBAL(_restgpr_16_x) |
| 182 | _GLOBAL(_rest32gpr_16_x) |
| 183 | lwz 16,-64(11) |
| 184 | _GLOBAL(_restgpr_17_x) |
| 185 | _GLOBAL(_rest32gpr_17_x) |
| 186 | lwz 17,-60(11) |
| 187 | _GLOBAL(_restgpr_18_x) |
| 188 | _GLOBAL(_rest32gpr_18_x) |
| 189 | lwz 18,-56(11) |
| 190 | _GLOBAL(_restgpr_19_x) |
| 191 | _GLOBAL(_rest32gpr_19_x) |
| 192 | lwz 19,-52(11) |
| 193 | _GLOBAL(_restgpr_20_x) |
| 194 | _GLOBAL(_rest32gpr_20_x) |
| 195 | lwz 20,-48(11) |
| 196 | _GLOBAL(_restgpr_21_x) |
| 197 | _GLOBAL(_rest32gpr_21_x) |
| 198 | lwz 21,-44(11) |
| 199 | _GLOBAL(_restgpr_22_x) |
| 200 | _GLOBAL(_rest32gpr_22_x) |
| 201 | lwz 22,-40(11) |
| 202 | _GLOBAL(_restgpr_23_x) |
| 203 | _GLOBAL(_rest32gpr_23_x) |
| 204 | lwz 23,-36(11) |
| 205 | _GLOBAL(_restgpr_24_x) |
| 206 | _GLOBAL(_rest32gpr_24_x) |
| 207 | lwz 24,-32(11) |
| 208 | _GLOBAL(_restgpr_25_x) |
| 209 | _GLOBAL(_rest32gpr_25_x) |
| 210 | lwz 25,-28(11) |
| 211 | _GLOBAL(_restgpr_26_x) |
| 212 | _GLOBAL(_rest32gpr_26_x) |
| 213 | lwz 26,-24(11) |
| 214 | _GLOBAL(_restgpr_27_x) |
| 215 | _GLOBAL(_rest32gpr_27_x) |
| 216 | lwz 27,-20(11) |
| 217 | _GLOBAL(_restgpr_28_x) |
| 218 | _GLOBAL(_rest32gpr_28_x) |
| 219 | lwz 28,-16(11) |
| 220 | _GLOBAL(_restgpr_29_x) |
| 221 | _GLOBAL(_rest32gpr_29_x) |
| 222 | lwz 29,-12(11) |
| 223 | _GLOBAL(_restgpr_30_x) |
| 224 | _GLOBAL(_rest32gpr_30_x) |
| 225 | lwz 30,-8(11) |
| 226 | _GLOBAL(_restgpr_31_x) |
| 227 | _GLOBAL(_rest32gpr_31_x) |
| 228 | lwz 0,4(11) |
| 229 | lwz 31,-4(11) |
| 230 | mtlr 0 |
| 231 | mr 1,11 |
| 232 | blr |
Stephen Rothwell | 7fca5dc | 2010-06-29 20:08:42 +0000 | [diff] [blame] | 233 | |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 234 | #ifdef CONFIG_ALTIVEC |
| 235 | /* Called with r0 pointing just beyond the end of the vector save area. */ |
| 236 | |
| 237 | _GLOBAL(_savevr_20) |
| 238 | li r11,-192 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 239 | stvx v20,r11,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 240 | _GLOBAL(_savevr_21) |
| 241 | li r11,-176 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 242 | stvx v21,r11,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 243 | _GLOBAL(_savevr_22) |
| 244 | li r11,-160 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 245 | stvx v22,r11,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 246 | _GLOBAL(_savevr_23) |
| 247 | li r11,-144 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 248 | stvx v23,r11,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 249 | _GLOBAL(_savevr_24) |
| 250 | li r11,-128 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 251 | stvx v24,r11,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 252 | _GLOBAL(_savevr_25) |
| 253 | li r11,-112 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 254 | stvx v25,r11,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 255 | _GLOBAL(_savevr_26) |
| 256 | li r11,-96 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 257 | stvx v26,r11,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 258 | _GLOBAL(_savevr_27) |
| 259 | li r11,-80 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 260 | stvx v27,r11,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 261 | _GLOBAL(_savevr_28) |
| 262 | li r11,-64 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 263 | stvx v28,r11,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 264 | _GLOBAL(_savevr_29) |
| 265 | li r11,-48 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 266 | stvx v29,r11,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 267 | _GLOBAL(_savevr_30) |
| 268 | li r11,-32 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 269 | stvx v30,r11,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 270 | _GLOBAL(_savevr_31) |
| 271 | li r11,-16 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 272 | stvx v31,r11,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 273 | blr |
| 274 | |
| 275 | _GLOBAL(_restvr_20) |
| 276 | li r11,-192 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 277 | lvx v20,r11,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 278 | _GLOBAL(_restvr_21) |
| 279 | li r11,-176 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 280 | lvx v21,r11,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 281 | _GLOBAL(_restvr_22) |
| 282 | li r11,-160 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 283 | lvx v22,r11,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 284 | _GLOBAL(_restvr_23) |
| 285 | li r11,-144 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 286 | lvx v23,r11,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 287 | _GLOBAL(_restvr_24) |
| 288 | li r11,-128 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 289 | lvx v24,r11,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 290 | _GLOBAL(_restvr_25) |
| 291 | li r11,-112 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 292 | lvx v25,r11,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 293 | _GLOBAL(_restvr_26) |
| 294 | li r11,-96 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 295 | lvx v26,r11,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 296 | _GLOBAL(_restvr_27) |
| 297 | li r11,-80 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 298 | lvx v27,r11,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 299 | _GLOBAL(_restvr_28) |
| 300 | li r11,-64 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 301 | lvx v28,r11,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 302 | _GLOBAL(_restvr_29) |
| 303 | li r11,-48 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 304 | lvx v29,r11,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 305 | _GLOBAL(_restvr_30) |
| 306 | li r11,-32 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 307 | lvx v30,r11,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 308 | _GLOBAL(_restvr_31) |
| 309 | li r11,-16 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 310 | lvx v31,r11,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 311 | blr |
| 312 | |
| 313 | #endif /* CONFIG_ALTIVEC */ |
| 314 | |
Stephen Rothwell | 7fca5dc | 2010-06-29 20:08:42 +0000 | [diff] [blame] | 315 | #else /* CONFIG_PPC64 */ |
| 316 | |
Stephen Rothwell | 1d5a436 | 2012-07-05 21:09:40 +0000 | [diff] [blame] | 317 | .section ".text.save.restore","ax",@progbits |
| 318 | |
Stephen Rothwell | 7fca5dc | 2010-06-29 20:08:42 +0000 | [diff] [blame] | 319 | .globl _savegpr0_14 |
| 320 | _savegpr0_14: |
| 321 | std r14,-144(r1) |
| 322 | .globl _savegpr0_15 |
| 323 | _savegpr0_15: |
| 324 | std r15,-136(r1) |
| 325 | .globl _savegpr0_16 |
| 326 | _savegpr0_16: |
| 327 | std r16,-128(r1) |
| 328 | .globl _savegpr0_17 |
| 329 | _savegpr0_17: |
| 330 | std r17,-120(r1) |
| 331 | .globl _savegpr0_18 |
| 332 | _savegpr0_18: |
| 333 | std r18,-112(r1) |
| 334 | .globl _savegpr0_19 |
| 335 | _savegpr0_19: |
| 336 | std r19,-104(r1) |
| 337 | .globl _savegpr0_20 |
| 338 | _savegpr0_20: |
| 339 | std r20,-96(r1) |
| 340 | .globl _savegpr0_21 |
| 341 | _savegpr0_21: |
| 342 | std r21,-88(r1) |
| 343 | .globl _savegpr0_22 |
| 344 | _savegpr0_22: |
| 345 | std r22,-80(r1) |
| 346 | .globl _savegpr0_23 |
| 347 | _savegpr0_23: |
| 348 | std r23,-72(r1) |
| 349 | .globl _savegpr0_24 |
| 350 | _savegpr0_24: |
| 351 | std r24,-64(r1) |
| 352 | .globl _savegpr0_25 |
| 353 | _savegpr0_25: |
| 354 | std r25,-56(r1) |
| 355 | .globl _savegpr0_26 |
| 356 | _savegpr0_26: |
| 357 | std r26,-48(r1) |
| 358 | .globl _savegpr0_27 |
| 359 | _savegpr0_27: |
| 360 | std r27,-40(r1) |
| 361 | .globl _savegpr0_28 |
| 362 | _savegpr0_28: |
| 363 | std r28,-32(r1) |
| 364 | .globl _savegpr0_29 |
| 365 | _savegpr0_29: |
| 366 | std r29,-24(r1) |
| 367 | .globl _savegpr0_30 |
| 368 | _savegpr0_30: |
| 369 | std r30,-16(r1) |
| 370 | .globl _savegpr0_31 |
| 371 | _savegpr0_31: |
| 372 | std r31,-8(r1) |
| 373 | std r0,16(r1) |
| 374 | blr |
| 375 | |
| 376 | .globl _restgpr0_14 |
| 377 | _restgpr0_14: |
| 378 | ld r14,-144(r1) |
| 379 | .globl _restgpr0_15 |
| 380 | _restgpr0_15: |
| 381 | ld r15,-136(r1) |
| 382 | .globl _restgpr0_16 |
| 383 | _restgpr0_16: |
| 384 | ld r16,-128(r1) |
| 385 | .globl _restgpr0_17 |
| 386 | _restgpr0_17: |
| 387 | ld r17,-120(r1) |
| 388 | .globl _restgpr0_18 |
| 389 | _restgpr0_18: |
| 390 | ld r18,-112(r1) |
| 391 | .globl _restgpr0_19 |
| 392 | _restgpr0_19: |
| 393 | ld r19,-104(r1) |
| 394 | .globl _restgpr0_20 |
| 395 | _restgpr0_20: |
| 396 | ld r20,-96(r1) |
| 397 | .globl _restgpr0_21 |
| 398 | _restgpr0_21: |
| 399 | ld r21,-88(r1) |
| 400 | .globl _restgpr0_22 |
| 401 | _restgpr0_22: |
| 402 | ld r22,-80(r1) |
| 403 | .globl _restgpr0_23 |
| 404 | _restgpr0_23: |
| 405 | ld r23,-72(r1) |
| 406 | .globl _restgpr0_24 |
| 407 | _restgpr0_24: |
| 408 | ld r24,-64(r1) |
| 409 | .globl _restgpr0_25 |
| 410 | _restgpr0_25: |
| 411 | ld r25,-56(r1) |
| 412 | .globl _restgpr0_26 |
| 413 | _restgpr0_26: |
| 414 | ld r26,-48(r1) |
| 415 | .globl _restgpr0_27 |
| 416 | _restgpr0_27: |
| 417 | ld r27,-40(r1) |
| 418 | .globl _restgpr0_28 |
| 419 | _restgpr0_28: |
| 420 | ld r28,-32(r1) |
| 421 | .globl _restgpr0_29 |
| 422 | _restgpr0_29: |
| 423 | ld r0,16(r1) |
| 424 | ld r29,-24(r1) |
| 425 | mtlr r0 |
| 426 | ld r30,-16(r1) |
| 427 | ld r31,-8(r1) |
| 428 | blr |
| 429 | |
| 430 | .globl _restgpr0_30 |
| 431 | _restgpr0_30: |
| 432 | ld r30,-16(r1) |
| 433 | .globl _restgpr0_31 |
| 434 | _restgpr0_31: |
| 435 | ld r0,16(r1) |
| 436 | ld r31,-8(r1) |
| 437 | mtlr r0 |
| 438 | blr |
| 439 | |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 440 | #ifdef CONFIG_ALTIVEC |
| 441 | /* Called with r0 pointing just beyond the end of the vector save area. */ |
| 442 | |
| 443 | .globl _savevr_20 |
| 444 | _savevr_20: |
| 445 | li r12,-192 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 446 | stvx v20,r12,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 447 | .globl _savevr_21 |
| 448 | _savevr_21: |
| 449 | li r12,-176 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 450 | stvx v21,r12,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 451 | .globl _savevr_22 |
| 452 | _savevr_22: |
| 453 | li r12,-160 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 454 | stvx v22,r12,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 455 | .globl _savevr_23 |
| 456 | _savevr_23: |
| 457 | li r12,-144 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 458 | stvx v23,r12,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 459 | .globl _savevr_24 |
| 460 | _savevr_24: |
| 461 | li r12,-128 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 462 | stvx v24,r12,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 463 | .globl _savevr_25 |
| 464 | _savevr_25: |
| 465 | li r12,-112 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 466 | stvx v25,r12,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 467 | .globl _savevr_26 |
| 468 | _savevr_26: |
| 469 | li r12,-96 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 470 | stvx v26,r12,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 471 | .globl _savevr_27 |
| 472 | _savevr_27: |
| 473 | li r12,-80 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 474 | stvx v27,r12,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 475 | .globl _savevr_28 |
| 476 | _savevr_28: |
| 477 | li r12,-64 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 478 | stvx v28,r12,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 479 | .globl _savevr_29 |
| 480 | _savevr_29: |
| 481 | li r12,-48 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 482 | stvx v29,r12,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 483 | .globl _savevr_30 |
| 484 | _savevr_30: |
| 485 | li r12,-32 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 486 | stvx v30,r12,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 487 | .globl _savevr_31 |
| 488 | _savevr_31: |
| 489 | li r12,-16 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 490 | stvx v31,r12,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 491 | blr |
| 492 | |
| 493 | .globl _restvr_20 |
| 494 | _restvr_20: |
| 495 | li r12,-192 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 496 | lvx v20,r12,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 497 | .globl _restvr_21 |
| 498 | _restvr_21: |
| 499 | li r12,-176 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 500 | lvx v21,r12,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 501 | .globl _restvr_22 |
| 502 | _restvr_22: |
| 503 | li r12,-160 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 504 | lvx v22,r12,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 505 | .globl _restvr_23 |
| 506 | _restvr_23: |
| 507 | li r12,-144 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 508 | lvx v23,r12,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 509 | .globl _restvr_24 |
| 510 | _restvr_24: |
| 511 | li r12,-128 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 512 | lvx v24,r12,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 513 | .globl _restvr_25 |
| 514 | _restvr_25: |
| 515 | li r12,-112 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 516 | lvx v25,r12,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 517 | .globl _restvr_26 |
| 518 | _restvr_26: |
| 519 | li r12,-96 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 520 | lvx v26,r12,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 521 | .globl _restvr_27 |
| 522 | _restvr_27: |
| 523 | li r12,-80 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 524 | lvx v27,r12,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 525 | .globl _restvr_28 |
| 526 | _restvr_28: |
| 527 | li r12,-64 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 528 | lvx v28,r12,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 529 | .globl _restvr_29 |
| 530 | _restvr_29: |
| 531 | li r12,-48 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 532 | lvx v29,r12,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 533 | .globl _restvr_30 |
| 534 | _restvr_30: |
| 535 | li r12,-32 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 536 | lvx v30,r12,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 537 | .globl _restvr_31 |
| 538 | _restvr_31: |
| 539 | li r12,-16 |
Anton Blanchard | c2ce6f9 | 2015-02-10 09:51:22 +1100 | [diff] [blame] | 540 | lvx v31,r12,r0 |
Andreas Schwab | 8fe9c93 | 2013-12-30 15:31:17 +0100 | [diff] [blame] | 541 | blr |
| 542 | |
| 543 | #endif /* CONFIG_ALTIVEC */ |
| 544 | |
Stephen Rothwell | 7fca5dc | 2010-06-29 20:08:42 +0000 | [diff] [blame] | 545 | #endif /* CONFIG_PPC64 */ |
| 546 | |
Kumar Gala | da3de6d | 2008-06-13 07:20:58 +1000 | [diff] [blame] | 547 | #endif |