162306a36Sopenharmony_ci/* 262306a36Sopenharmony_ci * Special support for eabi and SVR4 362306a36Sopenharmony_ci * 462306a36Sopenharmony_ci * Copyright (C) 1995, 1996, 1998, 2000, 2001 Free Software Foundation, Inc. 562306a36Sopenharmony_ci * Copyright 2008 Freescale Semiconductor, Inc. 662306a36Sopenharmony_ci * Written By Michael Meissner 762306a36Sopenharmony_ci * 862306a36Sopenharmony_ci * Based on gcc/config/rs6000/crtsavres.asm from gcc 962306a36Sopenharmony_ci * 64 bit additions from reading the PPC elf64abi document. 1062306a36Sopenharmony_ci * 1162306a36Sopenharmony_ci * This file is free software; you can redistribute it and/or modify it 1262306a36Sopenharmony_ci * under the terms of the GNU General Public License as published by the 1362306a36Sopenharmony_ci * Free Software Foundation; either version 2, or (at your option) any 1462306a36Sopenharmony_ci * later version. 1562306a36Sopenharmony_ci * 1662306a36Sopenharmony_ci * In addition to the permissions in the GNU General Public License, the 1762306a36Sopenharmony_ci * Free Software Foundation gives you unlimited permission to link the 1862306a36Sopenharmony_ci * compiled version of this file with other programs, and to distribute 1962306a36Sopenharmony_ci * those programs without any restriction coming from the use of this 2062306a36Sopenharmony_ci * file. (The General Public License restrictions do apply in other 2162306a36Sopenharmony_ci * respects; for example, they cover modification of the file, and 2262306a36Sopenharmony_ci * distribution when not linked into another program.) 2362306a36Sopenharmony_ci * 2462306a36Sopenharmony_ci * This file is distributed in the hope that it will be useful, but 2562306a36Sopenharmony_ci * WITHOUT ANY WARRANTY; without even the implied warranty of 2662306a36Sopenharmony_ci * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2762306a36Sopenharmony_ci * General Public License for more details. 2862306a36Sopenharmony_ci * 2962306a36Sopenharmony_ci * You should have received a copy of the GNU General Public License 3062306a36Sopenharmony_ci * along with this program; see the file COPYING. If not, write to 3162306a36Sopenharmony_ci * the Free Software Foundation, 51 Franklin Street, Fifth Floor, 3262306a36Sopenharmony_ci * Boston, MA 02110-1301, USA. 3362306a36Sopenharmony_ci * 3462306a36Sopenharmony_ci * As a special exception, if you link this library with files 3562306a36Sopenharmony_ci * compiled with GCC to produce an executable, this does not cause 3662306a36Sopenharmony_ci * the resulting executable to be covered by the GNU General Public License. 3762306a36Sopenharmony_ci * This exception does not however invalidate any other reasons why 3862306a36Sopenharmony_ci * the executable file might be covered by the GNU General Public License. 3962306a36Sopenharmony_ci */ 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_ci#include <asm/ppc_asm.h> 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ci .file "crtsavres.S" 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_ci#ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE 4662306a36Sopenharmony_ci 4762306a36Sopenharmony_ci .section ".text" 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_ci#ifndef CONFIG_PPC64 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_ci/* Routines for saving integer registers, called by the compiler. */ 5262306a36Sopenharmony_ci/* Called with r11 pointing to the stack header word of the caller of the */ 5362306a36Sopenharmony_ci/* function, just beyond the end of the integer save area. */ 5462306a36Sopenharmony_ci 5562306a36Sopenharmony_ci_GLOBAL(_savegpr_14) 5662306a36Sopenharmony_ci_GLOBAL(_save32gpr_14) 5762306a36Sopenharmony_ci stw 14,-72(11) /* save gp registers */ 5862306a36Sopenharmony_ci_GLOBAL(_savegpr_15) 5962306a36Sopenharmony_ci_GLOBAL(_save32gpr_15) 6062306a36Sopenharmony_ci stw 15,-68(11) 6162306a36Sopenharmony_ci_GLOBAL(_savegpr_16) 6262306a36Sopenharmony_ci_GLOBAL(_save32gpr_16) 6362306a36Sopenharmony_ci stw 16,-64(11) 6462306a36Sopenharmony_ci_GLOBAL(_savegpr_17) 6562306a36Sopenharmony_ci_GLOBAL(_save32gpr_17) 6662306a36Sopenharmony_ci stw 17,-60(11) 6762306a36Sopenharmony_ci_GLOBAL(_savegpr_18) 6862306a36Sopenharmony_ci_GLOBAL(_save32gpr_18) 6962306a36Sopenharmony_ci stw 18,-56(11) 7062306a36Sopenharmony_ci_GLOBAL(_savegpr_19) 7162306a36Sopenharmony_ci_GLOBAL(_save32gpr_19) 7262306a36Sopenharmony_ci stw 19,-52(11) 7362306a36Sopenharmony_ci_GLOBAL(_savegpr_20) 7462306a36Sopenharmony_ci_GLOBAL(_save32gpr_20) 7562306a36Sopenharmony_ci stw 20,-48(11) 7662306a36Sopenharmony_ci_GLOBAL(_savegpr_21) 7762306a36Sopenharmony_ci_GLOBAL(_save32gpr_21) 7862306a36Sopenharmony_ci stw 21,-44(11) 7962306a36Sopenharmony_ci_GLOBAL(_savegpr_22) 8062306a36Sopenharmony_ci_GLOBAL(_save32gpr_22) 8162306a36Sopenharmony_ci stw 22,-40(11) 8262306a36Sopenharmony_ci_GLOBAL(_savegpr_23) 8362306a36Sopenharmony_ci_GLOBAL(_save32gpr_23) 8462306a36Sopenharmony_ci stw 23,-36(11) 8562306a36Sopenharmony_ci_GLOBAL(_savegpr_24) 8662306a36Sopenharmony_ci_GLOBAL(_save32gpr_24) 8762306a36Sopenharmony_ci stw 24,-32(11) 8862306a36Sopenharmony_ci_GLOBAL(_savegpr_25) 8962306a36Sopenharmony_ci_GLOBAL(_save32gpr_25) 9062306a36Sopenharmony_ci stw 25,-28(11) 9162306a36Sopenharmony_ci_GLOBAL(_savegpr_26) 9262306a36Sopenharmony_ci_GLOBAL(_save32gpr_26) 9362306a36Sopenharmony_ci stw 26,-24(11) 9462306a36Sopenharmony_ci_GLOBAL(_savegpr_27) 9562306a36Sopenharmony_ci_GLOBAL(_save32gpr_27) 9662306a36Sopenharmony_ci stw 27,-20(11) 9762306a36Sopenharmony_ci_GLOBAL(_savegpr_28) 9862306a36Sopenharmony_ci_GLOBAL(_save32gpr_28) 9962306a36Sopenharmony_ci stw 28,-16(11) 10062306a36Sopenharmony_ci_GLOBAL(_savegpr_29) 10162306a36Sopenharmony_ci_GLOBAL(_save32gpr_29) 10262306a36Sopenharmony_ci stw 29,-12(11) 10362306a36Sopenharmony_ci_GLOBAL(_savegpr_30) 10462306a36Sopenharmony_ci_GLOBAL(_save32gpr_30) 10562306a36Sopenharmony_ci stw 30,-8(11) 10662306a36Sopenharmony_ci_GLOBAL(_savegpr_31) 10762306a36Sopenharmony_ci_GLOBAL(_save32gpr_31) 10862306a36Sopenharmony_ci stw 31,-4(11) 10962306a36Sopenharmony_ci blr 11062306a36Sopenharmony_ci 11162306a36Sopenharmony_ci/* Routines for restoring integer registers, called by the compiler. */ 11262306a36Sopenharmony_ci/* Called with r11 pointing to the stack header word of the caller of the */ 11362306a36Sopenharmony_ci/* function, just beyond the end of the integer restore area. */ 11462306a36Sopenharmony_ci 11562306a36Sopenharmony_ci_GLOBAL(_restgpr_14) 11662306a36Sopenharmony_ci_GLOBAL(_rest32gpr_14) 11762306a36Sopenharmony_ci lwz 14,-72(11) /* restore gp registers */ 11862306a36Sopenharmony_ci_GLOBAL(_restgpr_15) 11962306a36Sopenharmony_ci_GLOBAL(_rest32gpr_15) 12062306a36Sopenharmony_ci lwz 15,-68(11) 12162306a36Sopenharmony_ci_GLOBAL(_restgpr_16) 12262306a36Sopenharmony_ci_GLOBAL(_rest32gpr_16) 12362306a36Sopenharmony_ci lwz 16,-64(11) 12462306a36Sopenharmony_ci_GLOBAL(_restgpr_17) 12562306a36Sopenharmony_ci_GLOBAL(_rest32gpr_17) 12662306a36Sopenharmony_ci lwz 17,-60(11) 12762306a36Sopenharmony_ci_GLOBAL(_restgpr_18) 12862306a36Sopenharmony_ci_GLOBAL(_rest32gpr_18) 12962306a36Sopenharmony_ci lwz 18,-56(11) 13062306a36Sopenharmony_ci_GLOBAL(_restgpr_19) 13162306a36Sopenharmony_ci_GLOBAL(_rest32gpr_19) 13262306a36Sopenharmony_ci lwz 19,-52(11) 13362306a36Sopenharmony_ci_GLOBAL(_restgpr_20) 13462306a36Sopenharmony_ci_GLOBAL(_rest32gpr_20) 13562306a36Sopenharmony_ci lwz 20,-48(11) 13662306a36Sopenharmony_ci_GLOBAL(_restgpr_21) 13762306a36Sopenharmony_ci_GLOBAL(_rest32gpr_21) 13862306a36Sopenharmony_ci lwz 21,-44(11) 13962306a36Sopenharmony_ci_GLOBAL(_restgpr_22) 14062306a36Sopenharmony_ci_GLOBAL(_rest32gpr_22) 14162306a36Sopenharmony_ci lwz 22,-40(11) 14262306a36Sopenharmony_ci_GLOBAL(_restgpr_23) 14362306a36Sopenharmony_ci_GLOBAL(_rest32gpr_23) 14462306a36Sopenharmony_ci lwz 23,-36(11) 14562306a36Sopenharmony_ci_GLOBAL(_restgpr_24) 14662306a36Sopenharmony_ci_GLOBAL(_rest32gpr_24) 14762306a36Sopenharmony_ci lwz 24,-32(11) 14862306a36Sopenharmony_ci_GLOBAL(_restgpr_25) 14962306a36Sopenharmony_ci_GLOBAL(_rest32gpr_25) 15062306a36Sopenharmony_ci lwz 25,-28(11) 15162306a36Sopenharmony_ci_GLOBAL(_restgpr_26) 15262306a36Sopenharmony_ci_GLOBAL(_rest32gpr_26) 15362306a36Sopenharmony_ci lwz 26,-24(11) 15462306a36Sopenharmony_ci_GLOBAL(_restgpr_27) 15562306a36Sopenharmony_ci_GLOBAL(_rest32gpr_27) 15662306a36Sopenharmony_ci lwz 27,-20(11) 15762306a36Sopenharmony_ci_GLOBAL(_restgpr_28) 15862306a36Sopenharmony_ci_GLOBAL(_rest32gpr_28) 15962306a36Sopenharmony_ci lwz 28,-16(11) 16062306a36Sopenharmony_ci_GLOBAL(_restgpr_29) 16162306a36Sopenharmony_ci_GLOBAL(_rest32gpr_29) 16262306a36Sopenharmony_ci lwz 29,-12(11) 16362306a36Sopenharmony_ci_GLOBAL(_restgpr_30) 16462306a36Sopenharmony_ci_GLOBAL(_rest32gpr_30) 16562306a36Sopenharmony_ci lwz 30,-8(11) 16662306a36Sopenharmony_ci_GLOBAL(_restgpr_31) 16762306a36Sopenharmony_ci_GLOBAL(_rest32gpr_31) 16862306a36Sopenharmony_ci lwz 31,-4(11) 16962306a36Sopenharmony_ci blr 17062306a36Sopenharmony_ci 17162306a36Sopenharmony_ci/* Routines for restoring integer registers, called by the compiler. */ 17262306a36Sopenharmony_ci/* Called with r11 pointing to the stack header word of the caller of the */ 17362306a36Sopenharmony_ci/* function, just beyond the end of the integer restore area. */ 17462306a36Sopenharmony_ci 17562306a36Sopenharmony_ci_GLOBAL(_restgpr_14_x) 17662306a36Sopenharmony_ci_GLOBAL(_rest32gpr_14_x) 17762306a36Sopenharmony_ci lwz 14,-72(11) /* restore gp registers */ 17862306a36Sopenharmony_ci_GLOBAL(_restgpr_15_x) 17962306a36Sopenharmony_ci_GLOBAL(_rest32gpr_15_x) 18062306a36Sopenharmony_ci lwz 15,-68(11) 18162306a36Sopenharmony_ci_GLOBAL(_restgpr_16_x) 18262306a36Sopenharmony_ci_GLOBAL(_rest32gpr_16_x) 18362306a36Sopenharmony_ci lwz 16,-64(11) 18462306a36Sopenharmony_ci_GLOBAL(_restgpr_17_x) 18562306a36Sopenharmony_ci_GLOBAL(_rest32gpr_17_x) 18662306a36Sopenharmony_ci lwz 17,-60(11) 18762306a36Sopenharmony_ci_GLOBAL(_restgpr_18_x) 18862306a36Sopenharmony_ci_GLOBAL(_rest32gpr_18_x) 18962306a36Sopenharmony_ci lwz 18,-56(11) 19062306a36Sopenharmony_ci_GLOBAL(_restgpr_19_x) 19162306a36Sopenharmony_ci_GLOBAL(_rest32gpr_19_x) 19262306a36Sopenharmony_ci lwz 19,-52(11) 19362306a36Sopenharmony_ci_GLOBAL(_restgpr_20_x) 19462306a36Sopenharmony_ci_GLOBAL(_rest32gpr_20_x) 19562306a36Sopenharmony_ci lwz 20,-48(11) 19662306a36Sopenharmony_ci_GLOBAL(_restgpr_21_x) 19762306a36Sopenharmony_ci_GLOBAL(_rest32gpr_21_x) 19862306a36Sopenharmony_ci lwz 21,-44(11) 19962306a36Sopenharmony_ci_GLOBAL(_restgpr_22_x) 20062306a36Sopenharmony_ci_GLOBAL(_rest32gpr_22_x) 20162306a36Sopenharmony_ci lwz 22,-40(11) 20262306a36Sopenharmony_ci_GLOBAL(_restgpr_23_x) 20362306a36Sopenharmony_ci_GLOBAL(_rest32gpr_23_x) 20462306a36Sopenharmony_ci lwz 23,-36(11) 20562306a36Sopenharmony_ci_GLOBAL(_restgpr_24_x) 20662306a36Sopenharmony_ci_GLOBAL(_rest32gpr_24_x) 20762306a36Sopenharmony_ci lwz 24,-32(11) 20862306a36Sopenharmony_ci_GLOBAL(_restgpr_25_x) 20962306a36Sopenharmony_ci_GLOBAL(_rest32gpr_25_x) 21062306a36Sopenharmony_ci lwz 25,-28(11) 21162306a36Sopenharmony_ci_GLOBAL(_restgpr_26_x) 21262306a36Sopenharmony_ci_GLOBAL(_rest32gpr_26_x) 21362306a36Sopenharmony_ci lwz 26,-24(11) 21462306a36Sopenharmony_ci_GLOBAL(_restgpr_27_x) 21562306a36Sopenharmony_ci_GLOBAL(_rest32gpr_27_x) 21662306a36Sopenharmony_ci lwz 27,-20(11) 21762306a36Sopenharmony_ci_GLOBAL(_restgpr_28_x) 21862306a36Sopenharmony_ci_GLOBAL(_rest32gpr_28_x) 21962306a36Sopenharmony_ci lwz 28,-16(11) 22062306a36Sopenharmony_ci_GLOBAL(_restgpr_29_x) 22162306a36Sopenharmony_ci_GLOBAL(_rest32gpr_29_x) 22262306a36Sopenharmony_ci lwz 29,-12(11) 22362306a36Sopenharmony_ci_GLOBAL(_restgpr_30_x) 22462306a36Sopenharmony_ci_GLOBAL(_rest32gpr_30_x) 22562306a36Sopenharmony_ci lwz 30,-8(11) 22662306a36Sopenharmony_ci_GLOBAL(_restgpr_31_x) 22762306a36Sopenharmony_ci_GLOBAL(_rest32gpr_31_x) 22862306a36Sopenharmony_ci lwz 0,4(11) 22962306a36Sopenharmony_ci lwz 31,-4(11) 23062306a36Sopenharmony_ci mtlr 0 23162306a36Sopenharmony_ci mr 1,11 23262306a36Sopenharmony_ci blr 23362306a36Sopenharmony_ci 23462306a36Sopenharmony_ci#ifdef CONFIG_ALTIVEC 23562306a36Sopenharmony_ci/* Called with r0 pointing just beyond the end of the vector save area. */ 23662306a36Sopenharmony_ci 23762306a36Sopenharmony_ci_GLOBAL(_savevr_20) 23862306a36Sopenharmony_ci li r11,-192 23962306a36Sopenharmony_ci stvx v20,r11,r0 24062306a36Sopenharmony_ci_GLOBAL(_savevr_21) 24162306a36Sopenharmony_ci li r11,-176 24262306a36Sopenharmony_ci stvx v21,r11,r0 24362306a36Sopenharmony_ci_GLOBAL(_savevr_22) 24462306a36Sopenharmony_ci li r11,-160 24562306a36Sopenharmony_ci stvx v22,r11,r0 24662306a36Sopenharmony_ci_GLOBAL(_savevr_23) 24762306a36Sopenharmony_ci li r11,-144 24862306a36Sopenharmony_ci stvx v23,r11,r0 24962306a36Sopenharmony_ci_GLOBAL(_savevr_24) 25062306a36Sopenharmony_ci li r11,-128 25162306a36Sopenharmony_ci stvx v24,r11,r0 25262306a36Sopenharmony_ci_GLOBAL(_savevr_25) 25362306a36Sopenharmony_ci li r11,-112 25462306a36Sopenharmony_ci stvx v25,r11,r0 25562306a36Sopenharmony_ci_GLOBAL(_savevr_26) 25662306a36Sopenharmony_ci li r11,-96 25762306a36Sopenharmony_ci stvx v26,r11,r0 25862306a36Sopenharmony_ci_GLOBAL(_savevr_27) 25962306a36Sopenharmony_ci li r11,-80 26062306a36Sopenharmony_ci stvx v27,r11,r0 26162306a36Sopenharmony_ci_GLOBAL(_savevr_28) 26262306a36Sopenharmony_ci li r11,-64 26362306a36Sopenharmony_ci stvx v28,r11,r0 26462306a36Sopenharmony_ci_GLOBAL(_savevr_29) 26562306a36Sopenharmony_ci li r11,-48 26662306a36Sopenharmony_ci stvx v29,r11,r0 26762306a36Sopenharmony_ci_GLOBAL(_savevr_30) 26862306a36Sopenharmony_ci li r11,-32 26962306a36Sopenharmony_ci stvx v30,r11,r0 27062306a36Sopenharmony_ci_GLOBAL(_savevr_31) 27162306a36Sopenharmony_ci li r11,-16 27262306a36Sopenharmony_ci stvx v31,r11,r0 27362306a36Sopenharmony_ci blr 27462306a36Sopenharmony_ci 27562306a36Sopenharmony_ci_GLOBAL(_restvr_20) 27662306a36Sopenharmony_ci li r11,-192 27762306a36Sopenharmony_ci lvx v20,r11,r0 27862306a36Sopenharmony_ci_GLOBAL(_restvr_21) 27962306a36Sopenharmony_ci li r11,-176 28062306a36Sopenharmony_ci lvx v21,r11,r0 28162306a36Sopenharmony_ci_GLOBAL(_restvr_22) 28262306a36Sopenharmony_ci li r11,-160 28362306a36Sopenharmony_ci lvx v22,r11,r0 28462306a36Sopenharmony_ci_GLOBAL(_restvr_23) 28562306a36Sopenharmony_ci li r11,-144 28662306a36Sopenharmony_ci lvx v23,r11,r0 28762306a36Sopenharmony_ci_GLOBAL(_restvr_24) 28862306a36Sopenharmony_ci li r11,-128 28962306a36Sopenharmony_ci lvx v24,r11,r0 29062306a36Sopenharmony_ci_GLOBAL(_restvr_25) 29162306a36Sopenharmony_ci li r11,-112 29262306a36Sopenharmony_ci lvx v25,r11,r0 29362306a36Sopenharmony_ci_GLOBAL(_restvr_26) 29462306a36Sopenharmony_ci li r11,-96 29562306a36Sopenharmony_ci lvx v26,r11,r0 29662306a36Sopenharmony_ci_GLOBAL(_restvr_27) 29762306a36Sopenharmony_ci li r11,-80 29862306a36Sopenharmony_ci lvx v27,r11,r0 29962306a36Sopenharmony_ci_GLOBAL(_restvr_28) 30062306a36Sopenharmony_ci li r11,-64 30162306a36Sopenharmony_ci lvx v28,r11,r0 30262306a36Sopenharmony_ci_GLOBAL(_restvr_29) 30362306a36Sopenharmony_ci li r11,-48 30462306a36Sopenharmony_ci lvx v29,r11,r0 30562306a36Sopenharmony_ci_GLOBAL(_restvr_30) 30662306a36Sopenharmony_ci li r11,-32 30762306a36Sopenharmony_ci lvx v30,r11,r0 30862306a36Sopenharmony_ci_GLOBAL(_restvr_31) 30962306a36Sopenharmony_ci li r11,-16 31062306a36Sopenharmony_ci lvx v31,r11,r0 31162306a36Sopenharmony_ci blr 31262306a36Sopenharmony_ci 31362306a36Sopenharmony_ci#endif /* CONFIG_ALTIVEC */ 31462306a36Sopenharmony_ci 31562306a36Sopenharmony_ci#else /* CONFIG_PPC64 */ 31662306a36Sopenharmony_ci 31762306a36Sopenharmony_ci.globl _savegpr0_14 31862306a36Sopenharmony_ci_savegpr0_14: 31962306a36Sopenharmony_ci std r14,-144(r1) 32062306a36Sopenharmony_ci.globl _savegpr0_15 32162306a36Sopenharmony_ci_savegpr0_15: 32262306a36Sopenharmony_ci std r15,-136(r1) 32362306a36Sopenharmony_ci.globl _savegpr0_16 32462306a36Sopenharmony_ci_savegpr0_16: 32562306a36Sopenharmony_ci std r16,-128(r1) 32662306a36Sopenharmony_ci.globl _savegpr0_17 32762306a36Sopenharmony_ci_savegpr0_17: 32862306a36Sopenharmony_ci std r17,-120(r1) 32962306a36Sopenharmony_ci.globl _savegpr0_18 33062306a36Sopenharmony_ci_savegpr0_18: 33162306a36Sopenharmony_ci std r18,-112(r1) 33262306a36Sopenharmony_ci.globl _savegpr0_19 33362306a36Sopenharmony_ci_savegpr0_19: 33462306a36Sopenharmony_ci std r19,-104(r1) 33562306a36Sopenharmony_ci.globl _savegpr0_20 33662306a36Sopenharmony_ci_savegpr0_20: 33762306a36Sopenharmony_ci std r20,-96(r1) 33862306a36Sopenharmony_ci.globl _savegpr0_21 33962306a36Sopenharmony_ci_savegpr0_21: 34062306a36Sopenharmony_ci std r21,-88(r1) 34162306a36Sopenharmony_ci.globl _savegpr0_22 34262306a36Sopenharmony_ci_savegpr0_22: 34362306a36Sopenharmony_ci std r22,-80(r1) 34462306a36Sopenharmony_ci.globl _savegpr0_23 34562306a36Sopenharmony_ci_savegpr0_23: 34662306a36Sopenharmony_ci std r23,-72(r1) 34762306a36Sopenharmony_ci.globl _savegpr0_24 34862306a36Sopenharmony_ci_savegpr0_24: 34962306a36Sopenharmony_ci std r24,-64(r1) 35062306a36Sopenharmony_ci.globl _savegpr0_25 35162306a36Sopenharmony_ci_savegpr0_25: 35262306a36Sopenharmony_ci std r25,-56(r1) 35362306a36Sopenharmony_ci.globl _savegpr0_26 35462306a36Sopenharmony_ci_savegpr0_26: 35562306a36Sopenharmony_ci std r26,-48(r1) 35662306a36Sopenharmony_ci.globl _savegpr0_27 35762306a36Sopenharmony_ci_savegpr0_27: 35862306a36Sopenharmony_ci std r27,-40(r1) 35962306a36Sopenharmony_ci.globl _savegpr0_28 36062306a36Sopenharmony_ci_savegpr0_28: 36162306a36Sopenharmony_ci std r28,-32(r1) 36262306a36Sopenharmony_ci.globl _savegpr0_29 36362306a36Sopenharmony_ci_savegpr0_29: 36462306a36Sopenharmony_ci std r29,-24(r1) 36562306a36Sopenharmony_ci.globl _savegpr0_30 36662306a36Sopenharmony_ci_savegpr0_30: 36762306a36Sopenharmony_ci std r30,-16(r1) 36862306a36Sopenharmony_ci.globl _savegpr0_31 36962306a36Sopenharmony_ci_savegpr0_31: 37062306a36Sopenharmony_ci std r31,-8(r1) 37162306a36Sopenharmony_ci std r0,16(r1) 37262306a36Sopenharmony_ci blr 37362306a36Sopenharmony_ci 37462306a36Sopenharmony_ci.globl _restgpr0_14 37562306a36Sopenharmony_ci_restgpr0_14: 37662306a36Sopenharmony_ci ld r14,-144(r1) 37762306a36Sopenharmony_ci.globl _restgpr0_15 37862306a36Sopenharmony_ci_restgpr0_15: 37962306a36Sopenharmony_ci ld r15,-136(r1) 38062306a36Sopenharmony_ci.globl _restgpr0_16 38162306a36Sopenharmony_ci_restgpr0_16: 38262306a36Sopenharmony_ci ld r16,-128(r1) 38362306a36Sopenharmony_ci.globl _restgpr0_17 38462306a36Sopenharmony_ci_restgpr0_17: 38562306a36Sopenharmony_ci ld r17,-120(r1) 38662306a36Sopenharmony_ci.globl _restgpr0_18 38762306a36Sopenharmony_ci_restgpr0_18: 38862306a36Sopenharmony_ci ld r18,-112(r1) 38962306a36Sopenharmony_ci.globl _restgpr0_19 39062306a36Sopenharmony_ci_restgpr0_19: 39162306a36Sopenharmony_ci ld r19,-104(r1) 39262306a36Sopenharmony_ci.globl _restgpr0_20 39362306a36Sopenharmony_ci_restgpr0_20: 39462306a36Sopenharmony_ci ld r20,-96(r1) 39562306a36Sopenharmony_ci.globl _restgpr0_21 39662306a36Sopenharmony_ci_restgpr0_21: 39762306a36Sopenharmony_ci ld r21,-88(r1) 39862306a36Sopenharmony_ci.globl _restgpr0_22 39962306a36Sopenharmony_ci_restgpr0_22: 40062306a36Sopenharmony_ci ld r22,-80(r1) 40162306a36Sopenharmony_ci.globl _restgpr0_23 40262306a36Sopenharmony_ci_restgpr0_23: 40362306a36Sopenharmony_ci ld r23,-72(r1) 40462306a36Sopenharmony_ci.globl _restgpr0_24 40562306a36Sopenharmony_ci_restgpr0_24: 40662306a36Sopenharmony_ci ld r24,-64(r1) 40762306a36Sopenharmony_ci.globl _restgpr0_25 40862306a36Sopenharmony_ci_restgpr0_25: 40962306a36Sopenharmony_ci ld r25,-56(r1) 41062306a36Sopenharmony_ci.globl _restgpr0_26 41162306a36Sopenharmony_ci_restgpr0_26: 41262306a36Sopenharmony_ci ld r26,-48(r1) 41362306a36Sopenharmony_ci.globl _restgpr0_27 41462306a36Sopenharmony_ci_restgpr0_27: 41562306a36Sopenharmony_ci ld r27,-40(r1) 41662306a36Sopenharmony_ci.globl _restgpr0_28 41762306a36Sopenharmony_ci_restgpr0_28: 41862306a36Sopenharmony_ci ld r28,-32(r1) 41962306a36Sopenharmony_ci.globl _restgpr0_29 42062306a36Sopenharmony_ci_restgpr0_29: 42162306a36Sopenharmony_ci ld r0,16(r1) 42262306a36Sopenharmony_ci ld r29,-24(r1) 42362306a36Sopenharmony_ci mtlr r0 42462306a36Sopenharmony_ci ld r30,-16(r1) 42562306a36Sopenharmony_ci ld r31,-8(r1) 42662306a36Sopenharmony_ci blr 42762306a36Sopenharmony_ci 42862306a36Sopenharmony_ci.globl _restgpr0_30 42962306a36Sopenharmony_ci_restgpr0_30: 43062306a36Sopenharmony_ci ld r30,-16(r1) 43162306a36Sopenharmony_ci.globl _restgpr0_31 43262306a36Sopenharmony_ci_restgpr0_31: 43362306a36Sopenharmony_ci ld r0,16(r1) 43462306a36Sopenharmony_ci ld r31,-8(r1) 43562306a36Sopenharmony_ci mtlr r0 43662306a36Sopenharmony_ci blr 43762306a36Sopenharmony_ci 43862306a36Sopenharmony_ci#ifdef CONFIG_ALTIVEC 43962306a36Sopenharmony_ci/* Called with r0 pointing just beyond the end of the vector save area. */ 44062306a36Sopenharmony_ci 44162306a36Sopenharmony_ci.globl _savevr_20 44262306a36Sopenharmony_ci_savevr_20: 44362306a36Sopenharmony_ci li r12,-192 44462306a36Sopenharmony_ci stvx v20,r12,r0 44562306a36Sopenharmony_ci.globl _savevr_21 44662306a36Sopenharmony_ci_savevr_21: 44762306a36Sopenharmony_ci li r12,-176 44862306a36Sopenharmony_ci stvx v21,r12,r0 44962306a36Sopenharmony_ci.globl _savevr_22 45062306a36Sopenharmony_ci_savevr_22: 45162306a36Sopenharmony_ci li r12,-160 45262306a36Sopenharmony_ci stvx v22,r12,r0 45362306a36Sopenharmony_ci.globl _savevr_23 45462306a36Sopenharmony_ci_savevr_23: 45562306a36Sopenharmony_ci li r12,-144 45662306a36Sopenharmony_ci stvx v23,r12,r0 45762306a36Sopenharmony_ci.globl _savevr_24 45862306a36Sopenharmony_ci_savevr_24: 45962306a36Sopenharmony_ci li r12,-128 46062306a36Sopenharmony_ci stvx v24,r12,r0 46162306a36Sopenharmony_ci.globl _savevr_25 46262306a36Sopenharmony_ci_savevr_25: 46362306a36Sopenharmony_ci li r12,-112 46462306a36Sopenharmony_ci stvx v25,r12,r0 46562306a36Sopenharmony_ci.globl _savevr_26 46662306a36Sopenharmony_ci_savevr_26: 46762306a36Sopenharmony_ci li r12,-96 46862306a36Sopenharmony_ci stvx v26,r12,r0 46962306a36Sopenharmony_ci.globl _savevr_27 47062306a36Sopenharmony_ci_savevr_27: 47162306a36Sopenharmony_ci li r12,-80 47262306a36Sopenharmony_ci stvx v27,r12,r0 47362306a36Sopenharmony_ci.globl _savevr_28 47462306a36Sopenharmony_ci_savevr_28: 47562306a36Sopenharmony_ci li r12,-64 47662306a36Sopenharmony_ci stvx v28,r12,r0 47762306a36Sopenharmony_ci.globl _savevr_29 47862306a36Sopenharmony_ci_savevr_29: 47962306a36Sopenharmony_ci li r12,-48 48062306a36Sopenharmony_ci stvx v29,r12,r0 48162306a36Sopenharmony_ci.globl _savevr_30 48262306a36Sopenharmony_ci_savevr_30: 48362306a36Sopenharmony_ci li r12,-32 48462306a36Sopenharmony_ci stvx v30,r12,r0 48562306a36Sopenharmony_ci.globl _savevr_31 48662306a36Sopenharmony_ci_savevr_31: 48762306a36Sopenharmony_ci li r12,-16 48862306a36Sopenharmony_ci stvx v31,r12,r0 48962306a36Sopenharmony_ci blr 49062306a36Sopenharmony_ci 49162306a36Sopenharmony_ci.globl _restvr_20 49262306a36Sopenharmony_ci_restvr_20: 49362306a36Sopenharmony_ci li r12,-192 49462306a36Sopenharmony_ci lvx v20,r12,r0 49562306a36Sopenharmony_ci.globl _restvr_21 49662306a36Sopenharmony_ci_restvr_21: 49762306a36Sopenharmony_ci li r12,-176 49862306a36Sopenharmony_ci lvx v21,r12,r0 49962306a36Sopenharmony_ci.globl _restvr_22 50062306a36Sopenharmony_ci_restvr_22: 50162306a36Sopenharmony_ci li r12,-160 50262306a36Sopenharmony_ci lvx v22,r12,r0 50362306a36Sopenharmony_ci.globl _restvr_23 50462306a36Sopenharmony_ci_restvr_23: 50562306a36Sopenharmony_ci li r12,-144 50662306a36Sopenharmony_ci lvx v23,r12,r0 50762306a36Sopenharmony_ci.globl _restvr_24 50862306a36Sopenharmony_ci_restvr_24: 50962306a36Sopenharmony_ci li r12,-128 51062306a36Sopenharmony_ci lvx v24,r12,r0 51162306a36Sopenharmony_ci.globl _restvr_25 51262306a36Sopenharmony_ci_restvr_25: 51362306a36Sopenharmony_ci li r12,-112 51462306a36Sopenharmony_ci lvx v25,r12,r0 51562306a36Sopenharmony_ci.globl _restvr_26 51662306a36Sopenharmony_ci_restvr_26: 51762306a36Sopenharmony_ci li r12,-96 51862306a36Sopenharmony_ci lvx v26,r12,r0 51962306a36Sopenharmony_ci.globl _restvr_27 52062306a36Sopenharmony_ci_restvr_27: 52162306a36Sopenharmony_ci li r12,-80 52262306a36Sopenharmony_ci lvx v27,r12,r0 52362306a36Sopenharmony_ci.globl _restvr_28 52462306a36Sopenharmony_ci_restvr_28: 52562306a36Sopenharmony_ci li r12,-64 52662306a36Sopenharmony_ci lvx v28,r12,r0 52762306a36Sopenharmony_ci.globl _restvr_29 52862306a36Sopenharmony_ci_restvr_29: 52962306a36Sopenharmony_ci li r12,-48 53062306a36Sopenharmony_ci lvx v29,r12,r0 53162306a36Sopenharmony_ci.globl _restvr_30 53262306a36Sopenharmony_ci_restvr_30: 53362306a36Sopenharmony_ci li r12,-32 53462306a36Sopenharmony_ci lvx v30,r12,r0 53562306a36Sopenharmony_ci.globl _restvr_31 53662306a36Sopenharmony_ci_restvr_31: 53762306a36Sopenharmony_ci li r12,-16 53862306a36Sopenharmony_ci lvx v31,r12,r0 53962306a36Sopenharmony_ci blr 54062306a36Sopenharmony_ci 54162306a36Sopenharmony_ci#endif /* CONFIG_ALTIVEC */ 54262306a36Sopenharmony_ci 54362306a36Sopenharmony_ci#endif /* CONFIG_PPC64 */ 54462306a36Sopenharmony_ci 54562306a36Sopenharmony_ci#endif 546