* Renamed STATIC_CLASSPATH to ENABLE_STATICVM
[cacao.git] / src / vm / jit / alpha / md-asm.h
1 /* src/vm/jit/alpha/md-asm.h - assembler defines for Alpha ABI
2
3    Copyright (C) 1996-2005 R. Grafl, A. Krall, C. Kruegel, C. Oates,
4    R. Obermaisser, M. Platter, M. Probst, S. Ring, E. Steiner,
5    C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich, J. Wenninger,
6    Institut f. Computersprachen - TU Wien
7
8    This file is part of CACAO.
9
10    This program is free software; you can redistribute it and/or
11    modify it under the terms of the GNU General Public License as
12    published by the Free Software Foundation; either version 2, or (at
13    your option) any later version.
14
15    This program is distributed in the hope that it will be useful, but
16    WITHOUT ANY WARRANTY; without even the implied warranty of
17    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
18    General Public License for more details.
19
20    You should have received a copy of the GNU General Public License
21    along with this program; if not, write to the Free Software
22    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
23    02111-1307, USA.
24
25    Contact: cacao@complang.tuwien.ac.at
26
27    Authors: Christian Thalinger
28
29    Changes:
30
31    $Id: md-asm.h 2615 2005-06-08 20:54:18Z twisti $
32
33 */
34
35
36 #ifndef _MD_ASM_H
37 #define _MD_ASM_H
38
39
40 /* register defines ***********************************************************/
41
42 #define v0      $0
43
44 #define t0      $1
45 #define t1      $2
46 #define t2      $3
47 #define t3      $4
48 #define t4      $5
49 #define t5      $6
50 #define t6      $7
51 #define t7      $8
52
53 #define s0      $9
54 #define s1      $10
55 #define s2      $11
56 #define s3      $12
57 #define s4      $13
58 #define s5      $14
59 #define s6      $15
60
61 #define a0      $16
62 #define a1      $17
63 #define a2      $18
64 #define a3      $19
65 #define a4      $20
66 #define a5      $21
67
68 #define t8      $22
69 #define t9      $23
70 #define t10     $24
71 #define t11     $25
72 #define ra      $26
73 #define t12     $27
74
75 #define pv      t12
76 #define AT      $at
77 #define gp      $29
78 #define sp      $30
79 #define zero    $31
80
81 #define itmp1   t11
82 #define itmp2   $28
83 #define itmp3   gp
84
85 #define xptr    itmp1
86 #define xpc     itmp2
87
88
89 #define ft0     $f1
90
91 #define fs0     $f2
92 #define fs1     $f3
93 #define fs2     $f4
94 #define fs3     $f5
95 #define fs4     $f6
96 #define fs5     $f7
97 #define fs6     $f8
98 #define fs7     $f9
99
100 #define ft1     $f10
101 #define ft2     $f11
102 #define ft3     $f12
103 #define ft4     $f13
104 #define ft5     $f14
105 #define ft6     $f15
106
107 #define fa0     $f16
108 #define fa1     $f17
109 #define fa2     $f18
110 #define fa3     $f19
111 #define fa4     $f20
112 #define fa5     $f21
113
114 #define ft7     $f22
115 #define ft8     $f23
116 #define ft9     $f24
117 #define ft10    $f25
118 #define ft11    $f26
119 #define ft12    $f27
120 #define ft13    $f28
121 #define ft14    $f29
122 #define ft15    $f20
123
124 #define fzero   $f31
125
126 #define ftmp1   ft13
127 #define ftmp2   ft14
128 #define ftmp3   ft15
129
130 #define PAL_imb 0x86
131
132
133 /* save and restore macros ****************************************************/
134
135 #define SAVE_ARGUMENT_REGISTERS(off) \
136         stq     a0,(0+(off))*8(sp)      ; \
137         stq     a1,(1+(off))*8(sp)      ; \
138         stq     a2,(2+(off))*8(sp)      ; \
139         stq     a3,(3+(off))*8(sp)      ; \
140         stq     a4,(4+(off))*8(sp)      ; \
141         stq     a5,(5+(off))*8(sp)      ; \
142         \
143         stt     fa0,(6+(off))*8(sp)     ; \
144         stt     fa1,(7+(off))*8(sp)     ; \
145         stt     fa2,(8+(off))*8(sp)     ; \
146         stt     fa3,(9+(off))*8(sp)     ; \
147         stt     fa4,(10+(off))*8(sp)    ; \
148         stt     fa5,(11+(off))*8(sp)    ;
149
150 #define RESTORE_ARGUMENT_REGISTERS(off) \
151         ldq     a0,(0+(off))*8(sp)      ; \
152         ldq     a1,(1+(off))*8(sp)      ; \
153         ldq     a2,(2+(off))*8(sp)      ; \
154         ldq     a3,(3+(off))*8(sp)      ; \
155         ldq     a4,(4+(off))*8(sp)      ; \
156         ldq     a5,(5+(off))*8(sp)      ; \
157         \
158         ldt     fa0,(6+(off))*8(sp)     ; \
159         ldt     fa1,(7+(off))*8(sp)     ; \
160         ldt     fa2,(8+(off))*8(sp)     ; \
161         ldt     fa3,(9+(off))*8(sp)     ; \
162         ldt     fa4,(10+(off))*8(sp)    ; \
163         ldt     fa5,(11+(off))*8(sp)    ;
164                 
165 #define SAVE_TEMPORARY_REGISTERS(off) \
166         stq     t0,(0+(off))*8(sp)       ; \
167         stq     t1,(1+(off))*8(sp)       ; \
168         stq     t2,(2+(off))*8(sp)       ; \
169         stq     t3,(3+(off))*8(sp)       ; \
170         stq     t4,(4+(off))*8(sp)       ; \
171         stq     t5,(5+(off))*8(sp)       ; \
172         stq     t6,(6+(off))*8(sp)       ; \
173         stq     t7,(7+(off))*8(sp)       ; \
174         stq     t8,(8+(off))*8(sp)       ; \
175         stq     t9,(9+(off))*8(sp)       ; \
176         stq     t10,(10+(off))*8(sp)     ; \
177         \
178         stt     ft0,(11+(off))*8(sp)     ; \
179         stt     ft1,(12+(off))*8(sp)     ; \
180         stt     ft2,(13+(off))*8(sp)     ; \
181         stt     ft3,(14+(off))*8(sp)     ; \
182         stt     ft4,(15+(off))*8(sp)     ; \
183         stt     ft5,(16+(off))*8(sp)     ; \
184         stt     ft6,(17+(off))*8(sp)     ; \
185         stt     ft7,(18+(off))*8(sp)     ; \
186         stt     ft8,(19+(off))*8(sp)     ; \
187         stt     ft9,(20+(off))*8(sp)     ; \
188         stt     ft10,(21+(off))*8(sp)    ; \
189         stt     ft11,(22+(off))*8(sp)    ; \
190         stt     ft12,(23+(off))*8(sp)    ; \
191         stt     ft13,(24+(off))*8(sp)    ; \
192         stt     ft14,(25+(off))*8(sp)    ; \
193         stt     ft15,(26+(off))*8(sp)    ; 
194
195
196 #define RESTORE_TEMPORARY_REGISTERS(off) \
197         ldq     t0,(0+(off))*8(sp)       ; \
198         ldq     t1,(1+(off))*8(sp)       ; \
199         ldq     t2,(2+(off))*8(sp)       ; \
200         ldq     t3,(3+(off))*8(sp)       ; \
201         ldq     t4,(4+(off))*8(sp)       ; \
202         ldq     t5,(5+(off))*8(sp)       ; \
203         ldq     t6,(6+(off))*8(sp)       ; \
204         ldq     t7,(7+(off))*8(sp)       ; \
205         ldq     t8,(8+(off))*8(sp)       ; \
206         ldq     t9,(9+(off))*8(sp)       ; \
207         ldq     t10,(10+(off))*8(sp)     ; \
208         \
209         ldt     ft0,(11+(off))*8(sp)     ; \
210         ldt     ft1,(12+(off))*8(sp)     ; \
211         ldt     ft2,(13+(off))*8(sp)     ; \
212         ldt     ft3,(14+(off))*8(sp)     ; \
213         ldt     ft4,(15+(off))*8(sp)     ; \
214         ldt     ft5,(16+(off))*8(sp)     ; \
215         ldt     ft6,(17+(off))*8(sp)     ; \
216         ldt     ft7,(18+(off))*8(sp)     ; \
217         ldt     ft8,(19+(off))*8(sp)     ; \
218         ldt     ft9,(20+(off))*8(sp)     ; \
219         ldt     ft10,(21+(off))*8(sp)    ; \
220         ldt     ft11,(22+(off))*8(sp)    ; \
221         ldt     ft12,(23+(off))*8(sp)    ; \
222         ldt     ft13,(24+(off))*8(sp)    ; \
223         ldt     ft14,(25+(off))*8(sp)    ; \
224         ldt     ft15,(26+(off))*8(sp)    ; 
225
226 #endif /* _MD_ASM_H */
227
228
229 /*
230  * These are local overrides for various environment variables in Emacs.
231  * Please do not remove this and leave it at the end of the file, where
232  * Emacs will automagically detect them.
233  * ---------------------------------------------------------------------
234  * Local variables:
235  * mode: c
236  * indent-tabs-mode: t
237  * c-basic-offset: 4
238  * tab-width: 4
239  * End:
240  */