SMB directory recursion works now, fixed an ugly bug in smb_recv
[libogc.git] / libogc / lwp_handler.S
blobaa2d63046583eda103a0d3f5b888643d3f54b056
1 #include <asm.h>
3         .set    FP_SIZE,        8
5         .set    GP_SRR0, (SRR0_OFFSET - 8)
6         .set    GP_SRR1, (GP_SRR0 + 4)
8         .set    GP_1, (GPR1_OFFSET - 8)
9         .set    GP_2, (GP_1 + 4)
10 #ifdef _DEBUG
11         .set    GP_5, (GPR5_OFFSET - 8)
12         .set    GP_6, (GP_5 + 4)
13 #endif
14         .set    GP_13, (GPR13_OFFSET - 8)
15         .set    GP_14, (GP_13 + 4)
16         .set    GP_15, (GP_14 + 4)
17         .set    GP_16, (GP_15 + 4)
18         .set    GP_17, (GP_16 + 4)
19         .set    GP_18, (GP_17 + 4)
20         .set    GP_19, (GP_18 + 4)
21         .set    GP_20, (GP_19 + 4)
22         .set    GP_21, (GP_20 + 4)
23         .set    GP_22, (GP_21 + 4)
24         .set    GP_23, (GP_22 + 4)
25         .set    GP_24, (GP_23 + 4)
26         .set    GP_25, (GP_24 + 4)
27         .set    GP_26, (GP_25 + 4)
28         .set    GP_27, (GP_26 + 4)
29         .set    GP_28, (GP_27 + 4)
30         .set    GP_29, (GP_28 + 4)
31         .set    GP_30, (GP_29 + 4)
32         .set    GP_31, (GP_30 + 4)
34         .set    GQ_0, (GP_31 + 4)
35         .set    GQ_1, (GQ_0 + 4)
36         .set    GQ_2, (GQ_1 + 4)
37         .set    GQ_3, (GQ_2 + 4)
38         .set    GQ_4, (GQ_3 + 4)
39         .set    GQ_5, (GQ_4 + 4)
40         .set    GQ_6, (GQ_5 + 4)
41         .set    GQ_7, (GQ_6 + 4)
43         .set    GP_CR, (GQ_7 + 4)
44         .set    GP_LR, (GP_CR + 4)
45         .set    GP_CTR, (GP_LR + 4)
46         .set    GP_XER, (GP_CTR + 4)
47         .set    GP_MSR, (GP_XER + 4)
48         .set    GP_DAR, (GP_MSR + 4)
50         .set    STATE, (GP_DAR + 4)
51         .set    MODE, (STATE + 2)
53         .set    FP_0, (FPR0_OFFSET - 8)
54         .set    FP_1, (FP_0 + FP_SIZE)
55         .set    FP_2, (FP_1 + FP_SIZE)
56         .set    FP_3, (FP_2 + FP_SIZE)
57         .set    FP_4, (FP_3 + FP_SIZE)
58         .set    FP_5, (FP_4 + FP_SIZE)
59         .set    FP_6, (FP_5 + FP_SIZE)
60         .set    FP_7, (FP_6 + FP_SIZE)
61         .set    FP_8, (FP_7 + FP_SIZE)
62         .set    FP_9, (FP_8 + FP_SIZE)
63         .set    FP_10, (FP_9 + FP_SIZE)
64         .set    FP_11, (FP_10 + FP_SIZE)
65         .set    FP_12, (FP_11 + FP_SIZE)
66         .set    FP_13, (FP_12 + FP_SIZE)
67         .set    FP_14, (FP_13 + FP_SIZE)
68         .set    FP_15, (FP_14 + FP_SIZE)
69         .set    FP_16, (FP_15 + FP_SIZE)
70         .set    FP_17, (FP_16 + FP_SIZE)
71         .set    FP_18, (FP_17 + FP_SIZE)
72         .set    FP_19, (FP_18 + FP_SIZE)
73         .set    FP_20, (FP_19 + FP_SIZE)
74         .set    FP_21, (FP_20 + FP_SIZE)
75         .set    FP_22, (FP_21 + FP_SIZE)
76         .set    FP_23, (FP_22 + FP_SIZE)
77         .set    FP_24, (FP_23 + FP_SIZE)
78         .set    FP_25, (FP_24 + FP_SIZE)
79         .set    FP_26, (FP_25 + FP_SIZE)
80         .set    FP_27, (FP_26 + FP_SIZE)
81         .set    FP_28, (FP_27 + FP_SIZE)
82         .set    FP_29, (FP_28 + FP_SIZE)
83         .set    FP_30, (FP_29 + FP_SIZE)
84         .set    FP_31, (FP_30 + FP_SIZE)
85         .set    FP_FPSCR, (FP_31 + FP_SIZE)
86         .set    PSFP_0, (FP_FPSCR + FP_SIZE)
87         .set    PSFP_1, (PSFP_0 + FP_SIZE)
88         .set    PSFP_2, (PSFP_1 + FP_SIZE)
89         .set    PSFP_3, (PSFP_2 + FP_SIZE)
90         .set    PSFP_4, (PSFP_3 + FP_SIZE)
91         .set    PSFP_5, (PSFP_4 + FP_SIZE)
92         .set    PSFP_6, (PSFP_5 + FP_SIZE)
93         .set    PSFP_7, (PSFP_6 + FP_SIZE)
94         .set    PSFP_8, (PSFP_7 + FP_SIZE)
95         .set    PSFP_9, (PSFP_8 + FP_SIZE)
96         .set    PSFP_10, (PSFP_9 + FP_SIZE)
97         .set    PSFP_11, (PSFP_10 + FP_SIZE)
98         .set    PSFP_12, (PSFP_11 + FP_SIZE)
99         .set    PSFP_13, (PSFP_12 + FP_SIZE)
100         .set    PSFP_14, (PSFP_13 + FP_SIZE)
101         .set    PSFP_15, (PSFP_14 + FP_SIZE)
102         .set    PSFP_16, (PSFP_15 + FP_SIZE)
103         .set    PSFP_17, (PSFP_16 + FP_SIZE)
104         .set    PSFP_18, (PSFP_17 + FP_SIZE)
105         .set    PSFP_19, (PSFP_18 + FP_SIZE)
106         .set    PSFP_20, (PSFP_19 + FP_SIZE)
107         .set    PSFP_21, (PSFP_20 + FP_SIZE)
108         .set    PSFP_22, (PSFP_21 + FP_SIZE)
109         .set    PSFP_23, (PSFP_22 + FP_SIZE)
110         .set    PSFP_24, (PSFP_23 + FP_SIZE)
111         .set    PSFP_25, (PSFP_24 + FP_SIZE)
112         .set    PSFP_26, (PSFP_25 + FP_SIZE)
113         .set    PSFP_27, (PSFP_26 + FP_SIZE)
114         .set    PSFP_28, (PSFP_27 + FP_SIZE)
115         .set    PSFP_29, (PSFP_28 + FP_SIZE)
116         .set    PSFP_30, (PSFP_29 + FP_SIZE)
117         .set    PSFP_31, (PSFP_30 + FP_SIZE)
119         .align  5
120         .globl _cpu_context_save_fp
121 _cpu_context_save_fp:
122         lhz             r4,STATE(r3)
123         ori             r4,r4,0x0001
124         sth             r4,STATE(r3)
125         stfd    fr0, FP_0(r3)
126         stfd    fr1, FP_1(r3)
127         stfd    fr2, FP_2(r3)
128         stfd    fr3, FP_3(r3)
129         stfd    fr4, FP_4(r3)
130         stfd    fr5, FP_5(r3)
131         stfd    fr6, FP_6(r3)
132         stfd    fr7, FP_7(r3)
133         stfd    fr8, FP_8(r3)
134         stfd    fr9, FP_9(r3)
135         stfd    fr10, FP_10(r3)
136         stfd    fr11, FP_11(r3)
137         stfd    fr12, FP_12(r3)
138         stfd    fr13, FP_13(r3)
139         stfd    fr14, FP_14(r3)
140         stfd    fr15, FP_15(r3)
141         stfd    fr16, FP_16(r3)
142         stfd    fr17, FP_17(r3)
143         stfd    fr18, FP_18(r3)
144         stfd    fr19, FP_19(r3)
145         stfd    fr20, FP_20(r3)
146         stfd    fr21, FP_21(r3)
147         stfd    fr22, FP_22(r3)
148         stfd    fr23, FP_23(r3)
149         stfd    fr24, FP_24(r3)
150         stfd    fr25, FP_25(r3)
151         stfd    fr26, FP_26(r3)
152         stfd    fr27, FP_27(r3)
153         stfd    fr28, FP_28(r3)
154         stfd    fr29, FP_29(r3)
155         stfd    fr30, FP_30(r3)
156         stfd    fr31, FP_31(r3)
157         mffs    fr0
158         stfd    fr0, FP_FPSCR(r3)
159         lfd             fr0, FP_0(r3)
160         mfspr   r4,920
161         extrwi. r4,r4,1,2
162         beq             1f
163         psq_st  fr0,PSFP_0(r3),0,0
164         psq_st  fr1,PSFP_1(r3),0,0
165         psq_st  fr2,PSFP_2(r3),0,0
166         psq_st  fr3,PSFP_3(r3),0,0
167         psq_st  fr4,PSFP_4(r3),0,0
168         psq_st  fr5,PSFP_5(r3),0,0
169         psq_st  fr6,PSFP_6(r3),0,0
170         psq_st  fr7,PSFP_7(r3),0,0
171         psq_st  fr8,PSFP_8(r3),0,0
172         psq_st  fr9,PSFP_9(r3),0,0
173         psq_st  fr10,PSFP_10(r3),0,0
174         psq_st  fr11,PSFP_11(r3),0,0
175         psq_st  fr12,PSFP_12(r3),0,0
176         psq_st  fr13,PSFP_13(r3),0,0
177         psq_st  fr14,PSFP_14(r3),0,0
178         psq_st  fr15,PSFP_15(r3),0,0
179         psq_st  fr16,PSFP_16(r3),0,0
180         psq_st  fr17,PSFP_17(r3),0,0
181         psq_st  fr18,PSFP_18(r3),0,0
182         psq_st  fr19,PSFP_19(r3),0,0
183         psq_st  fr20,PSFP_20(r3),0,0
184         psq_st  fr21,PSFP_21(r3),0,0
185         psq_st  fr22,PSFP_22(r3),0,0
186         psq_st  fr23,PSFP_23(r3),0,0
187         psq_st  fr24,PSFP_24(r3),0,0
188         psq_st  fr25,PSFP_25(r3),0,0
189         psq_st  fr26,PSFP_26(r3),0,0
190         psq_st  fr27,PSFP_27(r3),0,0
191         psq_st  fr28,PSFP_28(r3),0,0
192         psq_st  fr29,PSFP_29(r3),0,0
193         psq_st  fr30,PSFP_30(r3),0,0
194         psq_st  fr31,PSFP_31(r3),0,0
195 1:      
196         blr
198         .align  5
199         .globl _cpu_context_restore_fp
200 _cpu_context_restore_fp:
201         lhz             r4,STATE(r3)
202         clrlwi. r4,r4,31
203         beq             2f
204         lfd             fr0, FP_FPSCR(r3)
205         mtfsf   255, fr0
206         mfspr   r4,920
207         extrwi. r4,r4,1,2
208         beq             1f
209         psq_l   fr0,PSFP_0(r3),0,0
210         psq_l   fr1,PSFP_1(r3),0,0
211         psq_l   fr2,PSFP_2(r3),0,0
212         psq_l   fr3,PSFP_3(r3),0,0
213         psq_l   fr4,PSFP_4(r3),0,0
214         psq_l   fr5,PSFP_5(r3),0,0
215         psq_l   fr6,PSFP_6(r3),0,0
216         psq_l   fr7,PSFP_7(r3),0,0
217         psq_l   fr8,PSFP_8(r3),0,0
218         psq_l   fr9,PSFP_9(r3),0,0
219         psq_l   fr10,PSFP_10(r3),0,0
220         psq_l   fr11,PSFP_11(r3),0,0
221         psq_l   fr12,PSFP_12(r3),0,0
222         psq_l   fr13,PSFP_13(r3),0,0
223         psq_l   fr14,PSFP_14(r3),0,0
224         psq_l   fr15,PSFP_15(r3),0,0
225         psq_l   fr16,PSFP_16(r3),0,0
226         psq_l   fr17,PSFP_17(r3),0,0
227         psq_l   fr18,PSFP_18(r3),0,0
228         psq_l   fr19,PSFP_19(r3),0,0
229         psq_l   fr20,PSFP_20(r3),0,0
230         psq_l   fr21,PSFP_21(r3),0,0
231         psq_l   fr22,PSFP_22(r3),0,0
232         psq_l   fr23,PSFP_23(r3),0,0
233         psq_l   fr24,PSFP_24(r3),0,0
234         psq_l   fr25,PSFP_25(r3),0,0
235         psq_l   fr26,PSFP_26(r3),0,0
236         psq_l   fr27,PSFP_27(r3),0,0
237         psq_l   fr28,PSFP_28(r3),0,0
238         psq_l   fr29,PSFP_29(r3),0,0
239         psq_l   fr30,PSFP_30(r3),0,0
240         psq_l   fr31,PSFP_31(r3),0,0
242 1:      lfd             fr0, FP_0(r3)
243         lfd             fr1, FP_1(r3)
244         lfd             fr2, FP_2(r3)
245         lfd             fr3, FP_3(r3)
246         lfd             fr4, FP_4(r3)
247         lfd             fr5, FP_5(r3)
248         lfd             fr6, FP_6(r3)
249         lfd             fr7, FP_7(r3)
250         lfd             fr8, FP_8(r3)
251         lfd             fr9, FP_9(r3)
252         lfd             fr10, FP_10(r3)
253         lfd             fr11, FP_11(r3)
254         lfd             fr12, FP_12(r3)
255         lfd             fr13, FP_13(r3)
256         lfd             fr14, FP_14(r3)
257         lfd             fr15, FP_15(r3)
258         lfd             fr16, FP_16(r3)
259         lfd             fr17, FP_17(r3)
260         lfd             fr18, FP_18(r3)
261         lfd             fr19, FP_19(r3)
262         lfd             fr20, FP_20(r3)
263         lfd             fr21, FP_21(r3)
264         lfd             fr22, FP_22(r3)
265         lfd             fr23, FP_23(r3)
266         lfd             fr24, FP_24(r3)
267         lfd             fr25, FP_25(r3)
268         lfd             fr26, FP_26(r3)
269         lfd             fr27, FP_27(r3)
270         lfd             fr28, FP_28(r3)
271         lfd             fr29, FP_29(r3)
272         lfd             fr30, FP_30(r3)
273         lfd             fr31, FP_31(r3)
275 2:      blr
277         .align  5
278         .globl _cpu_context_switch
279 _cpu_context_switch:
280         sync
281         isync
283         stw             sp,GP_1(r3)
284         lwz             sp,GP_1(r4)
285         stw             toc,GP_2(r3)
286         lwz             toc,GP_2(r4)
288         stw             r13,GP_13(r3)
289         lwz             r13,GP_13(r4)
290         stw             r14,GP_14(r3)
291         lwz             r14,GP_14(r4)
292         stw             r15,GP_15(r3)
293         lwz             r15,GP_15(r4)
294         stw             r16,GP_16(r3)
295         lwz             r16,GP_16(r4)
296         stw             r17,GP_17(r3)
297         lwz             r17,GP_17(r4)
298         stw             r18,GP_18(r3)
299         lwz             r18,GP_18(r4)
300         stw             r19,GP_19(r3)
301         lwz             r19,GP_19(r4)
302         stw             r20,GP_20(r3)
303         lwz             r20,GP_20(r4)
304         stw             r21,GP_21(r3)
305         lwz             r21,GP_21(r4)
306         stw             r22,GP_22(r3)
307         lwz             r22,GP_22(r4)
308         stw             r23,GP_23(r3)
309         lwz             r23,GP_23(r4)
310         stw             r24,GP_24(r3)
311         lwz             r24,GP_24(r4)
312         stw             r25,GP_25(r3)
313         lwz             r25,GP_25(r4)
314         stw             r26,GP_26(r3)
315         lwz             r26,GP_26(r4)
316         stw             r27,GP_27(r3)
317         lwz             r27,GP_27(r4)
318         stw             r28,GP_28(r3)
319         lwz             r28,GP_28(r4)
320         stw             r29,GP_29(r3)
321         lwz             r29,GP_29(r4)
322         stw             r30,GP_30(r3)
323         lwz             r30,GP_30(r4)
324         stw             r31,GP_31(r3)
325         lwz             r31,GP_31(r4)
327         mfspr   r5,912
328         stw             r5,GQ_0(r3)
329         lwz             r5,GQ_0(r4)
330         mfspr   r6,913
331         mtspr   912,r5
332         stw             r6,GQ_1(r3)
333         lwz             r6,GQ_1(r4)
334         mfspr   r5,914
335         mtspr   913,r6
336         stw             r5,GQ_2(r3)
337         lwz             r5,GQ_2(r4)
338         mfspr   r6,915
339         mtspr   914,r5
340         stw             r6,GQ_3(r3)
341         lwz             r6,GQ_3(r4)
342         mfspr   r5,916
343         mtspr   915,r6
344         stw             r5,GQ_4(r3)
345         lwz             r5,GQ_4(r4)
346         mfspr   r6,917
347         mtspr   916,r5
348         stw             r6,GQ_5(r3)
349         lwz             r6,GQ_5(r4)
350         mfspr   r5,918
351         mtspr   917,r6
352         stw             r5,GQ_6(r3)
353         lwz             r5,GQ_6(r4)
354         mfspr   r6,919
355         mtspr   918,r5
356         stw             r6,GQ_7(r3)
357         lwz             r6,GQ_7(r4)
358         mtspr   919,r6
360         mfcr    r5
361         stw             r5, GP_CR(r3)
362         lwz             r5, GP_CR(r4)
363         mflr    r6
364         mtcrf   255, r5
365         stw             r6, GP_LR(r3)
366         lwz             r6, GP_LR(r4)
367         mfmsr   r5
368         mtlr    r6
369         stw             r5, GP_MSR(r3)
370         lwz             r5, GP_MSR(r4)
371         rlwinm  r5, r5, 0, 19, 17
372         mtmsr   r5
374         blr
376         .align  5
377         .globl _cpu_context_save
378 _cpu_context_save:
379         sync
380         isync
382         stw sp,GPR1_OFFSET-8(r3)
383         stw toc,GPR2_OFFSET-8(r3)
384         stmw r13,GPR13_OFFSET-8(r3)
386         mfctr   r6
387         stw     r6, CTR_OFFSET-8(r3)
388         mfcr    r6
389         stw     r6, CR_OFFSET-8(r3)
390         mflr    r7
391         stw     r7, LR_OFFSET-8(r3)
392         mfmsr   r8
393         stw     r8, MSR_OFFSET-8(r3)
395         mfspr   r6,913
396         stw     r6,GQR1_OFFSET-8(r3)
397         mfspr   r6,914
398         stw     r6,GQR2_OFFSET-8(r3)
399         mfspr   r6,915
400         stw     r6,GQR3_OFFSET-8(r3)
401         mfspr   r6,916
402         stw     r6,GQR4_OFFSET-8(r3)
403         mfspr   r6,917
404         stw     r6,GQR5_OFFSET-8(r3)
405         mfspr   r6,918
406         stw     r6,GQR6_OFFSET-8(r3)
407         mfspr   r6,919
408         stw     r6,GQR7_OFFSET-8(r3)
410         blr
412         .align  5
413         .globl _cpu_context_restore
414 _cpu_context_restore:
415         lwz sp,GPR1_OFFSET-8(r3)
416         lwz toc,GPR2_OFFSET-8(r3)
417         lmw r13,GPR13_OFFSET-8(r3)
419         lwz     r6, CTR_OFFSET-8(r3)
420         mtctr   r6
421         lwz     r6, CR_OFFSET-8(r3)
422         mtcrf   255, r6
423         lwz     r7, LR_OFFSET-8(r3)
424         mtlr    r7
425         lwz     r8, MSR_OFFSET-8(r3)
426         rlwinm  r8,r8,0,19,17
427         mtmsr   r8
429         lwz     r6, GQR1_OFFSET-8(r3)
430         mtspr   913,r6
431         lwz     r6, GQR2_OFFSET-8(r3)
432         mtspr   914,r6
433         lwz     r6, GQR3_OFFSET-8(r3)
434         mtspr   915,r6
435         lwz     r6, GQR4_OFFSET-8(r3)
436         mtspr   916,r6
437         lwz     r6, GQR5_OFFSET-8(r3)
438         mtspr   917,r6
439         lwz     r6, GQR6_OFFSET-8(r3)
440         mtspr   918,r6
441         lwz     r6, GQR7_OFFSET-8(r3)
442         mtspr   919,r6
444         blr
446 #ifdef _DEBUG
447         .align  5
448         .globl _cpu_context_switch_ex
449 _cpu_context_switch_ex:
450         sync
451         isync
453         stw             sp,GP_1(r3)
454         lwz             sp,GP_1(r4)
455         stw             toc,GP_2(r3)
456         lwz             toc,GP_2(r4)
458         stmw    r5,GP_5(r3)
460         mfspr   r5,912
461         stw             r5,GQ_0(r3)
462         lwz             r5,GQ_0(r4)
463         mfspr   r6,913
464         mtspr   912,r5
465         stw             r6,GQ_1(r3)
466         lwz             r6,GQ_1(r4)
467         mfspr   r5,914
468         mtspr   913,r6
469         stw             r5,GQ_2(r3)
470         lwz             r5,GQ_2(r4)
471         mfspr   r6,915
472         mtspr   914,r5
473         stw             r6,GQ_3(r3)
474         lwz             r6,GQ_3(r4)
475         mfspr   r5,916
476         mtspr   915,r6
477         stw             r5,GQ_4(r3)
478         lwz             r5,GQ_4(r4)
479         mfspr   r6,917
480         mtspr   916,r5
481         stw             r6,GQ_5(r3)
482         lwz             r6,GQ_5(r4)
483         mfspr   r5,918
484         mtspr   917,r6
485         stw             r5,GQ_6(r3)
486         lwz             r5,GQ_6(r4)
487         mfspr   r6,919
488         mtspr   918,r5
489         stw             r6,GQ_7(r3)
490         lwz             r6,GQ_7(r4)
491         mtspr   919,r6
493         mfsrr0  r5
494         stw             r5, GP_SRR0(r3)
495         lwz             r5, GP_SRR0(r4)
496         mfsrr1  r6
497         mtsrr0  r5
498         stw             r6, GP_SRR1(r3)
499         lwz             r6, GP_SRR1(r4)
500         mtsrr1  r6
501         mfcr    r5
502         stw             r5, GP_CR(r3)
503         lwz             r5, GP_CR(r4)
504         mflr    r6
505         mtcrf   255, r5
506         stw             r6, GP_LR(r3)
507         lwz             r6, GP_LR(r4)
508         mfmsr   r5
509         mtlr    r6
510         stw             r5, GP_MSR(r3)
511         lwz             r5, GP_MSR(r4)
512         lmw             r6, GP_6(r4)
513         rlwinm  r5, r5, 0, 19, 17
514         mtmsr   r5
516         lwz             r5,GP_5(r4)
517         blr
519         .align  5
520         .globl _cpu_context_save_ex
521 _cpu_context_save_ex:
522         sync
523         isync
525         stw             r0,GPR0_OFFSET-8(r3)
526         stw             sp,GPR1_OFFSET-8(r3)
527         stw             toc,GPR2_OFFSET-8(r3)
528         stmw    r3,GPR3_OFFSET-8(r3)
530         mfctr   r6
531         stw             r6, CTR_OFFSET-8(r3)
532         mfcr    r6
533         stw             r6, CR_OFFSET-8(r3)
534         mflr    r7
535         stw             r7, LR_OFFSET-8(r3)
536         mfxer   r7
537         stw             r8, XER_OFFSET-8(r3)
538         mfmsr   r8
539         stw             r8, MSR_OFFSET-8(r3)
540         mfdar   r8
541         stw             r8, DAR_OFFSET-8(r3)
542         mfsrr0  r8
543         stw             r8, SRR0_OFFSET-8(r3)
544         mfsrr1  r8
545         stw             r8, SRR1_OFFSET-8(r3)
547         mfspr   r6,913
548         stw     r6,GQR1_OFFSET-8(r3)
549         mfspr   r6,914
550         stw     r6,GQR2_OFFSET-8(r3)
551         mfspr   r6,915
552         stw     r6,GQR3_OFFSET-8(r3)
553         mfspr   r6,916
554         stw     r6,GQR4_OFFSET-8(r3)
555         mfspr   r6,917
556         stw     r6,GQR5_OFFSET-8(r3)
557         mfspr   r6,918
558         stw     r6,GQR6_OFFSET-8(r3)
559         mfspr   r6,919
560         stw     r6,GQR7_OFFSET-8(r3)
562         blr
564         .align  5
565         .globl _cpu_context_restore_ex
566 _cpu_context_restore_ex:
568         lwz             r6, CTR_OFFSET-8(r3)
569         mtctr   r6
570         lwz             r6, CR_OFFSET-8(r3)
571         mtcrf   255, r6
572         lwz             r7, LR_OFFSET-8(r3)
573         mtlr    r7
574         lwz             r7, XER_OFFSET-8(r3)
575         mtxer   r7
576         lwz             r8, MSR_OFFSET-8(r3)
577         mtmsr   r8
578         lwz             r8, SRR0_OFFSET-8(r3)
579         mtsrr0  r8
580         lwz             r8, SRR1_OFFSET-8(r3)
581         mtsrr1  r8
583         lwz     r6, GQR1_OFFSET-8(r3)
584         mtspr   913,r6
585         lwz     r6, GQR2_OFFSET-8(r3)
586         mtspr   914,r6
587         lwz     r6, GQR3_OFFSET-8(r3)
588         mtspr   915,r6
589         lwz     r6, GQR4_OFFSET-8(r3)
590         mtspr   916,r6
591         lwz     r6, GQR5_OFFSET-8(r3)
592         mtspr   917,r6
593         lwz     r6, GQR6_OFFSET-8(r3)
594         mtspr   918,r6
595         lwz     r6, GQR7_OFFSET-8(r3)
596         mtspr   919,r6
598         lwz             sp,GPR1_OFFSET-8(r3)
599         lwz             toc,GPR2_OFFSET-8(r3)
600         lmw             r4,GPR4_OFFSET-8(r3)
601         lwz             r3,GPR3_OFFSET-8(r3)
603         blr
604 #endif