Subversion Repositories HelenOS-historic

Rev

Rev 199 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
189 decky 1
/*
2
 * Copyright (C) 2005 Martin Decky
3
 * All rights reserved.
4
 *
5
 * Redistribution and use in source and binary forms, with or without
6
 * modification, are permitted provided that the following conditions
7
 * are met:
8
 *
9
 * - Redistributions of source code must retain the above copyright
10
 *   notice, this list of conditions and the following disclaimer.
11
 * - Redistributions in binary form must reproduce the above copyright
12
 *   notice, this list of conditions and the following disclaimer in the
13
 *   documentation and/or other materials provided with the distribution.
14
 * - The name of the author may not be used to endorse or promote products
15
 *   derived from this software without specific prior written permission.
16
 *
17
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20
 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22
 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
 */
28
 
342 jermar 29
#ifndef __ppc32_MACRO_H__
30
#define __ppc32_MACRO_H__
31
 
189 decky 32
/*
33
 * PPC assembler macros
34
 */
35
 
36
/* Condition Register Bit Fields */
37
#define	cr0	0
38
#define	cr1	1
39
#define	cr2	2
40
#define	cr3	3
41
#define	cr4	4
42
#define	cr5	5
43
#define	cr6	6
44
#define	cr7	7
45
 
46
/* General Purpose Registers (GPRs) */
47
#define	r0	0
48
#define	r1	1
49
#define	r2	2
50
#define	r3	3
51
#define	r4	4
52
#define	r5	5
53
#define	r6	6
54
#define	r7	7
55
#define	r8	8
56
#define	r9	9
57
#define	r10	10
58
#define	r11	11
59
#define	r12	12
60
#define	r13	13
61
#define	r14	14
62
#define	r15	15
63
#define	r16	16
64
#define	r17	17
65
#define	r18	18
66
#define	r19	19
67
#define	r20	20
68
#define	r21	21
69
#define	r22	22
70
#define	r23	23
71
#define	r24	24
72
#define	r25	25
73
#define	r26	26
74
#define	r27	27
75
#define	r28	28
76
#define	r29	29
77
#define	r30	30
78
#define	r31	31
79
 
191 decky 80
/* GPR Aliases */
81
#define	sp	1
82
 
189 decky 83
/* Floating Point Registers (FPRs) */
84
#define	fr0	0
85
#define	fr1	1
86
#define	fr2	2
87
#define	fr3	3
88
#define	fr4	4
89
#define	fr5	5
90
#define	fr6	6
91
#define	fr7	7
92
#define	fr8	8
93
#define	fr9	9
94
#define	fr10	10
95
#define	fr11	11
96
#define	fr12	12
97
#define	fr13	13
98
#define	fr14	14
99
#define	fr15	15
100
#define	fr16	16
101
#define	fr17	17
102
#define	fr18	18
103
#define	fr19	19
104
#define	fr20	20
105
#define	fr21	21
106
#define	fr22	22
107
#define	fr23	23
108
#define	fr24	24
109
#define	fr25	25
110
#define	fr26	26
111
#define	fr27	27
112
#define	fr28	28
113
#define	fr29	29
114
#define	fr30	30
115
#define	fr31	31
116
 
117
#define	vr0	0
118
#define	vr1	1
119
#define	vr2	2
120
#define	vr3	3
121
#define	vr4	4
122
#define	vr5	5
123
#define	vr6	6
124
#define	vr7	7
125
#define	vr8	8
126
#define	vr9	9
127
#define	vr10	10
128
#define	vr11	11
129
#define	vr12	12
130
#define	vr13	13
131
#define	vr14	14
132
#define	vr15	15
133
#define	vr16	16
134
#define	vr17	17
135
#define	vr18	18
136
#define	vr19	19
137
#define	vr20	20
138
#define	vr21	21
139
#define	vr22	22
140
#define	vr23	23
141
#define	vr24	24
142
#define	vr25	25
143
#define	vr26	26
144
#define	vr27	27
145
#define	vr28	28
146
#define	vr29	29
147
#define	vr30	30
148
#define	vr31	31
149
 
