Blame


1 cea10000 2005-05-01 devnull #include <sys/syscall.h>
2 cea10000 2005-05-01 devnull #include <machine/asm.h>
3 cea10000 2005-05-01 devnull
4 cea10000 2005-05-01 devnull ENTRY(_tas)
5 cea10000 2005-05-01 devnull li %r0, 0
6 cea10000 2005-05-01 devnull mr %r4, %r3
7 cea10000 2005-05-01 devnull lis %r5, 0xcafe
8 cea10000 2005-05-01 devnull ori %r5, %r5, 0xbabe
9 cea10000 2005-05-01 devnull 1:
10 cea10000 2005-05-01 devnull lwarx %r3, %r0, %r4
11 cea10000 2005-05-01 devnull cmpwi %r3, 0
12 cea10000 2005-05-01 devnull bne 2f
13 cea10000 2005-05-01 devnull stwcx. %r5, %r0, %r4
14 cea10000 2005-05-01 devnull bne- 1b
15 cea10000 2005-05-01 devnull 2:
16 cea10000 2005-05-01 devnull sync
17 cea10000 2005-05-01 devnull blr
18 cea10000 2005-05-01 devnull
19 cea10000 2005-05-01 devnull ENTRY(_getmcontext) /* xxx: instruction scheduling */
20 cea10000 2005-05-01 devnull mflr %r0
21 cea10000 2005-05-01 devnull mfcr %r5
22 cea10000 2005-05-01 devnull mfctr %r6
23 cea10000 2005-05-01 devnull mfxer %r7
24 cea10000 2005-05-01 devnull stw %r0, 0*4(%r3)
25 cea10000 2005-05-01 devnull stw %r5, 1*4(%r3)
26 cea10000 2005-05-01 devnull stw %r6, 2*4(%r3)
27 cea10000 2005-05-01 devnull stw %r7, 3*4(%r3)
28 cea10000 2005-05-01 devnull
29 cea10000 2005-05-01 devnull stw %r1, 4*4(%r3)
30 cea10000 2005-05-01 devnull stw %r2, 5*4(%r3)
31 cea10000 2005-05-01 devnull li %r5, 1 /* return value for setmcontext */
32 cea10000 2005-05-01 devnull stw %r5, 6*4(%r3)
33 cea10000 2005-05-01 devnull
34 cea10000 2005-05-01 devnull stw %r13, (0+7)*4(%r3) /* callee-save GPRs */
35 cea10000 2005-05-01 devnull stw %r14, (1+7)*4(%r3) /* xxx: block move */
36 cea10000 2005-05-01 devnull stw %r15, (2+7)*4(%r3)
37 cea10000 2005-05-01 devnull stw %r16, (3+7)*4(%r3)
38 cea10000 2005-05-01 devnull stw %r17, (4+7)*4(%r3)
39 cea10000 2005-05-01 devnull stw %r18, (5+7)*4(%r3)
40 cea10000 2005-05-01 devnull stw %r19, (6+7)*4(%r3)
41 cea10000 2005-05-01 devnull stw %r20, (7+7)*4(%r3)
42 cea10000 2005-05-01 devnull stw %r21, (8+7)*4(%r3)
43 cea10000 2005-05-01 devnull stw %r22, (9+7)*4(%r3)
44 cea10000 2005-05-01 devnull stw %r23, (10+7)*4(%r3)
45 cea10000 2005-05-01 devnull stw %r24, (11+7)*4(%r3)
46 cea10000 2005-05-01 devnull stw %r25, (12+7)*4(%r3)
47 cea10000 2005-05-01 devnull stw %r26, (13+7)*4(%r3)
48 cea10000 2005-05-01 devnull stw %r27, (14+7)*4(%r3)
49 cea10000 2005-05-01 devnull stw %r28, (15+7)*4(%r3)
50 cea10000 2005-05-01 devnull stw %r29, (16+7)*4(%r3)
51 cea10000 2005-05-01 devnull stw %r30, (17+7)*4(%r3)
52 cea10000 2005-05-01 devnull stw %r31, (18+7)*4(%r3)
53 cea10000 2005-05-01 devnull
54 cea10000 2005-05-01 devnull li %r3, 0 /* return */
55 cea10000 2005-05-01 devnull blr
56 cea10000 2005-05-01 devnull
57 cea10000 2005-05-01 devnull ENTRY(_setmcontext)
58 cea10000 2005-05-01 devnull lwz %r13, (0+7)*4(%r3) /* callee-save GPRs */
59 cea10000 2005-05-01 devnull lwz %r14, (1+7)*4(%r3) /* xxx: block move */
60 cea10000 2005-05-01 devnull lwz %r15, (2+7)*4(%r3)
61 cea10000 2005-05-01 devnull lwz %r16, (3+7)*4(%r3)
62 cea10000 2005-05-01 devnull lwz %r17, (4+7)*4(%r3)
63 cea10000 2005-05-01 devnull lwz %r18, (5+7)*4(%r3)
64 cea10000 2005-05-01 devnull lwz %r19, (6+7)*4(%r3)
65 cea10000 2005-05-01 devnull lwz %r20, (7+7)*4(%r3)
66 cea10000 2005-05-01 devnull lwz %r21, (8+7)*4(%r3)
67 cea10000 2005-05-01 devnull lwz %r22, (9+7)*4(%r3)
68 cea10000 2005-05-01 devnull lwz %r23, (10+7)*4(%r3)
69 cea10000 2005-05-01 devnull lwz %r24, (11+7)*4(%r3)
70 cea10000 2005-05-01 devnull lwz %r25, (12+7)*4(%r3)
71 cea10000 2005-05-01 devnull lwz %r26, (13+7)*4(%r3)
72 cea10000 2005-05-01 devnull lwz %r27, (14+7)*4(%r3)
73 cea10000 2005-05-01 devnull lwz %r28, (15+7)*4(%r3)
74 cea10000 2005-05-01 devnull lwz %r29, (16+7)*4(%r3)
75 cea10000 2005-05-01 devnull lwz %r30, (17+7)*4(%r3)
76 cea10000 2005-05-01 devnull lwz %r31, (18+7)*4(%r3)
77 cea10000 2005-05-01 devnull
78 cea10000 2005-05-01 devnull lwz %r1, 4*4(%r3)
79 cea10000 2005-05-01 devnull lwz %r2, 5*4(%r3)
80 cea10000 2005-05-01 devnull
81 cea10000 2005-05-01 devnull lwz %r0, 0*4(%r3)
82 cea10000 2005-05-01 devnull mtlr %r0
83 cea10000 2005-05-01 devnull lwz %r0, 1*4(%r3)
84 cea10000 2005-05-01 devnull mtcr %r0 /* mtcrf 0xFF, %r0 */
85 cea10000 2005-05-01 devnull lwz %r0, 2*4(%r3)
86 cea10000 2005-05-01 devnull mtctr %r0
87 cea10000 2005-05-01 devnull lwz %r0, 3*4(%r3)
88 cea10000 2005-05-01 devnull mtxer %r0
89 cea10000 2005-05-01 devnull
90 cea10000 2005-05-01 devnull lwz %r3, 6*4(%r3)
91 cea10000 2005-05-01 devnull blr
92 cea10000 2005-05-01 devnull
93 cea10000 2005-05-01 devnull ENTRY(rfork_thread)
94 cea10000 2005-05-01 devnull /* sanity check */
95 cea10000 2005-05-01 devnull cmpwi %r4, 0
96 cea10000 2005-05-01 devnull beq 1f
97 cea10000 2005-05-01 devnull cmpwi %r5, 0
98 cea10000 2005-05-01 devnull beq 1f
99 cea10000 2005-05-01 devnull
100 cea10000 2005-05-01 devnull mr %r7,%r4
101 cea10000 2005-05-01 devnull
102 cea10000 2005-05-01 devnull /* call rfork */
103 cea10000 2005-05-01 devnull li %r0, SYS_rfork
104 cea10000 2005-05-01 devnull sc
105 cea10000 2005-05-01 devnull cmpwi %r0, 0
106 cea10000 2005-05-01 devnull bne 2f
107 cea10000 2005-05-01 devnull
108 cea10000 2005-05-01 devnull /* check if we are parent or child */
109 cea10000 2005-05-01 devnull cmpwi %r3, 0
110 cea10000 2005-05-01 devnull bnelr
111 cea10000 2005-05-01 devnull
112 cea10000 2005-05-01 devnull /* child */
113 cea10000 2005-05-01 devnull mtlr %r5 /* fp */
114 cea10000 2005-05-01 devnull mr %r3, %r6 /* arg */
115 cea10000 2005-05-01 devnull mr %r1, %r7 /* new sp */
116 cea10000 2005-05-01 devnull blrl
117 cea10000 2005-05-01 devnull
118 cea10000 2005-05-01 devnull /* child returned, call _exit */
119 cea10000 2005-05-01 devnull li %r0, SYS_exit
120 cea10000 2005-05-01 devnull sc
121 cea10000 2005-05-01 devnull 1:
122 cea10000 2005-05-01 devnull li %r3, -1
123 cea10000 2005-05-01 devnull 2:
124 cea10000 2005-05-01 devnull b PIC_PLT(_C_LABEL(__cerror))
125 cea10000 2005-05-01 devnull