patch to make enabling 64B L2 cache optional (tueidj)
[libogc.git] / libogc / lwp_handler.S
blobedb8e633cd2aabdde06b1fec2d659dc42ec79216
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:      blr
197         .align  5
198         .globl _cpu_context_restore_fp
199 _cpu_context_restore_fp:
200         lhz             r4,STATE(r3)
201         clrlwi. r4,r4,31
202         beq             2f
203         lfd             fr0, FP_FPSCR(r3)
204         mtfsf   255, fr0
205         mfspr   r4,920
206         extrwi. r4,r4,1,2
207         beq             1f
208         psq_l   fr0,PSFP_0(r3),0,0
209         psq_l   fr1,PSFP_1(r3),0,0
210         psq_l   fr2,PSFP_2(r3),0,0
211         psq_l   fr3,PSFP_3(r3),0,0
212         psq_l   fr4,PSFP_4(r3),0,0
213         psq_l   fr5,PSFP_5(r3),0,0
214         psq_l   fr6,PSFP_6(r3),0,0
215         psq_l   fr7,PSFP_7(r3),0,0
216         psq_l   fr8,PSFP_8(r3),0,0
217         psq_l   fr9,PSFP_9(r3),0,0
218         psq_l   fr10,PSFP_10(r3),0,0
219         psq_l   fr11,PSFP_11(r3),0,0
220         psq_l   fr12,PSFP_12(r3),0,0
221         psq_l   fr13,PSFP_13(r3),0,0
222         psq_l   fr14,PSFP_14(r3),0,0
223         psq_l   fr15,PSFP_15(r3),0,0
224         psq_l   fr16,PSFP_16(r3),0,0
225         psq_l   fr17,PSFP_17(r3),0,0
226         psq_l   fr18,PSFP_18(r3),0,0
227         psq_l   fr19,PSFP_19(r3),0,0
228         psq_l   fr20,PSFP_20(r3),0,0
229         psq_l   fr21,PSFP_21(r3),0,0
230         psq_l   fr22,PSFP_22(r3),0,0
231         psq_l   fr23,PSFP_23(r3),0,0
232         psq_l   fr24,PSFP_24(r3),0,0
233         psq_l   fr25,PSFP_25(r3),0,0
234         psq_l   fr26,PSFP_26(r3),0,0
235         psq_l   fr27,PSFP_27(r3),0,0
236         psq_l   fr28,PSFP_28(r3),0,0
237         psq_l   fr29,PSFP_29(r3),0,0
238         psq_l   fr30,PSFP_30(r3),0,0
239         psq_l   fr31,PSFP_31(r3),0,0
240 1:      lfd             fr0, FP_0(r3)
241         lfd             fr1, FP_1(r3)
242         lfd             fr2, FP_2(r3)
243         lfd             fr3, FP_3(r3)
244         lfd             fr4, FP_4(r3)
245         lfd             fr5, FP_5(r3)
246         lfd             fr6, FP_6(r3)
247         lfd             fr7, FP_7(r3)
248         lfd             fr8, FP_8(r3)
249         lfd             fr9, FP_9(r3)
250         lfd             fr10, FP_10(r3)
251         lfd             fr11, FP_11(r3)
252         lfd             fr12, FP_12(r3)
253         lfd             fr13, FP_13(r3)
254         lfd             fr14, FP_14(r3)
255         lfd             fr15, FP_15(r3)
256         lfd             fr16, FP_16(r3)
257         lfd             fr17, FP_17(r3)
258         lfd             fr18, FP_18(r3)
259         lfd             fr19, FP_19(r3)
260         lfd             fr20, FP_20(r3)
261         lfd             fr21, FP_21(r3)
262         lfd             fr22, FP_22(r3)
263         lfd             fr23, FP_23(r3)
264         lfd             fr24, FP_24(r3)
265         lfd             fr25, FP_25(r3)
266         lfd             fr26, FP_26(r3)
267         lfd             fr27, FP_27(r3)
268         lfd             fr28, FP_28(r3)
269         lfd             fr29, FP_29(r3)
270         lfd             fr30, FP_30(r3)
271         lfd             fr31, FP_31(r3)
272 2:      blr
274         .align  5
275         .globl _cpu_context_switch
276 _cpu_context_switch:
277         sync
278         isync
280         stw             sp,GP_1(r3)
281         lwz             sp,GP_1(r4)
282         stw             toc,GP_2(r3)
283         lwz             toc,GP_2(r4)
285         stmw            r13,GP_13(r3)
286         lmw             r13,GP_13(r4)
287         
288         mfspr   r5,912
289         stw             r5,GQ_0(r3)
290         lwz             r6,GQ_0(r4)
291         mtspr   912,r6
292         mfspr   r5,913
293         stw             r5,GQ_1(r3)
294         lwz             r6,GQ_1(r4)
295         mtspr   913,r6
296         mfspr   r5,914
297         stw             r5,GQ_2(r3)
298         lwz             r6,GQ_2(r4)
299         mtspr   914,r6
300         mfspr   r5,915
301         stw             r5,GQ_3(r3)
302         lwz             r6,GQ_3(r4)
303         mtspr   915,r6
304         mfspr   r5,916
305         stw             r5,GQ_4(r3)
306         lwz             r6,GQ_4(r4)
307         mtspr   916,r6
308         mfspr   r5,917
309         stw             r5,GQ_5(r3)
310         lwz             r6,GQ_5(r4)
311         mtspr   917,r6
312         mfspr   r5,918
313         stw             r5,GQ_6(r3)
314         lwz             r6,GQ_6(r4)
315         mtspr   918,r6
316         mfspr   r5,919
317         stw             r5,GQ_7(r3)
318         lwz             r6,GQ_7(r4)
319         mtspr   919,r6
321         mfcr    r5
322         stw             r5, GP_CR(r3)
323         lwz             r6, GP_CR(r4)
324         mtcrf   255, r6
325         mflr    r5
326         stw             r5, GP_LR(r3)
327         lwz             r6, GP_LR(r4)
328         mtlr    r6
329         mfmsr   r5
330         stw             r5, GP_MSR(r3)
331         lwz             r6, GP_MSR(r4)
332         rlwinm  r6, r6, 0, 19, 17
333         mtmsr   r6
335         blr
337         .align  5
338         .globl _cpu_context_save
339 _cpu_context_save:
340         sync
341         isync
343         stw sp,GPR1_OFFSET-8(r3)
344         stw toc,GPR2_OFFSET-8(r3)
345         stmw r13,GPR13_OFFSET-8(r3)
347         mfctr   r6
348         stw     r6, CTR_OFFSET-8(r3)
349         mfcr    r6
350         stw     r6, CR_OFFSET-8(r3)
351         mflr    r7
352         stw     r7, LR_OFFSET-8(r3)
353         mfmsr   r8
354         stw     r8, MSR_OFFSET-8(r3)
356         mfspr   r6,913
357         stw     r6,GQR1_OFFSET-8(r3)
358         mfspr   r6,914
359         stw     r6,GQR2_OFFSET-8(r3)
360         mfspr   r6,915
361         stw     r6,GQR3_OFFSET-8(r3)
362         mfspr   r6,916
363         stw     r6,GQR4_OFFSET-8(r3)
364         mfspr   r6,917
365         stw     r6,GQR5_OFFSET-8(r3)
366         mfspr   r6,918
367         stw     r6,GQR6_OFFSET-8(r3)
368         mfspr   r6,919
369         stw     r6,GQR7_OFFSET-8(r3)
371         blr
373         .align  5
374         .globl _cpu_context_restore
375 _cpu_context_restore:
376         lwz sp,GPR1_OFFSET-8(r3)
377         lwz toc,GPR2_OFFSET-8(r3)
378         lmw r13,GPR13_OFFSET-8(r3)
380         lwz     r6, CTR_OFFSET-8(r3)
381         mtctr   r6
382         lwz     r6, CR_OFFSET-8(r3)
383         mtcrf   255, r6
384         lwz     r7, LR_OFFSET-8(r3)
385         mtlr    r7
386         lwz     r8, MSR_OFFSET-8(r3)
387         rlwinm  r8,r8,0,19,17
388         mtmsr   r8
390         lwz     r6, GQR1_OFFSET-8(r3)
391         mtspr   913,r6
392         lwz     r6, GQR2_OFFSET-8(r3)
393         mtspr   914,r6
394         lwz     r6, GQR3_OFFSET-8(r3)
395         mtspr   915,r6
396         lwz     r6, GQR4_OFFSET-8(r3)
397         mtspr   916,r6
398         lwz     r6, GQR5_OFFSET-8(r3)
399         mtspr   917,r6
400         lwz     r6, GQR6_OFFSET-8(r3)
401         mtspr   918,r6
402         lwz     r6, GQR7_OFFSET-8(r3)
403         mtspr   919,r6
405         blr
407 #ifdef _DEBUG
408         .align  5
409         .globl _cpu_context_switch_ex
410 _cpu_context_switch_ex:
411         sync
412         isync
414         stw             sp,GP_1(r3)
415         lwz             sp,GP_1(r4)
416         stw             toc,GP_2(r3)
417         lwz             toc,GP_2(r4)
419         stmw    r5,GP_5(r3)
421         mfspr   r5,912
422         stw             r5,GQ_0(r3)
423         lwz             r5,GQ_0(r4)
424         mfspr   r6,913
425         mtspr   912,r5
426         stw             r6,GQ_1(r3)
427         lwz             r6,GQ_1(r4)
428         mfspr   r5,914
429         mtspr   913,r6
430         stw             r5,GQ_2(r3)
431         lwz             r5,GQ_2(r4)
432         mfspr   r6,915
433         mtspr   914,r5
434         stw             r6,GQ_3(r3)
435         lwz             r6,GQ_3(r4)
436         mfspr   r5,916
437         mtspr   915,r6
438         stw             r5,GQ_4(r3)
439         lwz             r5,GQ_4(r4)
440         mfspr   r6,917
441         mtspr   916,r5
442         stw             r6,GQ_5(r3)
443         lwz             r6,GQ_5(r4)
444         mfspr   r5,918
445         mtspr   917,r6
446         stw             r5,GQ_6(r3)
447         lwz             r5,GQ_6(r4)
448         mfspr   r6,919
449         mtspr   918,r5
450         stw             r6,GQ_7(r3)
451         lwz             r6,GQ_7(r4)
452         mtspr   919,r6
454         mfsrr0  r5
455         stw             r5, GP_SRR0(r3)
456         lwz             r5, GP_SRR0(r4)
457         mfsrr1  r6
458         mtsrr0  r5
459         stw             r6, GP_SRR1(r3)
460         lwz             r6, GP_SRR1(r4)
461         mtsrr1  r6
462         mfcr    r5
463         stw             r5, GP_CR(r3)
464         lwz             r5, GP_CR(r4)
465         mflr    r6
466         mtcrf   255, r5
467         stw             r6, GP_LR(r3)
468         lwz             r6, GP_LR(r4)
469         mfmsr   r5
470         mtlr    r6
471         stw             r5, GP_MSR(r3)
472         lwz             r5, GP_MSR(r4)
473         lmw             r6, GP_6(r4)
474         rlwinm  r5, r5, 0, 19, 17
475         mtmsr   r5
477         lwz             r5,GP_5(r4)
478         blr
480         .align  5
481         .globl _cpu_context_save_ex
482 _cpu_context_save_ex:
483         sync
484         isync
486         stw             r0,GPR0_OFFSET-8(r3)
487         stw             sp,GPR1_OFFSET-8(r3)
488         stw             toc,GPR2_OFFSET-8(r3)
489         stmw    r3,GPR3_OFFSET-8(r3)
491         mfctr   r6
492         stw             r6, CTR_OFFSET-8(r3)
493         mfcr    r6
494         stw             r6, CR_OFFSET-8(r3)
495         mflr    r7
496         stw             r7, LR_OFFSET-8(r3)
497         mfxer   r7
498         stw             r8, XER_OFFSET-8(r3)
499         mfmsr   r8
500         stw             r8, MSR_OFFSET-8(r3)
501         mfdar   r8
502         stw             r8, DAR_OFFSET-8(r3)
503         mfsrr0  r8
504         stw             r8, SRR0_OFFSET-8(r3)
505         mfsrr1  r8
506         stw             r8, SRR1_OFFSET-8(r3)
508         mfspr   r6,913
509         stw     r6,GQR1_OFFSET-8(r3)
510         mfspr   r6,914
511         stw     r6,GQR2_OFFSET-8(r3)
512         mfspr   r6,915
513         stw     r6,GQR3_OFFSET-8(r3)
514         mfspr   r6,916
515         stw     r6,GQR4_OFFSET-8(r3)
516         mfspr   r6,917
517         stw     r6,GQR5_OFFSET-8(r3)
518         mfspr   r6,918
519         stw     r6,GQR6_OFFSET-8(r3)
520         mfspr   r6,919
521         stw     r6,GQR7_OFFSET-8(r3)
523         blr
525         .align  5
526         .globl _cpu_context_restore_ex
527 _cpu_context_restore_ex:
529         lwz             r6, CTR_OFFSET-8(r3)
530         mtctr   r6
531         lwz             r6, CR_OFFSET-8(r3)
532         mtcrf   255, r6
533         lwz             r7, LR_OFFSET-8(r3)
534         mtlr    r7
535         lwz             r7, XER_OFFSET-8(r3)
536         mtxer   r7
537         lwz             r8, MSR_OFFSET-8(r3)
538         mtmsr   r8
539         lwz             r8, SRR0_OFFSET-8(r3)
540         mtsrr0  r8
541         lwz             r8, SRR1_OFFSET-8(r3)
542         mtsrr1  r8
544         lwz     r6, GQR1_OFFSET-8(r3)
545         mtspr   913,r6
546         lwz     r6, GQR2_OFFSET-8(r3)
547         mtspr   914,r6
548         lwz     r6, GQR3_OFFSET-8(r3)
549         mtspr   915,r6
550         lwz     r6, GQR4_OFFSET-8(r3)
551         mtspr   916,r6
552         lwz     r6, GQR5_OFFSET-8(r3)
553         mtspr   917,r6
554         lwz     r6, GQR6_OFFSET-8(r3)
555         mtspr   918,r6
556         lwz     r6, GQR7_OFFSET-8(r3)
557         mtspr   919,r6
559         lwz             sp,GPR1_OFFSET-8(r3)
560         lwz             toc,GPR2_OFFSET-8(r3)
561         lmw             r4,GPR4_OFFSET-8(r3)
562         lwz             r3,GPR3_OFFSET-8(r3)
564         blr
565 #endif