18c2ecf20Sopenharmony_ci/*
28c2ecf20Sopenharmony_ci * Special support for eabi and SVR4
38c2ecf20Sopenharmony_ci *
48c2ecf20Sopenharmony_ci *   Copyright (C) 1995, 1996, 1998, 2000, 2001 Free Software Foundation, Inc.
58c2ecf20Sopenharmony_ci *   Copyright 2008 Freescale Semiconductor, Inc.
68c2ecf20Sopenharmony_ci *   Written By Michael Meissner
78c2ecf20Sopenharmony_ci *
88c2ecf20Sopenharmony_ci * Based on gcc/config/rs6000/crtsavres.asm from gcc
98c2ecf20Sopenharmony_ci * 64 bit additions from reading the PPC elf64abi document.
108c2ecf20Sopenharmony_ci *
118c2ecf20Sopenharmony_ci * This file is free software; you can redistribute it and/or modify it
128c2ecf20Sopenharmony_ci * under the terms of the GNU General Public License as published by the
138c2ecf20Sopenharmony_ci * Free Software Foundation; either version 2, or (at your option) any
148c2ecf20Sopenharmony_ci * later version.
158c2ecf20Sopenharmony_ci *
168c2ecf20Sopenharmony_ci * In addition to the permissions in the GNU General Public License, the
178c2ecf20Sopenharmony_ci * Free Software Foundation gives you unlimited permission to link the
188c2ecf20Sopenharmony_ci * compiled version of this file with other programs, and to distribute
198c2ecf20Sopenharmony_ci * those programs without any restriction coming from the use of this
208c2ecf20Sopenharmony_ci * file.  (The General Public License restrictions do apply in other
218c2ecf20Sopenharmony_ci * respects; for example, they cover modification of the file, and
228c2ecf20Sopenharmony_ci * distribution when not linked into another program.)
238c2ecf20Sopenharmony_ci *
248c2ecf20Sopenharmony_ci * This file is distributed in the hope that it will be useful, but
258c2ecf20Sopenharmony_ci * WITHOUT ANY WARRANTY; without even the implied warranty of
268c2ecf20Sopenharmony_ci * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
278c2ecf20Sopenharmony_ci * General Public License for more details.
288c2ecf20Sopenharmony_ci *
298c2ecf20Sopenharmony_ci * You should have received a copy of the GNU General Public License
308c2ecf20Sopenharmony_ci * along with this program; see the file COPYING.  If not, write to
318c2ecf20Sopenharmony_ci * the Free Software Foundation, 51 Franklin Street, Fifth Floor,
328c2ecf20Sopenharmony_ci * Boston, MA 02110-1301, USA.
338c2ecf20Sopenharmony_ci *
348c2ecf20Sopenharmony_ci *    As a special exception, if you link this library with files
358c2ecf20Sopenharmony_ci *    compiled with GCC to produce an executable, this does not cause
368c2ecf20Sopenharmony_ci *    the resulting executable to be covered by the GNU General Public License.
378c2ecf20Sopenharmony_ci *    This exception does not however invalidate any other reasons why
388c2ecf20Sopenharmony_ci *    the executable file might be covered by the GNU General Public License.
398c2ecf20Sopenharmony_ci */
408c2ecf20Sopenharmony_ci
418c2ecf20Sopenharmony_ci#include <asm/ppc_asm.h>
428c2ecf20Sopenharmony_ci
438c2ecf20Sopenharmony_ci	.file	"crtsavres.S"
448c2ecf20Sopenharmony_ci
458c2ecf20Sopenharmony_ci#ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
468c2ecf20Sopenharmony_ci
478c2ecf20Sopenharmony_ci	.section ".text"
488c2ecf20Sopenharmony_ci
498c2ecf20Sopenharmony_ci#ifndef CONFIG_PPC64
508c2ecf20Sopenharmony_ci
518c2ecf20Sopenharmony_ci/* Routines for saving integer registers, called by the compiler.  */
528c2ecf20Sopenharmony_ci/* Called with r11 pointing to the stack header word of the caller of the */
538c2ecf20Sopenharmony_ci/* function, just beyond the end of the integer save area.  */
548c2ecf20Sopenharmony_ci
558c2ecf20Sopenharmony_ci_GLOBAL(_savegpr_14)
568c2ecf20Sopenharmony_ci_GLOBAL(_save32gpr_14)
578c2ecf20Sopenharmony_ci	stw	14,-72(11)	/* save gp registers */
588c2ecf20Sopenharmony_ci_GLOBAL(_savegpr_15)
598c2ecf20Sopenharmony_ci_GLOBAL(_save32gpr_15)
608c2ecf20Sopenharmony_ci	stw	15,-68(11)
618c2ecf20Sopenharmony_ci_GLOBAL(_savegpr_16)
628c2ecf20Sopenharmony_ci_GLOBAL(_save32gpr_16)
638c2ecf20Sopenharmony_ci	stw	16,-64(11)
648c2ecf20Sopenharmony_ci_GLOBAL(_savegpr_17)
658c2ecf20Sopenharmony_ci_GLOBAL(_save32gpr_17)
668c2ecf20Sopenharmony_ci	stw	17,-60(11)
678c2ecf20Sopenharmony_ci_GLOBAL(_savegpr_18)
688c2ecf20Sopenharmony_ci_GLOBAL(_save32gpr_18)
698c2ecf20Sopenharmony_ci	stw	18,-56(11)
708c2ecf20Sopenharmony_ci_GLOBAL(_savegpr_19)
718c2ecf20Sopenharmony_ci_GLOBAL(_save32gpr_19)
728c2ecf20Sopenharmony_ci	stw	19,-52(11)
738c2ecf20Sopenharmony_ci_GLOBAL(_savegpr_20)
748c2ecf20Sopenharmony_ci_GLOBAL(_save32gpr_20)
758c2ecf20Sopenharmony_ci	stw	20,-48(11)
768c2ecf20Sopenharmony_ci_GLOBAL(_savegpr_21)
778c2ecf20Sopenharmony_ci_GLOBAL(_save32gpr_21)
788c2ecf20Sopenharmony_ci	stw	21,-44(11)
798c2ecf20Sopenharmony_ci_GLOBAL(_savegpr_22)
808c2ecf20Sopenharmony_ci_GLOBAL(_save32gpr_22)
818c2ecf20Sopenharmony_ci	stw	22,-40(11)
828c2ecf20Sopenharmony_ci_GLOBAL(_savegpr_23)
838c2ecf20Sopenharmony_ci_GLOBAL(_save32gpr_23)
848c2ecf20Sopenharmony_ci	stw	23,-36(11)
858c2ecf20Sopenharmony_ci_GLOBAL(_savegpr_24)
868c2ecf20Sopenharmony_ci_GLOBAL(_save32gpr_24)
878c2ecf20Sopenharmony_ci	stw	24,-32(11)
888c2ecf20Sopenharmony_ci_GLOBAL(_savegpr_25)
898c2ecf20Sopenharmony_ci_GLOBAL(_save32gpr_25)
908c2ecf20Sopenharmony_ci	stw	25,-28(11)
918c2ecf20Sopenharmony_ci_GLOBAL(_savegpr_26)
928c2ecf20Sopenharmony_ci_GLOBAL(_save32gpr_26)
938c2ecf20Sopenharmony_ci	stw	26,-24(11)
948c2ecf20Sopenharmony_ci_GLOBAL(_savegpr_27)
958c2ecf20Sopenharmony_ci_GLOBAL(_save32gpr_27)
968c2ecf20Sopenharmony_ci	stw	27,-20(11)
978c2ecf20Sopenharmony_ci_GLOBAL(_savegpr_28)
988c2ecf20Sopenharmony_ci_GLOBAL(_save32gpr_28)
998c2ecf20Sopenharmony_ci	stw	28,-16(11)
1008c2ecf20Sopenharmony_ci_GLOBAL(_savegpr_29)
1018c2ecf20Sopenharmony_ci_GLOBAL(_save32gpr_29)
1028c2ecf20Sopenharmony_ci	stw	29,-12(11)
1038c2ecf20Sopenharmony_ci_GLOBAL(_savegpr_30)
1048c2ecf20Sopenharmony_ci_GLOBAL(_save32gpr_30)
1058c2ecf20Sopenharmony_ci	stw	30,-8(11)
1068c2ecf20Sopenharmony_ci_GLOBAL(_savegpr_31)
1078c2ecf20Sopenharmony_ci_GLOBAL(_save32gpr_31)
1088c2ecf20Sopenharmony_ci	stw	31,-4(11)
1098c2ecf20Sopenharmony_ci	blr
1108c2ecf20Sopenharmony_ci
1118c2ecf20Sopenharmony_ci/* Routines for restoring integer registers, called by the compiler.  */
1128c2ecf20Sopenharmony_ci/* Called with r11 pointing to the stack header word of the caller of the */
1138c2ecf20Sopenharmony_ci/* function, just beyond the end of the integer restore area.  */
1148c2ecf20Sopenharmony_ci
1158c2ecf20Sopenharmony_ci_GLOBAL(_restgpr_14)
1168c2ecf20Sopenharmony_ci_GLOBAL(_rest32gpr_14)
1178c2ecf20Sopenharmony_ci	lwz	14,-72(11)	/* restore gp registers */
1188c2ecf20Sopenharmony_ci_GLOBAL(_restgpr_15)
1198c2ecf20Sopenharmony_ci_GLOBAL(_rest32gpr_15)
1208c2ecf20Sopenharmony_ci	lwz	15,-68(11)
1218c2ecf20Sopenharmony_ci_GLOBAL(_restgpr_16)
1228c2ecf20Sopenharmony_ci_GLOBAL(_rest32gpr_16)
1238c2ecf20Sopenharmony_ci	lwz	16,-64(11)
1248c2ecf20Sopenharmony_ci_GLOBAL(_restgpr_17)
1258c2ecf20Sopenharmony_ci_GLOBAL(_rest32gpr_17)
1268c2ecf20Sopenharmony_ci	lwz	17,-60(11)
1278c2ecf20Sopenharmony_ci_GLOBAL(_restgpr_18)
1288c2ecf20Sopenharmony_ci_GLOBAL(_rest32gpr_18)
1298c2ecf20Sopenharmony_ci	lwz	18,-56(11)
1308c2ecf20Sopenharmony_ci_GLOBAL(_restgpr_19)
1318c2ecf20Sopenharmony_ci_GLOBAL(_rest32gpr_19)
1328c2ecf20Sopenharmony_ci	lwz	19,-52(11)
1338c2ecf20Sopenharmony_ci_GLOBAL(_restgpr_20)
1348c2ecf20Sopenharmony_ci_GLOBAL(_rest32gpr_20)
1358c2ecf20Sopenharmony_ci	lwz	20,-48(11)
1368c2ecf20Sopenharmony_ci_GLOBAL(_restgpr_21)
1378c2ecf20Sopenharmony_ci_GLOBAL(_rest32gpr_21)
1388c2ecf20Sopenharmony_ci	lwz	21,-44(11)
1398c2ecf20Sopenharmony_ci_GLOBAL(_restgpr_22)
1408c2ecf20Sopenharmony_ci_GLOBAL(_rest32gpr_22)
1418c2ecf20Sopenharmony_ci	lwz	22,-40(11)
1428c2ecf20Sopenharmony_ci_GLOBAL(_restgpr_23)
1438c2ecf20Sopenharmony_ci_GLOBAL(_rest32gpr_23)
1448c2ecf20Sopenharmony_ci	lwz	23,-36(11)
1458c2ecf20Sopenharmony_ci_GLOBAL(_restgpr_24)
1468c2ecf20Sopenharmony_ci_GLOBAL(_rest32gpr_24)
1478c2ecf20Sopenharmony_ci	lwz	24,-32(11)
1488c2ecf20Sopenharmony_ci_GLOBAL(_restgpr_25)
1498c2ecf20Sopenharmony_ci_GLOBAL(_rest32gpr_25)
1508c2ecf20Sopenharmony_ci	lwz	25,-28(11)
1518c2ecf20Sopenharmony_ci_GLOBAL(_restgpr_26)
1528c2ecf20Sopenharmony_ci_GLOBAL(_rest32gpr_26)
1538c2ecf20Sopenharmony_ci	lwz	26,-24(11)
1548c2ecf20Sopenharmony_ci_GLOBAL(_restgpr_27)
1558c2ecf20Sopenharmony_ci_GLOBAL(_rest32gpr_27)
1568c2ecf20Sopenharmony_ci	lwz	27,-20(11)
1578c2ecf20Sopenharmony_ci_GLOBAL(_restgpr_28)
1588c2ecf20Sopenharmony_ci_GLOBAL(_rest32gpr_28)
1598c2ecf20Sopenharmony_ci	lwz	28,-16(11)
1608c2ecf20Sopenharmony_ci_GLOBAL(_restgpr_29)
1618c2ecf20Sopenharmony_ci_GLOBAL(_rest32gpr_29)
1628c2ecf20Sopenharmony_ci	lwz	29,-12(11)
1638c2ecf20Sopenharmony_ci_GLOBAL(_restgpr_30)
1648c2ecf20Sopenharmony_ci_GLOBAL(_rest32gpr_30)
1658c2ecf20Sopenharmony_ci	lwz	30,-8(11)
1668c2ecf20Sopenharmony_ci_GLOBAL(_restgpr_31)
1678c2ecf20Sopenharmony_ci_GLOBAL(_rest32gpr_31)
1688c2ecf20Sopenharmony_ci	lwz	31,-4(11)
1698c2ecf20Sopenharmony_ci	blr
1708c2ecf20Sopenharmony_ci
1718c2ecf20Sopenharmony_ci/* Routines for restoring integer registers, called by the compiler.  */
1728c2ecf20Sopenharmony_ci/* Called with r11 pointing to the stack header word of the caller of the */
1738c2ecf20Sopenharmony_ci/* function, just beyond the end of the integer restore area.  */
1748c2ecf20Sopenharmony_ci
1758c2ecf20Sopenharmony_ci_GLOBAL(_restgpr_14_x)
1768c2ecf20Sopenharmony_ci_GLOBAL(_rest32gpr_14_x)
1778c2ecf20Sopenharmony_ci	lwz	14,-72(11)	/* restore gp registers */
1788c2ecf20Sopenharmony_ci_GLOBAL(_restgpr_15_x)
1798c2ecf20Sopenharmony_ci_GLOBAL(_rest32gpr_15_x)
1808c2ecf20Sopenharmony_ci	lwz	15,-68(11)
1818c2ecf20Sopenharmony_ci_GLOBAL(_restgpr_16_x)
1828c2ecf20Sopenharmony_ci_GLOBAL(_rest32gpr_16_x)
1838c2ecf20Sopenharmony_ci	lwz	16,-64(11)
1848c2ecf20Sopenharmony_ci_GLOBAL(_restgpr_17_x)
1858c2ecf20Sopenharmony_ci_GLOBAL(_rest32gpr_17_x)
1868c2ecf20Sopenharmony_ci	lwz	17,-60(11)
1878c2ecf20Sopenharmony_ci_GLOBAL(_restgpr_18_x)
1888c2ecf20Sopenharmony_ci_GLOBAL(_rest32gpr_18_x)
1898c2ecf20Sopenharmony_ci	lwz	18,-56(11)
1908c2ecf20Sopenharmony_ci_GLOBAL(_restgpr_19_x)
1918c2ecf20Sopenharmony_ci_GLOBAL(_rest32gpr_19_x)
1928c2ecf20Sopenharmony_ci	lwz	19,-52(11)
1938c2ecf20Sopenharmony_ci_GLOBAL(_restgpr_20_x)
1948c2ecf20Sopenharmony_ci_GLOBAL(_rest32gpr_20_x)
1958c2ecf20Sopenharmony_ci	lwz	20,-48(11)
1968c2ecf20Sopenharmony_ci_GLOBAL(_restgpr_21_x)
1978c2ecf20Sopenharmony_ci_GLOBAL(_rest32gpr_21_x)
1988c2ecf20Sopenharmony_ci	lwz	21,-44(11)
1998c2ecf20Sopenharmony_ci_GLOBAL(_restgpr_22_x)
2008c2ecf20Sopenharmony_ci_GLOBAL(_rest32gpr_22_x)
2018c2ecf20Sopenharmony_ci	lwz	22,-40(11)
2028c2ecf20Sopenharmony_ci_GLOBAL(_restgpr_23_x)
2038c2ecf20Sopenharmony_ci_GLOBAL(_rest32gpr_23_x)
2048c2ecf20Sopenharmony_ci	lwz	23,-36(11)
2058c2ecf20Sopenharmony_ci_GLOBAL(_restgpr_24_x)
2068c2ecf20Sopenharmony_ci_GLOBAL(_rest32gpr_24_x)
2078c2ecf20Sopenharmony_ci	lwz	24,-32(11)
2088c2ecf20Sopenharmony_ci_GLOBAL(_restgpr_25_x)
2098c2ecf20Sopenharmony_ci_GLOBAL(_rest32gpr_25_x)
2108c2ecf20Sopenharmony_ci	lwz	25,-28(11)
2118c2ecf20Sopenharmony_ci_GLOBAL(_restgpr_26_x)
2128c2ecf20Sopenharmony_ci_GLOBAL(_rest32gpr_26_x)
2138c2ecf20Sopenharmony_ci	lwz	26,-24(11)
2148c2ecf20Sopenharmony_ci_GLOBAL(_restgpr_27_x)
2158c2ecf20Sopenharmony_ci_GLOBAL(_rest32gpr_27_x)
2168c2ecf20Sopenharmony_ci	lwz	27,-20(11)
2178c2ecf20Sopenharmony_ci_GLOBAL(_restgpr_28_x)
2188c2ecf20Sopenharmony_ci_GLOBAL(_rest32gpr_28_x)
2198c2ecf20Sopenharmony_ci	lwz	28,-16(11)
2208c2ecf20Sopenharmony_ci_GLOBAL(_restgpr_29_x)
2218c2ecf20Sopenharmony_ci_GLOBAL(_rest32gpr_29_x)
2228c2ecf20Sopenharmony_ci	lwz	29,-12(11)
2238c2ecf20Sopenharmony_ci_GLOBAL(_restgpr_30_x)
2248c2ecf20Sopenharmony_ci_GLOBAL(_rest32gpr_30_x)
2258c2ecf20Sopenharmony_ci	lwz	30,-8(11)
2268c2ecf20Sopenharmony_ci_GLOBAL(_restgpr_31_x)
2278c2ecf20Sopenharmony_ci_GLOBAL(_rest32gpr_31_x)
2288c2ecf20Sopenharmony_ci	lwz	0,4(11)
2298c2ecf20Sopenharmony_ci	lwz	31,-4(11)
2308c2ecf20Sopenharmony_ci	mtlr	0
2318c2ecf20Sopenharmony_ci	mr	1,11
2328c2ecf20Sopenharmony_ci	blr
2338c2ecf20Sopenharmony_ci
2348c2ecf20Sopenharmony_ci#ifdef CONFIG_ALTIVEC
2358c2ecf20Sopenharmony_ci/* Called with r0 pointing just beyond the end of the vector save area.  */
2368c2ecf20Sopenharmony_ci
2378c2ecf20Sopenharmony_ci_GLOBAL(_savevr_20)
2388c2ecf20Sopenharmony_ci	li	r11,-192
2398c2ecf20Sopenharmony_ci	stvx	v20,r11,r0
2408c2ecf20Sopenharmony_ci_GLOBAL(_savevr_21)
2418c2ecf20Sopenharmony_ci	li	r11,-176
2428c2ecf20Sopenharmony_ci	stvx	v21,r11,r0
2438c2ecf20Sopenharmony_ci_GLOBAL(_savevr_22)
2448c2ecf20Sopenharmony_ci	li	r11,-160
2458c2ecf20Sopenharmony_ci	stvx	v22,r11,r0
2468c2ecf20Sopenharmony_ci_GLOBAL(_savevr_23)
2478c2ecf20Sopenharmony_ci	li	r11,-144
2488c2ecf20Sopenharmony_ci	stvx	v23,r11,r0
2498c2ecf20Sopenharmony_ci_GLOBAL(_savevr_24)
2508c2ecf20Sopenharmony_ci	li	r11,-128
2518c2ecf20Sopenharmony_ci	stvx	v24,r11,r0
2528c2ecf20Sopenharmony_ci_GLOBAL(_savevr_25)
2538c2ecf20Sopenharmony_ci	li	r11,-112
2548c2ecf20Sopenharmony_ci	stvx	v25,r11,r0
2558c2ecf20Sopenharmony_ci_GLOBAL(_savevr_26)
2568c2ecf20Sopenharmony_ci	li	r11,-96
2578c2ecf20Sopenharmony_ci	stvx	v26,r11,r0
2588c2ecf20Sopenharmony_ci_GLOBAL(_savevr_27)
2598c2ecf20Sopenharmony_ci	li	r11,-80
2608c2ecf20Sopenharmony_ci	stvx	v27,r11,r0
2618c2ecf20Sopenharmony_ci_GLOBAL(_savevr_28)
2628c2ecf20Sopenharmony_ci	li	r11,-64
2638c2ecf20Sopenharmony_ci	stvx	v28,r11,r0
2648c2ecf20Sopenharmony_ci_GLOBAL(_savevr_29)
2658c2ecf20Sopenharmony_ci	li	r11,-48
2668c2ecf20Sopenharmony_ci	stvx	v29,r11,r0
2678c2ecf20Sopenharmony_ci_GLOBAL(_savevr_30)
2688c2ecf20Sopenharmony_ci	li	r11,-32
2698c2ecf20Sopenharmony_ci	stvx	v30,r11,r0
2708c2ecf20Sopenharmony_ci_GLOBAL(_savevr_31)
2718c2ecf20Sopenharmony_ci	li	r11,-16
2728c2ecf20Sopenharmony_ci	stvx	v31,r11,r0
2738c2ecf20Sopenharmony_ci	blr
2748c2ecf20Sopenharmony_ci
2758c2ecf20Sopenharmony_ci_GLOBAL(_restvr_20)
2768c2ecf20Sopenharmony_ci	li	r11,-192
2778c2ecf20Sopenharmony_ci	lvx	v20,r11,r0
2788c2ecf20Sopenharmony_ci_GLOBAL(_restvr_21)
2798c2ecf20Sopenharmony_ci	li	r11,-176
2808c2ecf20Sopenharmony_ci	lvx	v21,r11,r0
2818c2ecf20Sopenharmony_ci_GLOBAL(_restvr_22)
2828c2ecf20Sopenharmony_ci	li	r11,-160
2838c2ecf20Sopenharmony_ci	lvx	v22,r11,r0
2848c2ecf20Sopenharmony_ci_GLOBAL(_restvr_23)
2858c2ecf20Sopenharmony_ci	li	r11,-144
2868c2ecf20Sopenharmony_ci	lvx	v23,r11,r0
2878c2ecf20Sopenharmony_ci_GLOBAL(_restvr_24)
2888c2ecf20Sopenharmony_ci	li	r11,-128
2898c2ecf20Sopenharmony_ci	lvx	v24,r11,r0
2908c2ecf20Sopenharmony_ci_GLOBAL(_restvr_25)
2918c2ecf20Sopenharmony_ci	li	r11,-112
2928c2ecf20Sopenharmony_ci	lvx	v25,r11,r0
2938c2ecf20Sopenharmony_ci_GLOBAL(_restvr_26)
2948c2ecf20Sopenharmony_ci	li	r11,-96
2958c2ecf20Sopenharmony_ci	lvx	v26,r11,r0
2968c2ecf20Sopenharmony_ci_GLOBAL(_restvr_27)
2978c2ecf20Sopenharmony_ci	li	r11,-80
2988c2ecf20Sopenharmony_ci	lvx	v27,r11,r0
2998c2ecf20Sopenharmony_ci_GLOBAL(_restvr_28)
3008c2ecf20Sopenharmony_ci	li	r11,-64
3018c2ecf20Sopenharmony_ci	lvx	v28,r11,r0
3028c2ecf20Sopenharmony_ci_GLOBAL(_restvr_29)
3038c2ecf20Sopenharmony_ci	li	r11,-48
3048c2ecf20Sopenharmony_ci	lvx	v29,r11,r0
3058c2ecf20Sopenharmony_ci_GLOBAL(_restvr_30)
3068c2ecf20Sopenharmony_ci	li	r11,-32
3078c2ecf20Sopenharmony_ci	lvx	v30,r11,r0
3088c2ecf20Sopenharmony_ci_GLOBAL(_restvr_31)
3098c2ecf20Sopenharmony_ci	li	r11,-16
3108c2ecf20Sopenharmony_ci	lvx	v31,r11,r0
3118c2ecf20Sopenharmony_ci	blr
3128c2ecf20Sopenharmony_ci
3138c2ecf20Sopenharmony_ci#endif /* CONFIG_ALTIVEC */
3148c2ecf20Sopenharmony_ci
3158c2ecf20Sopenharmony_ci#else /* CONFIG_PPC64 */
3168c2ecf20Sopenharmony_ci
3178c2ecf20Sopenharmony_ci.globl	_savegpr0_14
3188c2ecf20Sopenharmony_ci_savegpr0_14:
3198c2ecf20Sopenharmony_ci	std	r14,-144(r1)
3208c2ecf20Sopenharmony_ci.globl	_savegpr0_15
3218c2ecf20Sopenharmony_ci_savegpr0_15:
3228c2ecf20Sopenharmony_ci	std	r15,-136(r1)
3238c2ecf20Sopenharmony_ci.globl	_savegpr0_16
3248c2ecf20Sopenharmony_ci_savegpr0_16:
3258c2ecf20Sopenharmony_ci	std	r16,-128(r1)
3268c2ecf20Sopenharmony_ci.globl	_savegpr0_17
3278c2ecf20Sopenharmony_ci_savegpr0_17:
3288c2ecf20Sopenharmony_ci	std	r17,-120(r1)
3298c2ecf20Sopenharmony_ci.globl	_savegpr0_18
3308c2ecf20Sopenharmony_ci_savegpr0_18:
3318c2ecf20Sopenharmony_ci	std	r18,-112(r1)
3328c2ecf20Sopenharmony_ci.globl	_savegpr0_19
3338c2ecf20Sopenharmony_ci_savegpr0_19:
3348c2ecf20Sopenharmony_ci	std	r19,-104(r1)
3358c2ecf20Sopenharmony_ci.globl	_savegpr0_20
3368c2ecf20Sopenharmony_ci_savegpr0_20:
3378c2ecf20Sopenharmony_ci	std	r20,-96(r1)
3388c2ecf20Sopenharmony_ci.globl	_savegpr0_21
3398c2ecf20Sopenharmony_ci_savegpr0_21:
3408c2ecf20Sopenharmony_ci	std	r21,-88(r1)
3418c2ecf20Sopenharmony_ci.globl	_savegpr0_22
3428c2ecf20Sopenharmony_ci_savegpr0_22:
3438c2ecf20Sopenharmony_ci	std	r22,-80(r1)
3448c2ecf20Sopenharmony_ci.globl	_savegpr0_23
3458c2ecf20Sopenharmony_ci_savegpr0_23:
3468c2ecf20Sopenharmony_ci	std	r23,-72(r1)
3478c2ecf20Sopenharmony_ci.globl	_savegpr0_24
3488c2ecf20Sopenharmony_ci_savegpr0_24:
3498c2ecf20Sopenharmony_ci	std	r24,-64(r1)
3508c2ecf20Sopenharmony_ci.globl	_savegpr0_25
3518c2ecf20Sopenharmony_ci_savegpr0_25:
3528c2ecf20Sopenharmony_ci	std	r25,-56(r1)
3538c2ecf20Sopenharmony_ci.globl	_savegpr0_26
3548c2ecf20Sopenharmony_ci_savegpr0_26:
3558c2ecf20Sopenharmony_ci	std	r26,-48(r1)
3568c2ecf20Sopenharmony_ci.globl	_savegpr0_27
3578c2ecf20Sopenharmony_ci_savegpr0_27:
3588c2ecf20Sopenharmony_ci	std	r27,-40(r1)
3598c2ecf20Sopenharmony_ci.globl	_savegpr0_28
3608c2ecf20Sopenharmony_ci_savegpr0_28:
3618c2ecf20Sopenharmony_ci	std	r28,-32(r1)
3628c2ecf20Sopenharmony_ci.globl	_savegpr0_29
3638c2ecf20Sopenharmony_ci_savegpr0_29:
3648c2ecf20Sopenharmony_ci	std	r29,-24(r1)
3658c2ecf20Sopenharmony_ci.globl	_savegpr0_30
3668c2ecf20Sopenharmony_ci_savegpr0_30:
3678c2ecf20Sopenharmony_ci	std	r30,-16(r1)
3688c2ecf20Sopenharmony_ci.globl	_savegpr0_31
3698c2ecf20Sopenharmony_ci_savegpr0_31:
3708c2ecf20Sopenharmony_ci	std	r31,-8(r1)
3718c2ecf20Sopenharmony_ci	std	r0,16(r1)
3728c2ecf20Sopenharmony_ci	blr
3738c2ecf20Sopenharmony_ci
3748c2ecf20Sopenharmony_ci.globl	_restgpr0_14
3758c2ecf20Sopenharmony_ci_restgpr0_14:
3768c2ecf20Sopenharmony_ci	ld	r14,-144(r1)
3778c2ecf20Sopenharmony_ci.globl	_restgpr0_15
3788c2ecf20Sopenharmony_ci_restgpr0_15:
3798c2ecf20Sopenharmony_ci	ld	r15,-136(r1)
3808c2ecf20Sopenharmony_ci.globl	_restgpr0_16
3818c2ecf20Sopenharmony_ci_restgpr0_16:
3828c2ecf20Sopenharmony_ci	ld	r16,-128(r1)
3838c2ecf20Sopenharmony_ci.globl	_restgpr0_17
3848c2ecf20Sopenharmony_ci_restgpr0_17:
3858c2ecf20Sopenharmony_ci	ld	r17,-120(r1)
3868c2ecf20Sopenharmony_ci.globl	_restgpr0_18
3878c2ecf20Sopenharmony_ci_restgpr0_18:
3888c2ecf20Sopenharmony_ci	ld	r18,-112(r1)
3898c2ecf20Sopenharmony_ci.globl	_restgpr0_19
3908c2ecf20Sopenharmony_ci_restgpr0_19:
3918c2ecf20Sopenharmony_ci	ld	r19,-104(r1)
3928c2ecf20Sopenharmony_ci.globl	_restgpr0_20
3938c2ecf20Sopenharmony_ci_restgpr0_20:
3948c2ecf20Sopenharmony_ci	ld	r20,-96(r1)
3958c2ecf20Sopenharmony_ci.globl	_restgpr0_21
3968c2ecf20Sopenharmony_ci_restgpr0_21:
3978c2ecf20Sopenharmony_ci	ld	r21,-88(r1)
3988c2ecf20Sopenharmony_ci.globl	_restgpr0_22
3998c2ecf20Sopenharmony_ci_restgpr0_22:
4008c2ecf20Sopenharmony_ci	ld	r22,-80(r1)
4018c2ecf20Sopenharmony_ci.globl	_restgpr0_23
4028c2ecf20Sopenharmony_ci_restgpr0_23:
4038c2ecf20Sopenharmony_ci	ld	r23,-72(r1)
4048c2ecf20Sopenharmony_ci.globl	_restgpr0_24
4058c2ecf20Sopenharmony_ci_restgpr0_24:
4068c2ecf20Sopenharmony_ci	ld	r24,-64(r1)
4078c2ecf20Sopenharmony_ci.globl	_restgpr0_25
4088c2ecf20Sopenharmony_ci_restgpr0_25:
4098c2ecf20Sopenharmony_ci	ld	r25,-56(r1)
4108c2ecf20Sopenharmony_ci.globl	_restgpr0_26
4118c2ecf20Sopenharmony_ci_restgpr0_26:
4128c2ecf20Sopenharmony_ci	ld	r26,-48(r1)
4138c2ecf20Sopenharmony_ci.globl	_restgpr0_27
4148c2ecf20Sopenharmony_ci_restgpr0_27:
4158c2ecf20Sopenharmony_ci	ld	r27,-40(r1)
4168c2ecf20Sopenharmony_ci.globl	_restgpr0_28
4178c2ecf20Sopenharmony_ci_restgpr0_28:
4188c2ecf20Sopenharmony_ci	ld	r28,-32(r1)
4198c2ecf20Sopenharmony_ci.globl	_restgpr0_29
4208c2ecf20Sopenharmony_ci_restgpr0_29:
4218c2ecf20Sopenharmony_ci	ld	r0,16(r1)
4228c2ecf20Sopenharmony_ci	ld	r29,-24(r1)
4238c2ecf20Sopenharmony_ci	mtlr	r0
4248c2ecf20Sopenharmony_ci	ld	r30,-16(r1)
4258c2ecf20Sopenharmony_ci	ld	r31,-8(r1)
4268c2ecf20Sopenharmony_ci	blr
4278c2ecf20Sopenharmony_ci
4288c2ecf20Sopenharmony_ci.globl	_restgpr0_30
4298c2ecf20Sopenharmony_ci_restgpr0_30:
4308c2ecf20Sopenharmony_ci	ld	r30,-16(r1)
4318c2ecf20Sopenharmony_ci.globl	_restgpr0_31
4328c2ecf20Sopenharmony_ci_restgpr0_31:
4338c2ecf20Sopenharmony_ci	ld	r0,16(r1)
4348c2ecf20Sopenharmony_ci	ld	r31,-8(r1)
4358c2ecf20Sopenharmony_ci	mtlr	r0
4368c2ecf20Sopenharmony_ci	blr
4378c2ecf20Sopenharmony_ci
4388c2ecf20Sopenharmony_ci#ifdef CONFIG_ALTIVEC
4398c2ecf20Sopenharmony_ci/* Called with r0 pointing just beyond the end of the vector save area.  */
4408c2ecf20Sopenharmony_ci
4418c2ecf20Sopenharmony_ci.globl	_savevr_20
4428c2ecf20Sopenharmony_ci_savevr_20:
4438c2ecf20Sopenharmony_ci	li	r12,-192
4448c2ecf20Sopenharmony_ci	stvx	v20,r12,r0
4458c2ecf20Sopenharmony_ci.globl	_savevr_21
4468c2ecf20Sopenharmony_ci_savevr_21:
4478c2ecf20Sopenharmony_ci	li	r12,-176
4488c2ecf20Sopenharmony_ci	stvx	v21,r12,r0
4498c2ecf20Sopenharmony_ci.globl	_savevr_22
4508c2ecf20Sopenharmony_ci_savevr_22:
4518c2ecf20Sopenharmony_ci	li	r12,-160
4528c2ecf20Sopenharmony_ci	stvx	v22,r12,r0
4538c2ecf20Sopenharmony_ci.globl	_savevr_23
4548c2ecf20Sopenharmony_ci_savevr_23:
4558c2ecf20Sopenharmony_ci	li	r12,-144
4568c2ecf20Sopenharmony_ci	stvx	v23,r12,r0
4578c2ecf20Sopenharmony_ci.globl	_savevr_24
4588c2ecf20Sopenharmony_ci_savevr_24:
4598c2ecf20Sopenharmony_ci	li	r12,-128
4608c2ecf20Sopenharmony_ci	stvx	v24,r12,r0
4618c2ecf20Sopenharmony_ci.globl	_savevr_25
4628c2ecf20Sopenharmony_ci_savevr_25:
4638c2ecf20Sopenharmony_ci	li	r12,-112
4648c2ecf20Sopenharmony_ci	stvx	v25,r12,r0
4658c2ecf20Sopenharmony_ci.globl	_savevr_26
4668c2ecf20Sopenharmony_ci_savevr_26:
4678c2ecf20Sopenharmony_ci	li	r12,-96
4688c2ecf20Sopenharmony_ci	stvx	v26,r12,r0
4698c2ecf20Sopenharmony_ci.globl	_savevr_27
4708c2ecf20Sopenharmony_ci_savevr_27:
4718c2ecf20Sopenharmony_ci	li	r12,-80
4728c2ecf20Sopenharmony_ci	stvx	v27,r12,r0
4738c2ecf20Sopenharmony_ci.globl	_savevr_28
4748c2ecf20Sopenharmony_ci_savevr_28:
4758c2ecf20Sopenharmony_ci	li	r12,-64
4768c2ecf20Sopenharmony_ci	stvx	v28,r12,r0
4778c2ecf20Sopenharmony_ci.globl	_savevr_29
4788c2ecf20Sopenharmony_ci_savevr_29:
4798c2ecf20Sopenharmony_ci	li	r12,-48
4808c2ecf20Sopenharmony_ci	stvx	v29,r12,r0
4818c2ecf20Sopenharmony_ci.globl	_savevr_30
4828c2ecf20Sopenharmony_ci_savevr_30:
4838c2ecf20Sopenharmony_ci	li	r12,-32
4848c2ecf20Sopenharmony_ci	stvx	v30,r12,r0
4858c2ecf20Sopenharmony_ci.globl	_savevr_31
4868c2ecf20Sopenharmony_ci_savevr_31:
4878c2ecf20Sopenharmony_ci	li	r12,-16
4888c2ecf20Sopenharmony_ci	stvx	v31,r12,r0
4898c2ecf20Sopenharmony_ci	blr
4908c2ecf20Sopenharmony_ci
4918c2ecf20Sopenharmony_ci.globl	_restvr_20
4928c2ecf20Sopenharmony_ci_restvr_20:
4938c2ecf20Sopenharmony_ci	li	r12,-192
4948c2ecf20Sopenharmony_ci	lvx	v20,r12,r0
4958c2ecf20Sopenharmony_ci.globl	_restvr_21
4968c2ecf20Sopenharmony_ci_restvr_21:
4978c2ecf20Sopenharmony_ci	li	r12,-176
4988c2ecf20Sopenharmony_ci	lvx	v21,r12,r0
4998c2ecf20Sopenharmony_ci.globl	_restvr_22
5008c2ecf20Sopenharmony_ci_restvr_22:
5018c2ecf20Sopenharmony_ci	li	r12,-160
5028c2ecf20Sopenharmony_ci	lvx	v22,r12,r0
5038c2ecf20Sopenharmony_ci.globl	_restvr_23
5048c2ecf20Sopenharmony_ci_restvr_23:
5058c2ecf20Sopenharmony_ci	li	r12,-144
5068c2ecf20Sopenharmony_ci	lvx	v23,r12,r0
5078c2ecf20Sopenharmony_ci.globl	_restvr_24
5088c2ecf20Sopenharmony_ci_restvr_24:
5098c2ecf20Sopenharmony_ci	li	r12,-128
5108c2ecf20Sopenharmony_ci	lvx	v24,r12,r0
5118c2ecf20Sopenharmony_ci.globl	_restvr_25
5128c2ecf20Sopenharmony_ci_restvr_25:
5138c2ecf20Sopenharmony_ci	li	r12,-112
5148c2ecf20Sopenharmony_ci	lvx	v25,r12,r0
5158c2ecf20Sopenharmony_ci.globl	_restvr_26
5168c2ecf20Sopenharmony_ci_restvr_26:
5178c2ecf20Sopenharmony_ci	li	r12,-96
5188c2ecf20Sopenharmony_ci	lvx	v26,r12,r0
5198c2ecf20Sopenharmony_ci.globl	_restvr_27
5208c2ecf20Sopenharmony_ci_restvr_27:
5218c2ecf20Sopenharmony_ci	li	r12,-80
5228c2ecf20Sopenharmony_ci	lvx	v27,r12,r0
5238c2ecf20Sopenharmony_ci.globl	_restvr_28
5248c2ecf20Sopenharmony_ci_restvr_28:
5258c2ecf20Sopenharmony_ci	li	r12,-64
5268c2ecf20Sopenharmony_ci	lvx	v28,r12,r0
5278c2ecf20Sopenharmony_ci.globl	_restvr_29
5288c2ecf20Sopenharmony_ci_restvr_29:
5298c2ecf20Sopenharmony_ci	li	r12,-48
5308c2ecf20Sopenharmony_ci	lvx	v29,r12,r0
5318c2ecf20Sopenharmony_ci.globl	_restvr_30
5328c2ecf20Sopenharmony_ci_restvr_30:
5338c2ecf20Sopenharmony_ci	li	r12,-32
5348c2ecf20Sopenharmony_ci	lvx	v30,r12,r0
5358c2ecf20Sopenharmony_ci.globl	_restvr_31
5368c2ecf20Sopenharmony_ci_restvr_31:
5378c2ecf20Sopenharmony_ci	li	r12,-16
5388c2ecf20Sopenharmony_ci	lvx	v31,r12,r0
5398c2ecf20Sopenharmony_ci	blr
5408c2ecf20Sopenharmony_ci
5418c2ecf20Sopenharmony_ci#endif /* CONFIG_ALTIVEC */
5428c2ecf20Sopenharmony_ci
5438c2ecf20Sopenharmony_ci#endif /* CONFIG_PPC64 */
5448c2ecf20Sopenharmony_ci
5458c2ecf20Sopenharmony_ci#endif
546