150
#define	evr0	0
151
#define	evr1	1
152
#define	evr2	2
153
#define	evr3	3
154
#define	evr4	4
155
#define	evr5	5
156
#define	evr6	6
157
#define	evr7	7
158
#define	evr8	8
159
#define	evr9	9
160
#define	evr10	10
161
#define	evr11	11
162
#define	evr12	12
163
#define	evr13	13
164
#define	evr14	14
165
#define	evr15	15
166
#define	evr16	16
167
#define	evr17	17
168
#define	evr18	18
169
#define	evr19	19
170
#define	evr20	20
171
#define	evr21	21
172
#define	evr22	22
173
#define	evr23	23
174
#define	evr24	24
175
#define	evr25	25
176
#define	evr26	26
177
#define	evr27	27
178
#define	evr28	28
179
#define	evr29	29
180
#define	evr30	30
181
#define	evr31	31
182
 
183
/* Special Purpose Registers (SPRs) */
184
#define	xer	1
185
#define lr	8
186
#define ctr	9
187
#define	dec	22
188
#define	srr0	26
189
#define srr1	27
190
#define	sprg0	272
191
#define	sprg1	273
192
#define	sprg2	274
193
#define	sprg3	275
194
#define	prv	287
195
 
196
.macro REGISTERS_STORE r
199 decky 197
	stw r0, 0(\r)
198
	stw r1, 4(\r)
199
	stw r2, 8(\r)
200
	stw r3, 12(\r)
201
	stw r4, 16(\r)
202
	stw r5, 20(\r)
203
	stw r6, 24(\r)
204
	stw r7, 28(\r)
205
	stw r8, 32(\r)
206
	stw r9, 36(\r)
207
	stw r10, 40(\r)
208
	stw r11, 44(\r)
209
	stw r12, 48(\r)
210
	stw r13, 52(\r)
211
	stw r14, 56(\r)
212
	stw r15, 60(\r)
213
	stw r16, 64(\r)
214
	stw r17, 68(\r)
215
	stw r18, 72(\r)
216
	stw r19, 76(\r)
217
	stw r20, 80(\r)
218
	stw r21, 84(\r)
219
	stw r22, 88(\r)
220
	stw r23, 92(\r)
221
	stw r24, 96(\r)
222
	stw r25, 100(\r)
223
	stw r26, 104(\r)
224
	stw r27, 108(\r)
225
	stw r28, 112(\r)
226
	stw r29, 116(\r)
227
	stw r30, 120(\r)
228
	stw r31, 124(\r)
189 decky 229
.endm
230
 
231
.macro REGISTERS_LOAD r
199 decky 232
	lwz r0, 0(\r)
233
	lwz r1, 4(\r)
234
	lwz r2, 8(\r)  
235
	lwz r3, 12(\r)
236
	lwz r4, 16(\r) 
237
	lwz r5, 20(\r)
238
	lwz r6, 24(\r)
239
	lwz r7, 28(\r)
240
	lwz r8, 32(\r)
241
	lwz r9, 36(\r)
242
	lwz r10, 40(\r)
243
	lwz r11, 44(\r)
244
	lwz r12, 48(\r)
245
	lwz r13, 52(\r)
246
	lwz r14, 56(\r)
247
	lwz r15, 60(\r)
248
	lwz r16, 64(\r)
249
	lwz r17, 68(\r)
250
	lwz r18, 72(\r)
251
	lwz r19, 76(\r)
252
	lwz r20, 80(\r)
253
	lwz r21, 84(\r)
254
	lwz r22, 88(\r)
255
	lwz r23, 92(\r)
256
	lwz r24, 96(\r)
257
	lwz r25, 100(\r)
258
	lwz r26, 104(\r)
259
	lwz r27, 108(\r)
260
	lwz r28, 112(\r)
261
	lwz r29, 116(\r)
262
	lwz r30, 120(\r)
263
	lwz r31, 124(\r)
189 decky 264
.endm
342 jermar 265
 
266
#endif