OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gcc-4.2.2/] [gcc/] [config/] [rs6000/] [darwin-vecsave.asm] - Blame information for rev 816

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 38 julius
/*  This file contains the vector save and restore routines.
2
 *
3
 *   Copyright (C) 2004 Free Software Foundation, Inc.
4
 *
5
 * This file is free software; you can redistribute it and/or modify it
6
 * under the terms of the GNU General Public License as published by the
7
 * Free Software Foundation; either version 2, or (at your option) any
8
 * later version.
9
 *
10
 * In addition to the permissions in the GNU General Public License, the
11
 * Free Software Foundation gives you unlimited permission to link the
12
 * compiled version of this file with other programs, and to distribute
13
 * those programs without any restriction coming from the use of this
14
 * file.  (The General Public License restrictions do apply in other
15
 * respects; for example, they cover modification of the file, and
16
 * distribution when not linked into another program.)
17
 *
18
 * This file is distributed in the hope that it will be useful, but
19
 * WITHOUT ANY WARRANTY; without even the implied warranty of
20
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
21
 * General Public License for more details.
22
 *
23
 * You should have received a copy of the GNU General Public License
24
 * along with this program; see the file COPYING.  If not, write to
25
 * the Free Software Foundation, 51 Franklin Street, Fifth Floor,
26
 * Boston, MA 02110-1301, USA.
27
 *
28
 *  As a special exception, if you link this library with files
29
 *  compiled with GCC to produce an executable, this does not cause the
30
 *  resulting executable to be covered by the GNU General Public License.
31
 *  This exception does not however invalidate any other reasons why the
32
 *  executable file might be covered by the GNU General Public License.
33
 */
34
 
35
/* Vector save/restore routines for Darwin.  Note that each vector
36
   save/restore requires 2 instructions (8 bytes.)
37
 
38
   THE SAVE AND RESTORE ROUTINES CAN HAVE ONLY ONE GLOBALLY VISIBLE
39
   ENTRY POINT - callers have to jump to "saveFP+60" to save f29..f31,
40
   for example.  For FP reg saves/restores, it takes one instruction
41
   (4 bytes) to do the operation; for Vector regs, 2 instructions are
42
   required (8 bytes.).   */
43
 
44
        .machine ppc7400
45
.text
46
        .align 2
47
 
48
.private_extern saveVEC
49
saveVEC:
50
        li r11,-192
51
        stvx v20,r11,r0
52
        li r11,-176
53
        stvx v21,r11,r0
54
        li r11,-160
55
        stvx v22,r11,r0
56
        li r11,-144
57
        stvx v23,r11,r0
58
        li r11,-128
59
        stvx v24,r11,r0
60
        li r11,-112
61
        stvx v25,r11,r0
62
        li r11,-96
63
        stvx v26,r11,r0
64
        li r11,-80
65
        stvx v27,r11,r0
66
        li r11,-64
67
        stvx v28,r11,r0
68
        li r11,-48
69
        stvx v29,r11,r0
70
        li r11,-32
71
        stvx v30,r11,r0
72
        li r11,-16
73
        stvx v31,r11,r0
74
        blr
75
 
76
.private_extern restVEC
77
restVEC:
78
        li r11,-192
79
        lvx v20,r11,r0
80
        li r11,-176
81
        lvx v21,r11,r0
82
        li r11,-160
83
        lvx v22,r11,r0
84
        li r11,-144
85
        lvx v23,r11,r0
86
        li r11,-128
87
        lvx v24,r11,r0
88
        li r11,-112
89
        lvx v25,r11,r0
90
        li r11,-96
91
        lvx v26,r11,r0
92
        li r11,-80
93
        lvx v27,r11,r0
94
        li r11,-64
95
        lvx v28,r11,r0
96
        li r11,-48
97
        lvx v29,r11,r0
98
        li r11,-32
99
        lvx v30,r11,r0
100
        li r11,-16
101
        lvx v31,r11,r0
102
        blr
103
 
104
/* saveVEC_vr11 -- as saveVEC but VRsave is returned in R11.  */
105
 
106
.private_extern saveVEC_vr11
107
saveVEC_vr11:
108
        li r11,-192
109
        stvx v20,r11,r0
110
        li r11,-176
111
        stvx v21,r11,r0
112
        li r11,-160
113
        stvx v22,r11,r0
114
        li r11,-144
115
        stvx v23,r11,r0
116
        li r11,-128
117
        stvx v24,r11,r0
118
        li r11,-112
119
        stvx v25,r11,r0
120
        li r11,-96
121
        stvx v26,r11,r0
122
        li r11,-80
123
        stvx v27,r11,r0
124
        li r11,-64
125
        stvx v28,r11,r0
126
        li r11,-48
127
        stvx v29,r11,r0
128
        li r11,-32
129
        stvx v30,r11,r0
130
        li r11,-16
131
        stvx v31,r11,r0
132
        mfspr r11,VRsave
133
        blr
134
 
135
/* As restVec, but the original VRsave value passed in R10.  */
136
 
137
.private_extern restVEC_vr10
138
restVEC_vr10:
139
        li r11,-192
140
        lvx v20,r11,r0
141
        li r11,-176
142
        lvx v21,r11,r0
143
        li r11,-160
144
        lvx v22,r11,r0
145
        li r11,-144
146
        lvx v23,r11,r0
147
        li r11,-128
148
        lvx v24,r11,r0
149
        li r11,-112
150
        lvx v25,r11,r0
151
        li r11,-96
152
        lvx v26,r11,r0
153
        li r11,-80
154
        lvx v27,r11,r0
155
        li r11,-64
156
        lvx v28,r11,r0
157
        li r11,-48
158
        lvx v29,r11,r0
159
        li r11,-32
160
        lvx v30,r11,r0
161
        li r11,-16
162
        lvx v31,r11,r0
163
                                /* restore VRsave from R10.  */
164
        mtspr VRsave,r10
165
        blr

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.