Blob


1 ENTRY(_tas)
2 li %r0, 0
3 mr %r4, %r3
4 lis %r5, 0xcafe
5 ori %r5, %r5, 0xbabe
6 1:
7 lwarx %r3, %r0, %r4
8 cmpwi %r3, 0
9 bne 2f
10 stwcx. %r5, %r0, %r4
11 bne- 1b
12 2:
13 sync
14 blr
16 ENTRY(_getmcontext) /* xxx: instruction scheduling */
17 mflr %r0
18 mfcr %r5
19 mfctr %r6
20 mfxer %r7
21 stw %r0, 0*4(%r3)
22 stw %r5, 1*4(%r3)
23 stw %r6, 2*4(%r3)
24 stw %r7, 3*4(%r3)
26 stw %r1, 4*4(%r3)
27 stw %r2, 5*4(%r3)
28 li %r5, 1 /* return value for setmcontext */
29 stw %r5, 6*4(%r3)
31 stw %r13, (0+7)*4(%r3) /* callee-save GPRs */
32 stw %r14, (1+7)*4(%r3) /* xxx: block move */
33 stw %r15, (2+7)*4(%r3)
34 stw %r16, (3+7)*4(%r3)
35 stw %r17, (4+7)*4(%r3)
36 stw %r18, (5+7)*4(%r3)
37 stw %r19, (6+7)*4(%r3)
38 stw %r20, (7+7)*4(%r3)
39 stw %r21, (8+7)*4(%r3)
40 stw %r22, (9+7)*4(%r3)
41 stw %r23, (10+7)*4(%r3)
42 stw %r24, (11+7)*4(%r3)
43 stw %r25, (12+7)*4(%r3)
44 stw %r26, (13+7)*4(%r3)
45 stw %r27, (14+7)*4(%r3)
46 stw %r28, (15+7)*4(%r3)
47 stw %r29, (16+7)*4(%r3)
48 stw %r30, (17+7)*4(%r3)
49 stw %r31, (18+7)*4(%r3)
51 li %r3, 0 /* return */
52 blr
54 ENTRY(_setmcontext)
55 lwz %r13, (0+7)*4(%r3) /* callee-save GPRs */
56 lwz %r14, (1+7)*4(%r3) /* xxx: block move */
57 lwz %r15, (2+7)*4(%r3)
58 lwz %r16, (3+7)*4(%r3)
59 lwz %r17, (4+7)*4(%r3)
60 lwz %r18, (5+7)*4(%r3)
61 lwz %r19, (6+7)*4(%r3)
62 lwz %r20, (7+7)*4(%r3)
63 lwz %r21, (8+7)*4(%r3)
64 lwz %r22, (9+7)*4(%r3)
65 lwz %r23, (10+7)*4(%r3)
66 lwz %r24, (11+7)*4(%r3)
67 lwz %r25, (12+7)*4(%r3)
68 lwz %r26, (13+7)*4(%r3)
69 lwz %r27, (14+7)*4(%r3)
70 lwz %r28, (15+7)*4(%r3)
71 lwz %r29, (16+7)*4(%r3)
72 lwz %r30, (17+7)*4(%r3)
73 lwz %r31, (18+7)*4(%r3)
75 lwz %r1, 4*4(%r3)
76 lwz %r2, 5*4(%r3)
78 lwz %r0, 0*4(%r3)
79 mtlr %r0
80 lwz %r0, 1*4(%r3)
81 mtcr %r0 /* mtcrf 0xFF, %r0 */
82 lwz %r0, 2*4(%r3)
83 mtctr %r0
84 lwz %r0, 3*4(%r3)
85 mtxer %r0
87 lwz %r3, 6*4(%r3)
88 blr