1 /* $Id: asmmacro.h,v 1.2 1999/10/19 20:51:53 ralf Exp $
2 *
3 * asmmacro.h: Assembler macros to make things easier to read.
4 *
5 * Copyright (C) 1996 David S. Miller (dm@engr.sgi.com)
6 * Copyright (C) 1998, 1999 Ralf Baechle
7 * Copyright (C) 1999 Silicon Graphics, Inc.
8 */
9 #ifndef _ASM_ASMMACRO_H
10 #define _ASM_ASMMACRO_H
11
12 #include <asm/offset.h>
13
14 .macro fpu_save_16even thread tmp
15 cfc1 \tmp, fcr31
16 sdc1 $f2, (THREAD_FPU + 0x010)(\thread)
17 sdc1 $f4, (THREAD_FPU + 0x020)(\thread)
18 sdc1 $f6, (THREAD_FPU + 0x030)(\thread)
19 sdc1 $f8, (THREAD_FPU + 0x040)(\thread)
20 sdc1 $f10, (THREAD_FPU + 0x050)(\thread)
21 sdc1 $f12, (THREAD_FPU + 0x060)(\thread)
22 sdc1 $f14, (THREAD_FPU + 0x070)(\thread)
23 sdc1 $f16, (THREAD_FPU + 0x080)(\thread)
24 sdc1 $f18, (THREAD_FPU + 0x090)(\thread)
25 sdc1 $f20, (THREAD_FPU + 0x0a0)(\thread)
26 sdc1 $f22, (THREAD_FPU + 0x0b0)(\thread)
27 sdc1 $f24, (THREAD_FPU + 0x0c0)(\thread)
28 sdc1 $f26, (THREAD_FPU + 0x0d0)(\thread)
29 sdc1 $f28, (THREAD_FPU + 0x0e0)(\thread)
30 sdc1 $f30, (THREAD_FPU + 0x0f0)(\thread)
31 sw \tmp, (THREAD_FPU + 0x100)(\thread)
32 .endm
33
34 .macro fpu_save_16odd thread
35 sdc1 $f1, (THREAD_FPU + 0x08)(\thread)
36 sdc1 $f3, (THREAD_FPU + 0x18)(\thread)
37 sdc1 $f5, (THREAD_FPU + 0x28)(\thread)
38 sdc1 $f7, (THREAD_FPU + 0x38)(\thread)
39 sdc1 $f9, (THREAD_FPU + 0x48)(\thread)
40 sdc1 $f11, (THREAD_FPU + 0x58)(\thread)
41 sdc1 $f13, (THREAD_FPU + 0x68)(\thread)
42 sdc1 $f15, (THREAD_FPU + 0x78)(\thread)
43 sdc1 $f17, (THREAD_FPU + 0x88)(\thread)
44 sdc1 $f19, (THREAD_FPU + 0x98)(\thread)
45 sdc1 $f21, (THREAD_FPU + 0xa8)(\thread)
46 sdc1 $f23, (THREAD_FPU + 0xb8)(\thread)
47 sdc1 $f25, (THREAD_FPU + 0xc8)(\thread)
48 sdc1 $f27, (THREAD_FPU + 0xd8)(\thread)
49 sdc1 $f29, (THREAD_FPU + 0xe8)(\thread)
50 sdc1 $f31, (THREAD_FPU + 0xf8)(\thread)
51 .endm
52
53 .macro fpu_save thread tmp
54 cfc1 \tmp, fcr31
55 swc1 $f0, (THREAD_FPU + 0x000)(\thread)
56 swc1 $f1, (THREAD_FPU + 0x008)(\thread)
57 swc1 $f2, (THREAD_FPU + 0x010)(\thread)
58 swc1 $f3, (THREAD_FPU + 0x018)(\thread)
59 swc1 $f4, (THREAD_FPU + 0x020)(\thread)
60 swc1 $f5, (THREAD_FPU + 0x028)(\thread)
61 swc1 $f6, (THREAD_FPU + 0x030)(\thread)
62 swc1 $f7, (THREAD_FPU + 0x038)(\thread)
63 swc1 $f8, (THREAD_FPU + 0x040)(\thread)
64 swc1 $f9, (THREAD_FPU + 0x048)(\thread)
65 swc1 $f10, (THREAD_FPU + 0x050)(\thread)
66 swc1 $f11, (THREAD_FPU + 0x058)(\thread)
67 swc1 $f12, (THREAD_FPU + 0x060)(\thread)
68 swc1 $f13, (THREAD_FPU + 0x068)(\thread)
69 swc1 $f14, (THREAD_FPU + 0x070)(\thread)
70 swc1 $f15, (THREAD_FPU + 0x078)(\thread)
71 swc1 $f16, (THREAD_FPU + 0x080)(\thread)
72 swc1 $f17, (THREAD_FPU + 0x088)(\thread)
73 swc1 $f18, (THREAD_FPU + 0x090)(\thread)
74 swc1 $f19, (THREAD_FPU + 0x098)(\thread)
75 swc1 $f20, (THREAD_FPU + 0x0a0)(\thread)
76 swc1 $f21, (THREAD_FPU + 0x0a8)(\thread)
77 swc1 $f22, (THREAD_FPU + 0x0b0)(\thread)
78 swc1 $f23, (THREAD_FPU + 0x0b8)(\thread)
79 swc1 $f24, (THREAD_FPU + 0x0c0)(\thread)
80 swc1 $f25, (THREAD_FPU + 0x0c8)(\thread)
81 swc1 $f26, (THREAD_FPU + 0x0d0)(\thread)
82 swc1 $f27, (THREAD_FPU + 0x0d8)(\thread)
83 swc1 $f28, (THREAD_FPU + 0x0e0)(\thread)
84 swc1 $f29, (THREAD_FPU + 0x0e8)(\thread)
85 swc1 $f30, (THREAD_FPU + 0x0f0)(\thread)
86 swc1 $f31, (THREAD_FPU + 0x0f8)(\thread)
87 sw \tmp, (THREAD_FPU + 0x100)(\thread)
88 .endm
89
90 .macro fpu_restore_16even thread tmp
91 lw \tmp, (THREAD_FPU + 0x100)(\thread)
92 ldc1 $f2, (THREAD_FPU + 0x010)(\thread)
93 ldc1 $f4, (THREAD_FPU + 0x020)(\thread)
94 ldc1 $f6, (THREAD_FPU + 0x030)(\thread)
95 ldc1 $f8, (THREAD_FPU + 0x040)(\thread)
96 ldc1 $f10, (THREAD_FPU + 0x050)(\thread)
97 ldc1 $f12, (THREAD_FPU + 0x060)(\thread)
98 ldc1 $f14, (THREAD_FPU + 0x070)(\thread)
99 ldc1 $f16, (THREAD_FPU + 0x080)(\thread)
100 ldc1 $f18, (THREAD_FPU + 0x090)(\thread)
101 ldc1 $f20, (THREAD_FPU + 0x0a0)(\thread)
102 ldc1 $f22, (THREAD_FPU + 0x0b0)(\thread)
103 ldc1 $f24, (THREAD_FPU + 0x0c0)(\thread)
104 ldc1 $f26, (THREAD_FPU + 0x0d0)(\thread)
105 ldc1 $f28, (THREAD_FPU + 0x0e0)(\thread)
106 ldc1 $f30, (THREAD_FPU + 0x0f0)(\thread)
107 ctc1 \tmp, fcr31
108 .endm
109
110 .macro fpu_restore_16odd thread
111 ldc1 $f1, (THREAD_FPU + 0x08)(\thread)
112 ldc1 $f3, (THREAD_FPU + 0x18)(\thread)
113 ldc1 $f5, (THREAD_FPU + 0x28)(\thread)
114 ldc1 $f7, (THREAD_FPU + 0x38)(\thread)
115 ldc1 $f9, (THREAD_FPU + 0x48)(\thread)
116 ldc1 $f11, (THREAD_FPU + 0x58)(\thread)
117 ldc1 $f13, (THREAD_FPU + 0x68)(\thread)
118 ldc1 $f15, (THREAD_FPU + 0x78)(\thread)
119 ldc1 $f17, (THREAD_FPU + 0x88)(\thread)
120 ldc1 $f19, (THREAD_FPU + 0x98)(\thread)
121 ldc1 $f21, (THREAD_FPU + 0xa8)(\thread)
122 ldc1 $f23, (THREAD_FPU + 0xb8)(\thread)
123 ldc1 $f25, (THREAD_FPU + 0xc8)(\thread)
124 ldc1 $f27, (THREAD_FPU + 0xd8)(\thread)
125 ldc1 $f29, (THREAD_FPU + 0xe8)(\thread)
126 ldc1 $f31, (THREAD_FPU + 0xf8)(\thread)
127 .endm
128
129 .macro fpu_restore thread tmp
130 lw \tmp, (THREAD_FPU + 0x100)(\thread)
131 lwc1 $f0, (THREAD_FPU + 0x000)(\thread)
132 lwc1 $f1, (THREAD_FPU + 0x008)(\thread)
133 lwc1 $f2, (THREAD_FPU + 0x010)(\thread)
134 lwc1 $f3, (THREAD_FPU + 0x018)(\thread)
135 lwc1 $f4, (THREAD_FPU + 0x020)(\thread)
136 lwc1 $f5, (THREAD_FPU + 0x028)(\thread)
137 lwc1 $f6, (THREAD_FPU + 0x030)(\thread)
138 lwc1 $f7, (THREAD_FPU + 0x038)(\thread)
139 lwc1 $f8, (THREAD_FPU + 0x040)(\thread)
140 lwc1 $f9, (THREAD_FPU + 0x048)(\thread)
141 lwc1 $f10, (THREAD_FPU + 0x050)(\thread)
142 lwc1 $f11, (THREAD_FPU + 0x058)(\thread)
143 lwc1 $f12, (THREAD_FPU + 0x060)(\thread)
144 lwc1 $f13, (THREAD_FPU + 0x068)(\thread)
145 lwc1 $f14, (THREAD_FPU + 0x070)(\thread)
146 lwc1 $f15, (THREAD_FPU + 0x078)(\thread)
147 lwc1 $f16, (THREAD_FPU + 0x080)(\thread)
148 lwc1 $f17, (THREAD_FPU + 0x088)(\thread)
149 lwc1 $f18, (THREAD_FPU + 0x090)(\thread)
150 lwc1 $f19, (THREAD_FPU + 0x098)(\thread)
151 lwc1 $f20, (THREAD_FPU + 0x0a0)(\thread)
152 lwc1 $f21, (THREAD_FPU + 0x0a8)(\thread)
153 lwc1 $f22, (THREAD_FPU + 0x0b0)(\thread)
154 lwc1 $f23, (THREAD_FPU + 0x0b8)(\thread)
155 lwc1 $f24, (THREAD_FPU + 0x0c0)(\thread)
156 lwc1 $f25, (THREAD_FPU + 0x0c8)(\thread)
157 lwc1 $f26, (THREAD_FPU + 0x0d0)(\thread)
158 lwc1 $f27, (THREAD_FPU + 0x0d8)(\thread)
159 lwc1 $f28, (THREAD_FPU + 0x0e0)(\thread)
160 lwc1 $f29, (THREAD_FPU + 0x0e8)(\thread)
161 lwc1 $f30, (THREAD_FPU + 0x0f0)(\thread)
162 lwc1 $f31, (THREAD_FPU + 0x0f8)(\thread)
163 ctc1 \tmp, fcr31
164 .endm
165
166 .macro cpu_save_nonscratch thread
167 sd s0, THREAD_REG16(\thread)
168 sd s1, THREAD_REG17(\thread)
169 sd s2, THREAD_REG18(\thread)
170 sd s3, THREAD_REG19(\thread)
171 sd s4, THREAD_REG20(\thread)
172 sd s5, THREAD_REG21(\thread)
173 sd s6, THREAD_REG22(\thread)
174 sd s7, THREAD_REG23(\thread)
175 sd sp, THREAD_REG29(\thread)
176 sd fp, THREAD_REG30(\thread)
177 .endm
178
179 .macro cpu_restore_nonscratch thread
180 ld s0, THREAD_REG16(\thread)
181 ld s1, THREAD_REG17(\thread)
182 ld s2, THREAD_REG18(\thread)
183 ld s3, THREAD_REG19(\thread)
184 ld s4, THREAD_REG20(\thread)
185 ld s5, THREAD_REG21(\thread)
186 ld s6, THREAD_REG22(\thread)
187 ld s7, THREAD_REG23(\thread)
188 ld sp, THREAD_REG29(\thread)
189 ld fp, THREAD_REG30(\thread)
190 ld ra, THREAD_REG31(\thread)
191 .endm
192
193 #endif /* !(_ASM_ASMMACRO_H) */
194
This page was automatically generated by the
LXR engine.
Visit the LXR main site for more
information.