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

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [include/] [asm-mips/] [asmmacro.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1276 phoenix
/*
2
 * asmmacro.h: Assembler macros to make things easier to read.
3
 *
4
 * Copyright (C) 1996 David S. Miller (dm@engr.sgi.com)
5
 * Copyright (C) 1998 Ralf Baechle
6
 */
7
#ifndef _ASM_ASMMACRO_H
8
#define _ASM_ASMMACRO_H
9
 
10
#include <linux/config.h>
11
#include <asm/offset.h>
12
 
13
#ifdef CONFIG_CPU_SB1
14
#define FPU_ENABLE_HAZARD               \
15
        .set    push;                   \
16
        .set    noreorder;              \
17
        .set    mips2;                  \
18
        SSNOP;                          \
19
        bnezl   $0, .+4;         \
20
         SSNOP;                         \
21
        .set    pop
22
#else
23
#define FPU_ENABLE_HAZARD
24
#endif
25
 
26
#define FPU_SAVE_DOUBLE(thread, tmp) \
27
        cfc1    tmp,  fcr31;                    \
28
        sdc1    $f0,  (THREAD_FPU + 0x000)(thread); \
29
        sdc1    $f2,  (THREAD_FPU + 0x010)(thread); \
30
        sdc1    $f4,  (THREAD_FPU + 0x020)(thread); \
31
        sdc1    $f6,  (THREAD_FPU + 0x030)(thread); \
32
        sdc1    $f8,  (THREAD_FPU + 0x040)(thread); \
33
        sdc1    $f10, (THREAD_FPU + 0x050)(thread); \
34
        sdc1    $f12, (THREAD_FPU + 0x060)(thread); \
35
        sdc1    $f14, (THREAD_FPU + 0x070)(thread); \
36
        sdc1    $f16, (THREAD_FPU + 0x080)(thread); \
37
        sdc1    $f18, (THREAD_FPU + 0x090)(thread); \
38
        sdc1    $f20, (THREAD_FPU + 0x0a0)(thread); \
39
        sdc1    $f22, (THREAD_FPU + 0x0b0)(thread); \
40
        sdc1    $f24, (THREAD_FPU + 0x0c0)(thread); \
41
        sdc1    $f26, (THREAD_FPU + 0x0d0)(thread); \
42
        sdc1    $f28, (THREAD_FPU + 0x0e0)(thread); \
43
        sdc1    $f30, (THREAD_FPU + 0x0f0)(thread); \
44
        sw      tmp,  (THREAD_FPU + 0x100)(thread)
45
 
46
#if defined (__MIPSEL__)
47
#define FPU_SAVE_SINGLE(thread,tmp)                 \
48
        cfc1    tmp,  fcr31;                        \
49
        swc1    $f0,  (THREAD_FPU + 0x000)(thread); \
50
        swc1    $f1,  (THREAD_FPU + 0x004)(thread); \
51
        swc1    $f2,  (THREAD_FPU + 0x010)(thread); \
52
        swc1    $f3,  (THREAD_FPU + 0x014)(thread); \
53
        swc1    $f4,  (THREAD_FPU + 0x020)(thread); \
54
        swc1    $f5,  (THREAD_FPU + 0x024)(thread); \
55
        swc1    $f6,  (THREAD_FPU + 0x030)(thread); \
56
        swc1    $f7,  (THREAD_FPU + 0x034)(thread); \
57
        swc1    $f8,  (THREAD_FPU + 0x040)(thread); \
58
        swc1    $f9,  (THREAD_FPU + 0x044)(thread); \
59
        swc1    $f10, (THREAD_FPU + 0x050)(thread); \
60
        swc1    $f11, (THREAD_FPU + 0x054)(thread); \
61
        swc1    $f12, (THREAD_FPU + 0x060)(thread); \
62
        swc1    $f13, (THREAD_FPU + 0x064)(thread); \
63
        swc1    $f14, (THREAD_FPU + 0x070)(thread); \
64
        swc1    $f15, (THREAD_FPU + 0x074)(thread); \
65
        swc1    $f16, (THREAD_FPU + 0x080)(thread); \
66
        swc1    $f17, (THREAD_FPU + 0x084)(thread); \
67
        swc1    $f18, (THREAD_FPU + 0x090)(thread); \
68
        swc1    $f19, (THREAD_FPU + 0x094)(thread); \
69
        swc1    $f20, (THREAD_FPU + 0x0a0)(thread); \
70
        swc1    $f21, (THREAD_FPU + 0x0a4)(thread); \
71
        swc1    $f22, (THREAD_FPU + 0x0b0)(thread); \
72
        swc1    $f23, (THREAD_FPU + 0x0b4)(thread); \
73
        swc1    $f24, (THREAD_FPU + 0x0c0)(thread); \
74
        swc1    $f25, (THREAD_FPU + 0x0c4)(thread); \
75
        swc1    $f26, (THREAD_FPU + 0x0d0)(thread); \
76
        swc1    $f27, (THREAD_FPU + 0x0d4)(thread); \
77
        swc1    $f28, (THREAD_FPU + 0x0e0)(thread); \
78
        swc1    $f29, (THREAD_FPU + 0x0e4)(thread); \
79
        swc1    $f30, (THREAD_FPU + 0x0f0)(thread); \
80
        swc1    $f31, (THREAD_FPU + 0x0f4)(thread); \
81
        sw      tmp,  (THREAD_FPU + 0x100)(thread)
82
#elif defined (__MIPSEB__)
83
#define FPU_SAVE_SINGLE(thread,tmp)                 \
84
        cfc1    tmp,  fcr31;                        \
85
        swc1    $f0,  (THREAD_FPU + 0x004)(thread); \
86
        swc1    $f1,  (THREAD_FPU + 0x000)(thread); \
87
        swc1    $f2,  (THREAD_FPU + 0x014)(thread); \
88
        swc1    $f3,  (THREAD_FPU + 0x010)(thread); \
89
        swc1    $f4,  (THREAD_FPU + 0x024)(thread); \
90
        swc1    $f5,  (THREAD_FPU + 0x020)(thread); \
91
        swc1    $f6,  (THREAD_FPU + 0x034)(thread); \
92
        swc1    $f7,  (THREAD_FPU + 0x030)(thread); \
93
        swc1    $f8,  (THREAD_FPU + 0x044)(thread); \
94
        swc1    $f9,  (THREAD_FPU + 0x040)(thread); \
95
        swc1    $f10, (THREAD_FPU + 0x054)(thread); \
96
        swc1    $f11, (THREAD_FPU + 0x050)(thread); \
97
        swc1    $f12, (THREAD_FPU + 0x064)(thread); \
98
        swc1    $f13, (THREAD_FPU + 0x060)(thread); \
99
        swc1    $f14, (THREAD_FPU + 0x074)(thread); \
100
        swc1    $f15, (THREAD_FPU + 0x070)(thread); \
101
        swc1    $f16, (THREAD_FPU + 0x084)(thread); \
102
        swc1    $f17, (THREAD_FPU + 0x080)(thread); \
103
        swc1    $f18, (THREAD_FPU + 0x094)(thread); \
104
        swc1    $f19, (THREAD_FPU + 0x090)(thread); \
105
        swc1    $f20, (THREAD_FPU + 0x0a4)(thread); \
106
        swc1    $f21, (THREAD_FPU + 0x0a0)(thread); \
107
        swc1    $f22, (THREAD_FPU + 0x0b4)(thread); \
108
        swc1    $f23, (THREAD_FPU + 0x0b0)(thread); \
109
        swc1    $f24, (THREAD_FPU + 0x0c4)(thread); \
110
        swc1    $f25, (THREAD_FPU + 0x0c0)(thread); \
111
        swc1    $f26, (THREAD_FPU + 0x0d4)(thread); \
112
        swc1    $f27, (THREAD_FPU + 0x0d0)(thread); \
113
        swc1    $f28, (THREAD_FPU + 0x0e4)(thread); \
114
        swc1    $f29, (THREAD_FPU + 0x0e0)(thread); \
115
        swc1    $f30, (THREAD_FPU + 0x0f4)(thread); \
116
        swc1    $f31, (THREAD_FPU + 0x0f0)(thread); \
117
        sw      tmp,  (THREAD_FPU + 0x100)(thread)
118
#else
119
#error "MIPS, but neither __MIPSEB__, nor __MIPSEL__???"
120
#endif
121
 
122
#define FPU_RESTORE_DOUBLE(thread, tmp) \
123
        lw      tmp,  (THREAD_FPU + 0x100)(thread); \
124
        ldc1    $f0,  (THREAD_FPU + 0x000)(thread); \
125
        ldc1    $f2,  (THREAD_FPU + 0x010)(thread); \
126
        ldc1    $f4,  (THREAD_FPU + 0x020)(thread); \
127
        ldc1    $f6,  (THREAD_FPU + 0x030)(thread); \
128
        ldc1    $f8,  (THREAD_FPU + 0x040)(thread); \
129
        ldc1    $f10, (THREAD_FPU + 0x050)(thread); \
130
        ldc1    $f12, (THREAD_FPU + 0x060)(thread); \
131
        ldc1    $f14, (THREAD_FPU + 0x070)(thread); \
132
        ldc1    $f16, (THREAD_FPU + 0x080)(thread); \
133
        ldc1    $f18, (THREAD_FPU + 0x090)(thread); \
134
        ldc1    $f20, (THREAD_FPU + 0x0a0)(thread); \
135
        ldc1    $f22, (THREAD_FPU + 0x0b0)(thread); \
136
        ldc1    $f24, (THREAD_FPU + 0x0c0)(thread); \
137
        ldc1    $f26, (THREAD_FPU + 0x0d0)(thread); \
138
        ldc1    $f28, (THREAD_FPU + 0x0e0)(thread); \
139
        ldc1    $f30, (THREAD_FPU + 0x0f0)(thread); \
140
        ctc1    tmp,  fcr31
141
 
142
#if defined (__MIPSEL__)
143
#define FPU_RESTORE_SINGLE(thread,tmp)              \
144
        lw      tmp,  (THREAD_FPU + 0x100)(thread); \
145
        lwc1    $f0,  (THREAD_FPU + 0x000)(thread); \
146
        lwc1    $f1,  (THREAD_FPU + 0x004)(thread); \
147
        lwc1    $f2,  (THREAD_FPU + 0x010)(thread); \
148
        lwc1    $f3,  (THREAD_FPU + 0x014)(thread); \
149
        lwc1    $f4,  (THREAD_FPU + 0x020)(thread); \
150
        lwc1    $f5,  (THREAD_FPU + 0x024)(thread); \
151
        lwc1    $f6,  (THREAD_FPU + 0x030)(thread); \
152
        lwc1    $f7,  (THREAD_FPU + 0x034)(thread); \
153
        lwc1    $f8,  (THREAD_FPU + 0x040)(thread); \
154
        lwc1    $f9,  (THREAD_FPU + 0x044)(thread); \
155
        lwc1    $f10, (THREAD_FPU + 0x050)(thread); \
156
        lwc1    $f11, (THREAD_FPU + 0x054)(thread); \
157
        lwc1    $f12, (THREAD_FPU + 0x060)(thread); \
158
        lwc1    $f13, (THREAD_FPU + 0x064)(thread); \
159
        lwc1    $f14, (THREAD_FPU + 0x070)(thread); \
160
        lwc1    $f15, (THREAD_FPU + 0x074)(thread); \
161
        lwc1    $f16, (THREAD_FPU + 0x080)(thread); \
162
        lwc1    $f17, (THREAD_FPU + 0x084)(thread); \
163
        lwc1    $f18, (THREAD_FPU + 0x090)(thread); \
164
        lwc1    $f19, (THREAD_FPU + 0x094)(thread); \
165
        lwc1    $f20, (THREAD_FPU + 0x0a0)(thread); \
166
        lwc1    $f21, (THREAD_FPU + 0x0a4)(thread); \
167
        lwc1    $f22, (THREAD_FPU + 0x0b0)(thread); \
168
        lwc1    $f23, (THREAD_FPU + 0x0b4)(thread); \
169
        lwc1    $f24, (THREAD_FPU + 0x0c0)(thread); \
170
        lwc1    $f25, (THREAD_FPU + 0x0c4)(thread); \
171
        lwc1    $f26, (THREAD_FPU + 0x0d0)(thread); \
172
        lwc1    $f27, (THREAD_FPU + 0x0d4)(thread); \
173
        lwc1    $f28, (THREAD_FPU + 0x0e0)(thread); \
174
        lwc1    $f29, (THREAD_FPU + 0x0e4)(thread); \
175
        lwc1    $f30, (THREAD_FPU + 0x0f0)(thread); \
176
        lwc1    $f31, (THREAD_FPU + 0x0f4)(thread); \
177
        ctc1    tmp,  fcr31
178
#elif defined (__MIPSEB__)
179
#define FPU_RESTORE_SINGLE(thread,tmp)              \
180
        lw      tmp,  (THREAD_FPU + 0x100)(thread); \
181
        lwc1    $f0,  (THREAD_FPU + 0x004)(thread); \
182
        lwc1    $f1,  (THREAD_FPU + 0x000)(thread); \
183
        lwc1    $f2,  (THREAD_FPU + 0x014)(thread); \
184
        lwc1    $f3,  (THREAD_FPU + 0x010)(thread); \
185
        lwc1    $f4,  (THREAD_FPU + 0x024)(thread); \
186
        lwc1    $f5,  (THREAD_FPU + 0x020)(thread); \
187
        lwc1    $f6,  (THREAD_FPU + 0x034)(thread); \
188
        lwc1    $f7,  (THREAD_FPU + 0x030)(thread); \
189
        lwc1    $f8,  (THREAD_FPU + 0x044)(thread); \
190
        lwc1    $f9,  (THREAD_FPU + 0x040)(thread); \
191
        lwc1    $f10, (THREAD_FPU + 0x054)(thread); \
192
        lwc1    $f11, (THREAD_FPU + 0x050)(thread); \
193
        lwc1    $f12, (THREAD_FPU + 0x064)(thread); \
194
        lwc1    $f13, (THREAD_FPU + 0x060)(thread); \
195
        lwc1    $f14, (THREAD_FPU + 0x074)(thread); \
196
        lwc1    $f15, (THREAD_FPU + 0x070)(thread); \
197
        lwc1    $f16, (THREAD_FPU + 0x084)(thread); \
198
        lwc1    $f17, (THREAD_FPU + 0x080)(thread); \
199
        lwc1    $f18, (THREAD_FPU + 0x094)(thread); \
200
        lwc1    $f19, (THREAD_FPU + 0x090)(thread); \
201
        lwc1    $f20, (THREAD_FPU + 0x0a4)(thread); \
202
        lwc1    $f21, (THREAD_FPU + 0x0a0)(thread); \
203
        lwc1    $f22, (THREAD_FPU + 0x0b4)(thread); \
204
        lwc1    $f23, (THREAD_FPU + 0x0b0)(thread); \
205
        lwc1    $f24, (THREAD_FPU + 0x0c4)(thread); \
206
        lwc1    $f25, (THREAD_FPU + 0x0c0)(thread); \
207
        lwc1    $f26, (THREAD_FPU + 0x0d4)(thread); \
208
        lwc1    $f27, (THREAD_FPU + 0x0d0)(thread); \
209
        lwc1    $f28, (THREAD_FPU + 0x0e4)(thread); \
210
        lwc1    $f29, (THREAD_FPU + 0x0e0)(thread); \
211
        lwc1    $f30, (THREAD_FPU + 0x0f4)(thread); \
212
        lwc1    $f31, (THREAD_FPU + 0x0f0)(thread); \
213
        ctc1    tmp,  fcr31
214
#else
215
#error "MIPS, but neither __MIPSEB__, nor __MIPSEL__???"
216
#endif
217
 
218
#define CPU_SAVE_NONSCRATCH(thread) \
219
        sw      s0, THREAD_REG16(thread); \
220
        sw      s1, THREAD_REG17(thread); \
221
        sw      s2, THREAD_REG18(thread); \
222
        sw      s3, THREAD_REG19(thread); \
223
        sw      s4, THREAD_REG20(thread); \
224
        sw      s5, THREAD_REG21(thread); \
225
        sw      s6, THREAD_REG22(thread); \
226
        sw      s7, THREAD_REG23(thread); \
227
        sw      sp, THREAD_REG29(thread); \
228
        sw      fp, THREAD_REG30(thread)
229
 
230
#define CPU_RESTORE_NONSCRATCH(thread) \
231
        lw      s0, THREAD_REG16(thread); \
232
        lw      s1, THREAD_REG17(thread); \
233
        lw      s2, THREAD_REG18(thread); \
234
        lw      s3, THREAD_REG19(thread); \
235
        lw      s4, THREAD_REG20(thread); \
236
        lw      s5, THREAD_REG21(thread); \
237
        lw      s6, THREAD_REG22(thread); \
238
        lw      s7, THREAD_REG23(thread); \
239
        lw      sp, THREAD_REG29(thread); \
240
        lw      fp, THREAD_REG30(thread); \
241
        lw      ra, THREAD_REG31(thread)
242
 
243
#endif /* _ASM_ASMMACRO_H */

powered by: WebSVN 2.1.0

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