2008-06-13 07:20:58 +10:00
/ *
* Special s u p p o r t f o r e a b i a n d S V R 4
*
* Copyright ( C ) 1 9 9 5 , 1 9 9 6 , 1 9 9 8 , 2 0 0 0 , 2 0 0 1 F r e e S o f t w a r e F o u n d a t i o n , I n c .
* Copyright 2 0 0 8 F r e e s c a l e S e m i c o n d u c t o r , I n c .
* Written B y M i c h a e l M e i s s n e r
*
* Based o n g c c / c o n f i g / r s60 0 0 / c r t s a v r e s . a s m f r o m g c c
2010-06-29 20:08:42 +00:00
* 6 4 bit a d d i t i o n s f r o m r e a d i n g t h e P P C e l f64 a b i d o c u m e n t .
2008-06-13 07:20:58 +10:00
*
* This f i l e i s f r e e s o f t w a r e ; you can redistribute it and/or modify it
* under t h e t e r m s o f t h e G N U G e n e r a l P u b l i c L i c e n s e a s p u b l i s h e d b y t h e
* Free S o f t w a r e F o u n d a t i o n ; either version 2, or (at your option) any
* later v e r s i o n .
*
* In a d d i t i o n t o t h e p e r m i s s i o n s i n t h e G N U G e n e r a l P u b l i c L i c e n s e , t h e
* Free S o f t w a r e F o u n d a t i o n g i v e s y o u u n l i m i t e d p e r m i s s i o n t o l i n k t h e
* compiled v e r s i o n o f t h i s f i l e w i t h o t h e r p r o g r a m s , a n d t o d i s t r i b u t e
* those p r o g r a m s w i t h o u t a n y r e s t r i c t i o n c o m i n g f r o m t h e u s e o f t h i s
* file. ( T h e G e n e r a l P u b l i c L i c e n s e r e s t r i c t i o n s d o a p p l y i n o t h e r
* respects; for example, they cover modification of the file, and
* distribution w h e n n o t l i n k e d i n t o a n o t h e r p r o g r a m . )
*
* This f i l e i s d i s t r i b u t e d i n t h e h o p e t h a t i t w i l l b e u s e f u l , b u t
* WITHOUT A N Y W A R R A N T Y ; without even the implied warranty of
* MERCHANTABILITY o r F I T N E S S F O R A P A R T I C U L A R P U R P O S E . S e e t h e G N U
* General P u b l i c L i c e n s e f o r m o r e d e t a i l s .
*
* You s h o u l d h a v e r e c e i v e d a c o p y o f t h e G N U G e n e r a l P u b l i c L i c e n s e
* along w i t h t h i s p r o g r a m ; see the file COPYING. If not, write to
* the F r e e S o f t w a r e F o u n d a t i o n , 5 1 F r a n k l i n S t r e e t , F i f t h F l o o r ,
* Boston, M A 0 2 1 1 0 - 1 3 0 1 , U S A .
*
* As a s p e c i a l e x c e p t i o n , i f y o u l i n k t h i s l i b r a r y w i t h f i l e s
* compiled w i t h G C C t o p r o d u c e a n e x e c u t a b l e , t h i s d o e s n o t c a u s e
* the r e s u l t i n g e x e c u t a b l e t o b e c o v e r e d b y t h e G N U G e n e r a l P u b l i c L i c e n s e .
* This e x c e p t i o n d o e s n o t h o w e v e r i n v a l i d a t e a n y o t h e r r e a s o n s w h y
* the e x e c u t a b l e f i l e m i g h t b e c o v e r e d b y t h e G N U G e n e r a l P u b l i c L i c e n s e .
* /
# include < a s m / p p c _ a s m . h >
.file " crtsavres. S "
# ifdef C O N F I G _ C C _ O P T I M I Z E _ F O R _ S I Z E
2010-06-29 20:08:42 +00:00
# ifndef C O N F I G _ P P C 6 4
2012-07-05 21:09:40 +00:00
.section " .text "
2008-06-13 07:20:58 +10:00
/* Routines for saving integer registers, called by the compiler. */
/* Called with r11 pointing to the stack header word of the caller of the */
/* function, just beyond the end of the integer save area. */
_ GLOBAL( _ s a v e g p r _ 1 4 )
_ GLOBAL( _ s a v e 3 2 g p r _ 1 4 )
stw 1 4 ,- 7 2 ( 1 1 ) / * s a v e g p r e g i s t e r s * /
_ GLOBAL( _ s a v e g p r _ 1 5 )
_ GLOBAL( _ s a v e 3 2 g p r _ 1 5 )
stw 1 5 ,- 6 8 ( 1 1 )
_ GLOBAL( _ s a v e g p r _ 1 6 )
_ GLOBAL( _ s a v e 3 2 g p r _ 1 6 )
stw 1 6 ,- 6 4 ( 1 1 )
_ GLOBAL( _ s a v e g p r _ 1 7 )
_ GLOBAL( _ s a v e 3 2 g p r _ 1 7 )
stw 1 7 ,- 6 0 ( 1 1 )
_ GLOBAL( _ s a v e g p r _ 1 8 )
_ GLOBAL( _ s a v e 3 2 g p r _ 1 8 )
stw 1 8 ,- 5 6 ( 1 1 )
_ GLOBAL( _ s a v e g p r _ 1 9 )
_ GLOBAL( _ s a v e 3 2 g p r _ 1 9 )
stw 1 9 ,- 5 2 ( 1 1 )
_ GLOBAL( _ s a v e g p r _ 2 0 )
_ GLOBAL( _ s a v e 3 2 g p r _ 2 0 )
stw 2 0 ,- 4 8 ( 1 1 )
_ GLOBAL( _ s a v e g p r _ 2 1 )
_ GLOBAL( _ s a v e 3 2 g p r _ 2 1 )
stw 2 1 ,- 4 4 ( 1 1 )
_ GLOBAL( _ s a v e g p r _ 2 2 )
_ GLOBAL( _ s a v e 3 2 g p r _ 2 2 )
stw 2 2 ,- 4 0 ( 1 1 )
_ GLOBAL( _ s a v e g p r _ 2 3 )
_ GLOBAL( _ s a v e 3 2 g p r _ 2 3 )
stw 2 3 ,- 3 6 ( 1 1 )
_ GLOBAL( _ s a v e g p r _ 2 4 )
_ GLOBAL( _ s a v e 3 2 g p r _ 2 4 )
stw 2 4 ,- 3 2 ( 1 1 )
_ GLOBAL( _ s a v e g p r _ 2 5 )
_ GLOBAL( _ s a v e 3 2 g p r _ 2 5 )
stw 2 5 ,- 2 8 ( 1 1 )
_ GLOBAL( _ s a v e g p r _ 2 6 )
_ GLOBAL( _ s a v e 3 2 g p r _ 2 6 )
stw 2 6 ,- 2 4 ( 1 1 )
_ GLOBAL( _ s a v e g p r _ 2 7 )
_ GLOBAL( _ s a v e 3 2 g p r _ 2 7 )
stw 2 7 ,- 2 0 ( 1 1 )
_ GLOBAL( _ s a v e g p r _ 2 8 )
_ GLOBAL( _ s a v e 3 2 g p r _ 2 8 )
stw 2 8 ,- 1 6 ( 1 1 )
_ GLOBAL( _ s a v e g p r _ 2 9 )
_ GLOBAL( _ s a v e 3 2 g p r _ 2 9 )
stw 2 9 ,- 1 2 ( 1 1 )
_ GLOBAL( _ s a v e g p r _ 3 0 )
_ GLOBAL( _ s a v e 3 2 g p r _ 3 0 )
stw 3 0 ,- 8 ( 1 1 )
_ GLOBAL( _ s a v e g p r _ 3 1 )
_ GLOBAL( _ s a v e 3 2 g p r _ 3 1 )
stw 3 1 ,- 4 ( 1 1 )
blr
/* Routines for restoring integer registers, called by the compiler. */
/* Called with r11 pointing to the stack header word of the caller of the */
/* function, just beyond the end of the integer restore area. */
_ GLOBAL( _ r e s t g p r _ 1 4 )
_ GLOBAL( _ r e s t 3 2 g p r _ 1 4 )
lwz 1 4 ,- 7 2 ( 1 1 ) / * r e s t o r e g p r e g i s t e r s * /
_ GLOBAL( _ r e s t g p r _ 1 5 )
_ GLOBAL( _ r e s t 3 2 g p r _ 1 5 )
lwz 1 5 ,- 6 8 ( 1 1 )
_ GLOBAL( _ r e s t g p r _ 1 6 )
_ GLOBAL( _ r e s t 3 2 g p r _ 1 6 )
lwz 1 6 ,- 6 4 ( 1 1 )
_ GLOBAL( _ r e s t g p r _ 1 7 )
_ GLOBAL( _ r e s t 3 2 g p r _ 1 7 )
lwz 1 7 ,- 6 0 ( 1 1 )
_ GLOBAL( _ r e s t g p r _ 1 8 )
_ GLOBAL( _ r e s t 3 2 g p r _ 1 8 )
lwz 1 8 ,- 5 6 ( 1 1 )
_ GLOBAL( _ r e s t g p r _ 1 9 )
_ GLOBAL( _ r e s t 3 2 g p r _ 1 9 )
lwz 1 9 ,- 5 2 ( 1 1 )
_ GLOBAL( _ r e s t g p r _ 2 0 )
_ GLOBAL( _ r e s t 3 2 g p r _ 2 0 )
lwz 2 0 ,- 4 8 ( 1 1 )
_ GLOBAL( _ r e s t g p r _ 2 1 )
_ GLOBAL( _ r e s t 3 2 g p r _ 2 1 )
lwz 2 1 ,- 4 4 ( 1 1 )
_ GLOBAL( _ r e s t g p r _ 2 2 )
_ GLOBAL( _ r e s t 3 2 g p r _ 2 2 )
lwz 2 2 ,- 4 0 ( 1 1 )
_ GLOBAL( _ r e s t g p r _ 2 3 )
_ GLOBAL( _ r e s t 3 2 g p r _ 2 3 )
lwz 2 3 ,- 3 6 ( 1 1 )
_ GLOBAL( _ r e s t g p r _ 2 4 )
_ GLOBAL( _ r e s t 3 2 g p r _ 2 4 )
lwz 2 4 ,- 3 2 ( 1 1 )
_ GLOBAL( _ r e s t g p r _ 2 5 )
_ GLOBAL( _ r e s t 3 2 g p r _ 2 5 )
lwz 2 5 ,- 2 8 ( 1 1 )
_ GLOBAL( _ r e s t g p r _ 2 6 )
_ GLOBAL( _ r e s t 3 2 g p r _ 2 6 )
lwz 2 6 ,- 2 4 ( 1 1 )
_ GLOBAL( _ r e s t g p r _ 2 7 )
_ GLOBAL( _ r e s t 3 2 g p r _ 2 7 )
lwz 2 7 ,- 2 0 ( 1 1 )
_ GLOBAL( _ r e s t g p r _ 2 8 )
_ GLOBAL( _ r e s t 3 2 g p r _ 2 8 )
lwz 2 8 ,- 1 6 ( 1 1 )
_ GLOBAL( _ r e s t g p r _ 2 9 )
_ GLOBAL( _ r e s t 3 2 g p r _ 2 9 )
lwz 2 9 ,- 1 2 ( 1 1 )
_ GLOBAL( _ r e s t g p r _ 3 0 )
_ GLOBAL( _ r e s t 3 2 g p r _ 3 0 )
lwz 3 0 ,- 8 ( 1 1 )
_ GLOBAL( _ r e s t g p r _ 3 1 )
_ GLOBAL( _ r e s t 3 2 g p r _ 3 1 )
lwz 3 1 ,- 4 ( 1 1 )
blr
/* Routines for restoring integer registers, called by the compiler. */
/* Called with r11 pointing to the stack header word of the caller of the */
/* function, just beyond the end of the integer restore area. */
_ GLOBAL( _ r e s t g p r _ 1 4 _ x )
_ GLOBAL( _ r e s t 3 2 g p r _ 1 4 _ x )
lwz 1 4 ,- 7 2 ( 1 1 ) / * r e s t o r e g p r e g i s t e r s * /
_ GLOBAL( _ r e s t g p r _ 1 5 _ x )
_ GLOBAL( _ r e s t 3 2 g p r _ 1 5 _ x )
lwz 1 5 ,- 6 8 ( 1 1 )
_ GLOBAL( _ r e s t g p r _ 1 6 _ x )
_ GLOBAL( _ r e s t 3 2 g p r _ 1 6 _ x )
lwz 1 6 ,- 6 4 ( 1 1 )
_ GLOBAL( _ r e s t g p r _ 1 7 _ x )
_ GLOBAL( _ r e s t 3 2 g p r _ 1 7 _ x )
lwz 1 7 ,- 6 0 ( 1 1 )
_ GLOBAL( _ r e s t g p r _ 1 8 _ x )
_ GLOBAL( _ r e s t 3 2 g p r _ 1 8 _ x )
lwz 1 8 ,- 5 6 ( 1 1 )
_ GLOBAL( _ r e s t g p r _ 1 9 _ x )
_ GLOBAL( _ r e s t 3 2 g p r _ 1 9 _ x )
lwz 1 9 ,- 5 2 ( 1 1 )
_ GLOBAL( _ r e s t g p r _ 2 0 _ x )
_ GLOBAL( _ r e s t 3 2 g p r _ 2 0 _ x )
lwz 2 0 ,- 4 8 ( 1 1 )
_ GLOBAL( _ r e s t g p r _ 2 1 _ x )
_ GLOBAL( _ r e s t 3 2 g p r _ 2 1 _ x )
lwz 2 1 ,- 4 4 ( 1 1 )
_ GLOBAL( _ r e s t g p r _ 2 2 _ x )
_ GLOBAL( _ r e s t 3 2 g p r _ 2 2 _ x )
lwz 2 2 ,- 4 0 ( 1 1 )
_ GLOBAL( _ r e s t g p r _ 2 3 _ x )
_ GLOBAL( _ r e s t 3 2 g p r _ 2 3 _ x )
lwz 2 3 ,- 3 6 ( 1 1 )
_ GLOBAL( _ r e s t g p r _ 2 4 _ x )
_ GLOBAL( _ r e s t 3 2 g p r _ 2 4 _ x )
lwz 2 4 ,- 3 2 ( 1 1 )
_ GLOBAL( _ r e s t g p r _ 2 5 _ x )
_ GLOBAL( _ r e s t 3 2 g p r _ 2 5 _ x )
lwz 2 5 ,- 2 8 ( 1 1 )
_ GLOBAL( _ r e s t g p r _ 2 6 _ x )
_ GLOBAL( _ r e s t 3 2 g p r _ 2 6 _ x )
lwz 2 6 ,- 2 4 ( 1 1 )
_ GLOBAL( _ r e s t g p r _ 2 7 _ x )
_ GLOBAL( _ r e s t 3 2 g p r _ 2 7 _ x )
lwz 2 7 ,- 2 0 ( 1 1 )
_ GLOBAL( _ r e s t g p r _ 2 8 _ x )
_ GLOBAL( _ r e s t 3 2 g p r _ 2 8 _ x )
lwz 2 8 ,- 1 6 ( 1 1 )
_ GLOBAL( _ r e s t g p r _ 2 9 _ x )
_ GLOBAL( _ r e s t 3 2 g p r _ 2 9 _ x )
lwz 2 9 ,- 1 2 ( 1 1 )
_ GLOBAL( _ r e s t g p r _ 3 0 _ x )
_ GLOBAL( _ r e s t 3 2 g p r _ 3 0 _ x )
lwz 3 0 ,- 8 ( 1 1 )
_ GLOBAL( _ r e s t g p r _ 3 1 _ x )
_ GLOBAL( _ r e s t 3 2 g p r _ 3 1 _ x )
lwz 0 ,4 ( 1 1 )
lwz 3 1 ,- 4 ( 1 1 )
mtlr 0
mr 1 ,1 1
blr
2010-06-29 20:08:42 +00:00
2013-12-30 15:31:17 +01:00
# ifdef C O N F I G _ A L T I V E C
/* Called with r0 pointing just beyond the end of the vector save area. */
_ GLOBAL( _ s a v e v r _ 2 0 )
li r11 ,- 1 9 2
2015-02-10 09:51:22 +11:00
stvx v20 ,r11 ,r0
2013-12-30 15:31:17 +01:00
_ GLOBAL( _ s a v e v r _ 2 1 )
li r11 ,- 1 7 6
2015-02-10 09:51:22 +11:00
stvx v21 ,r11 ,r0
2013-12-30 15:31:17 +01:00
_ GLOBAL( _ s a v e v r _ 2 2 )
li r11 ,- 1 6 0
2015-02-10 09:51:22 +11:00
stvx v22 ,r11 ,r0
2013-12-30 15:31:17 +01:00
_ GLOBAL( _ s a v e v r _ 2 3 )
li r11 ,- 1 4 4
2015-02-10 09:51:22 +11:00
stvx v23 ,r11 ,r0
2013-12-30 15:31:17 +01:00
_ GLOBAL( _ s a v e v r _ 2 4 )
li r11 ,- 1 2 8
2015-02-10 09:51:22 +11:00
stvx v24 ,r11 ,r0
2013-12-30 15:31:17 +01:00
_ GLOBAL( _ s a v e v r _ 2 5 )
li r11 ,- 1 1 2
2015-02-10 09:51:22 +11:00
stvx v25 ,r11 ,r0
2013-12-30 15:31:17 +01:00
_ GLOBAL( _ s a v e v r _ 2 6 )
li r11 ,- 9 6
2015-02-10 09:51:22 +11:00
stvx v26 ,r11 ,r0
2013-12-30 15:31:17 +01:00
_ GLOBAL( _ s a v e v r _ 2 7 )
li r11 ,- 8 0
2015-02-10 09:51:22 +11:00
stvx v27 ,r11 ,r0
2013-12-30 15:31:17 +01:00
_ GLOBAL( _ s a v e v r _ 2 8 )
li r11 ,- 6 4
2015-02-10 09:51:22 +11:00
stvx v28 ,r11 ,r0
2013-12-30 15:31:17 +01:00
_ GLOBAL( _ s a v e v r _ 2 9 )
li r11 ,- 4 8
2015-02-10 09:51:22 +11:00
stvx v29 ,r11 ,r0
2013-12-30 15:31:17 +01:00
_ GLOBAL( _ s a v e v r _ 3 0 )
li r11 ,- 3 2
2015-02-10 09:51:22 +11:00
stvx v30 ,r11 ,r0
2013-12-30 15:31:17 +01:00
_ GLOBAL( _ s a v e v r _ 3 1 )
li r11 ,- 1 6
2015-02-10 09:51:22 +11:00
stvx v31 ,r11 ,r0
2013-12-30 15:31:17 +01:00
blr
_ GLOBAL( _ r e s t v r _ 2 0 )
li r11 ,- 1 9 2
2015-02-10 09:51:22 +11:00
lvx v20 ,r11 ,r0
2013-12-30 15:31:17 +01:00
_ GLOBAL( _ r e s t v r _ 2 1 )
li r11 ,- 1 7 6
2015-02-10 09:51:22 +11:00
lvx v21 ,r11 ,r0
2013-12-30 15:31:17 +01:00
_ GLOBAL( _ r e s t v r _ 2 2 )
li r11 ,- 1 6 0
2015-02-10 09:51:22 +11:00
lvx v22 ,r11 ,r0
2013-12-30 15:31:17 +01:00
_ GLOBAL( _ r e s t v r _ 2 3 )
li r11 ,- 1 4 4
2015-02-10 09:51:22 +11:00
lvx v23 ,r11 ,r0
2013-12-30 15:31:17 +01:00
_ GLOBAL( _ r e s t v r _ 2 4 )
li r11 ,- 1 2 8
2015-02-10 09:51:22 +11:00
lvx v24 ,r11 ,r0
2013-12-30 15:31:17 +01:00
_ GLOBAL( _ r e s t v r _ 2 5 )
li r11 ,- 1 1 2
2015-02-10 09:51:22 +11:00
lvx v25 ,r11 ,r0
2013-12-30 15:31:17 +01:00
_ GLOBAL( _ r e s t v r _ 2 6 )
li r11 ,- 9 6
2015-02-10 09:51:22 +11:00
lvx v26 ,r11 ,r0
2013-12-30 15:31:17 +01:00
_ GLOBAL( _ r e s t v r _ 2 7 )
li r11 ,- 8 0
2015-02-10 09:51:22 +11:00
lvx v27 ,r11 ,r0
2013-12-30 15:31:17 +01:00
_ GLOBAL( _ r e s t v r _ 2 8 )
li r11 ,- 6 4
2015-02-10 09:51:22 +11:00
lvx v28 ,r11 ,r0
2013-12-30 15:31:17 +01:00
_ GLOBAL( _ r e s t v r _ 2 9 )
li r11 ,- 4 8
2015-02-10 09:51:22 +11:00
lvx v29 ,r11 ,r0
2013-12-30 15:31:17 +01:00
_ GLOBAL( _ r e s t v r _ 3 0 )
li r11 ,- 3 2
2015-02-10 09:51:22 +11:00
lvx v30 ,r11 ,r0
2013-12-30 15:31:17 +01:00
_ GLOBAL( _ r e s t v r _ 3 1 )
li r11 ,- 1 6
2015-02-10 09:51:22 +11:00
lvx v31 ,r11 ,r0
2013-12-30 15:31:17 +01:00
blr
# endif / * C O N F I G _ A L T I V E C * /
2010-06-29 20:08:42 +00:00
# else / * C O N F I G _ P P C 6 4 * /
2012-07-05 21:09:40 +00:00
.section " .text .save .restore " , " ax" ,@progbits
2010-06-29 20:08:42 +00:00
.globl _savegpr0_14
_savegpr0_14 :
std r14 ,- 1 4 4 ( r1 )
.globl _savegpr0_15
_savegpr0_15 :
std r15 ,- 1 3 6 ( r1 )
.globl _savegpr0_16
_savegpr0_16 :
std r16 ,- 1 2 8 ( r1 )
.globl _savegpr0_17
_savegpr0_17 :
std r17 ,- 1 2 0 ( r1 )
.globl _savegpr0_18
_savegpr0_18 :
std r18 ,- 1 1 2 ( r1 )
.globl _savegpr0_19
_savegpr0_19 :
std r19 ,- 1 0 4 ( r1 )
.globl _savegpr0_20
_savegpr0_20 :
std r20 ,- 9 6 ( r1 )
.globl _savegpr0_21
_savegpr0_21 :
std r21 ,- 8 8 ( r1 )
.globl _savegpr0_22
_savegpr0_22 :
std r22 ,- 8 0 ( r1 )
.globl _savegpr0_23
_savegpr0_23 :
std r23 ,- 7 2 ( r1 )
.globl _savegpr0_24
_savegpr0_24 :
std r24 ,- 6 4 ( r1 )
.globl _savegpr0_25
_savegpr0_25 :
std r25 ,- 5 6 ( r1 )
.globl _savegpr0_26
_savegpr0_26 :
std r26 ,- 4 8 ( r1 )
.globl _savegpr0_27
_savegpr0_27 :
std r27 ,- 4 0 ( r1 )
.globl _savegpr0_28
_savegpr0_28 :
std r28 ,- 3 2 ( r1 )
.globl _savegpr0_29
_savegpr0_29 :
std r29 ,- 2 4 ( r1 )
.globl _savegpr0_30
_savegpr0_30 :
std r30 ,- 1 6 ( r1 )
.globl _savegpr0_31
_savegpr0_31 :
std r31 ,- 8 ( r1 )
std r0 ,1 6 ( r1 )
blr
.globl _restgpr0_14
_restgpr0_14 :
ld r14 ,- 1 4 4 ( r1 )
.globl _restgpr0_15
_restgpr0_15 :
ld r15 ,- 1 3 6 ( r1 )
.globl _restgpr0_16
_restgpr0_16 :
ld r16 ,- 1 2 8 ( r1 )
.globl _restgpr0_17
_restgpr0_17 :
ld r17 ,- 1 2 0 ( r1 )
.globl _restgpr0_18
_restgpr0_18 :
ld r18 ,- 1 1 2 ( r1 )
.globl _restgpr0_19
_restgpr0_19 :
ld r19 ,- 1 0 4 ( r1 )
.globl _restgpr0_20
_restgpr0_20 :
ld r20 ,- 9 6 ( r1 )
.globl _restgpr0_21
_restgpr0_21 :
ld r21 ,- 8 8 ( r1 )
.globl _restgpr0_22
_restgpr0_22 :
ld r22 ,- 8 0 ( r1 )
.globl _restgpr0_23
_restgpr0_23 :
ld r23 ,- 7 2 ( r1 )
.globl _restgpr0_24
_restgpr0_24 :
ld r24 ,- 6 4 ( r1 )
.globl _restgpr0_25
_restgpr0_25 :
ld r25 ,- 5 6 ( r1 )
.globl _restgpr0_26
_restgpr0_26 :
ld r26 ,- 4 8 ( r1 )
.globl _restgpr0_27
_restgpr0_27 :
ld r27 ,- 4 0 ( r1 )
.globl _restgpr0_28
_restgpr0_28 :
ld r28 ,- 3 2 ( r1 )
.globl _restgpr0_29
_restgpr0_29 :
ld r0 ,1 6 ( r1 )
ld r29 ,- 2 4 ( r1 )
mtlr r0
ld r30 ,- 1 6 ( r1 )
ld r31 ,- 8 ( r1 )
blr
.globl _restgpr0_30
_restgpr0_30 :
ld r30 ,- 1 6 ( r1 )
.globl _restgpr0_31
_restgpr0_31 :
ld r0 ,1 6 ( r1 )
ld r31 ,- 8 ( r1 )
mtlr r0
blr
2013-12-30 15:31:17 +01:00
# ifdef C O N F I G _ A L T I V E C
/* Called with r0 pointing just beyond the end of the vector save area. */
.globl _savevr_20
_savevr_20 :
li r12 ,- 1 9 2
2015-02-10 09:51:22 +11:00
stvx v20 ,r12 ,r0
2013-12-30 15:31:17 +01:00
.globl _savevr_21
_savevr_21 :
li r12 ,- 1 7 6
2015-02-10 09:51:22 +11:00
stvx v21 ,r12 ,r0
2013-12-30 15:31:17 +01:00
.globl _savevr_22
_savevr_22 :
li r12 ,- 1 6 0
2015-02-10 09:51:22 +11:00
stvx v22 ,r12 ,r0
2013-12-30 15:31:17 +01:00
.globl _savevr_23
_savevr_23 :
li r12 ,- 1 4 4
2015-02-10 09:51:22 +11:00
stvx v23 ,r12 ,r0
2013-12-30 15:31:17 +01:00
.globl _savevr_24
_savevr_24 :
li r12 ,- 1 2 8
2015-02-10 09:51:22 +11:00
stvx v24 ,r12 ,r0
2013-12-30 15:31:17 +01:00
.globl _savevr_25
_savevr_25 :
li r12 ,- 1 1 2
2015-02-10 09:51:22 +11:00
stvx v25 ,r12 ,r0
2013-12-30 15:31:17 +01:00
.globl _savevr_26
_savevr_26 :
li r12 ,- 9 6
2015-02-10 09:51:22 +11:00
stvx v26 ,r12 ,r0
2013-12-30 15:31:17 +01:00
.globl _savevr_27
_savevr_27 :
li r12 ,- 8 0
2015-02-10 09:51:22 +11:00
stvx v27 ,r12 ,r0
2013-12-30 15:31:17 +01:00
.globl _savevr_28
_savevr_28 :
li r12 ,- 6 4
2015-02-10 09:51:22 +11:00
stvx v28 ,r12 ,r0
2013-12-30 15:31:17 +01:00
.globl _savevr_29
_savevr_29 :
li r12 ,- 4 8
2015-02-10 09:51:22 +11:00
stvx v29 ,r12 ,r0
2013-12-30 15:31:17 +01:00
.globl _savevr_30
_savevr_30 :
li r12 ,- 3 2
2015-02-10 09:51:22 +11:00
stvx v30 ,r12 ,r0
2013-12-30 15:31:17 +01:00
.globl _savevr_31
_savevr_31 :
li r12 ,- 1 6
2015-02-10 09:51:22 +11:00
stvx v31 ,r12 ,r0
2013-12-30 15:31:17 +01:00
blr
.globl _restvr_20
_restvr_20 :
li r12 ,- 1 9 2
2015-02-10 09:51:22 +11:00
lvx v20 ,r12 ,r0
2013-12-30 15:31:17 +01:00
.globl _restvr_21
_restvr_21 :
li r12 ,- 1 7 6
2015-02-10 09:51:22 +11:00
lvx v21 ,r12 ,r0
2013-12-30 15:31:17 +01:00
.globl _restvr_22
_restvr_22 :
li r12 ,- 1 6 0
2015-02-10 09:51:22 +11:00
lvx v22 ,r12 ,r0
2013-12-30 15:31:17 +01:00
.globl _restvr_23
_restvr_23 :
li r12 ,- 1 4 4
2015-02-10 09:51:22 +11:00
lvx v23 ,r12 ,r0
2013-12-30 15:31:17 +01:00
.globl _restvr_24
_restvr_24 :
li r12 ,- 1 2 8
2015-02-10 09:51:22 +11:00
lvx v24 ,r12 ,r0
2013-12-30 15:31:17 +01:00
.globl _restvr_25
_restvr_25 :
li r12 ,- 1 1 2
2015-02-10 09:51:22 +11:00
lvx v25 ,r12 ,r0
2013-12-30 15:31:17 +01:00
.globl _restvr_26
_restvr_26 :
li r12 ,- 9 6
2015-02-10 09:51:22 +11:00
lvx v26 ,r12 ,r0
2013-12-30 15:31:17 +01:00
.globl _restvr_27
_restvr_27 :
li r12 ,- 8 0
2015-02-10 09:51:22 +11:00
lvx v27 ,r12 ,r0
2013-12-30 15:31:17 +01:00
.globl _restvr_28
_restvr_28 :
li r12 ,- 6 4
2015-02-10 09:51:22 +11:00
lvx v28 ,r12 ,r0
2013-12-30 15:31:17 +01:00
.globl _restvr_29
_restvr_29 :
li r12 ,- 4 8
2015-02-10 09:51:22 +11:00
lvx v29 ,r12 ,r0
2013-12-30 15:31:17 +01:00
.globl _restvr_30
_restvr_30 :
li r12 ,- 3 2
2015-02-10 09:51:22 +11:00
lvx v30 ,r12 ,r0
2013-12-30 15:31:17 +01:00
.globl _restvr_31
_restvr_31 :
li r12 ,- 1 6
2015-02-10 09:51:22 +11:00
lvx v31 ,r12 ,r0
2013-12-30 15:31:17 +01:00
blr
# endif / * C O N F I G _ A L T I V E C * /
2010-06-29 20:08:42 +00:00
# endif / * C O N F I G _ P P C 6 4 * /
2008-06-13 07:20:58 +10:00
# endif