1 cea10000 2005-05-01 devnull #include <sys/syscall.h>
2 cea10000 2005-05-01 devnull #include <machine/asm.h>
4 cea10000 2005-05-01 devnull ENTRY(_tas)
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
10 cea10000 2005-05-01 devnull lwarx %r3, %r0, %r4
11 cea10000 2005-05-01 devnull cmpwi %r3, 0
13 cea10000 2005-05-01 devnull stwcx. %r5, %r0, %r4
19 cea10000 2005-05-01 devnull ENTRY(_getmcontext) /* xxx: instruction scheduling */
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)
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)
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)
54 cea10000 2005-05-01 devnull li %r3, 0 /* return */
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)
78 cea10000 2005-05-01 devnull lwz %r1, 4*4(%r3)
79 cea10000 2005-05-01 devnull lwz %r2, 5*4(%r3)
81 cea10000 2005-05-01 devnull lwz %r0, 0*4(%r3)
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
90 cea10000 2005-05-01 devnull lwz %r3, 6*4(%r3)
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
97 cea10000 2005-05-01 devnull cmpwi %r5, 0
100 cea10000 2005-05-01 devnull mr %r7,%r4
102 cea10000 2005-05-01 devnull /* call rfork */
103 cea10000 2005-05-01 devnull li %r0, SYS_rfork
105 cea10000 2005-05-01 devnull cmpwi %r0, 0
108 cea10000 2005-05-01 devnull /* check if we are parent or child */
109 cea10000 2005-05-01 devnull cmpwi %r3, 0
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 */
118 cea10000 2005-05-01 devnull /* child returned, call _exit */
119 cea10000 2005-05-01 devnull li %r0, SYS_exit
122 cea10000 2005-05-01 devnull li %r3, -1
124 cea10000 2005-05-01 devnull b PIC_PLT(_C_LABEL(__cerror))