5ed65b4d5010ee9267ea541dc18a1d42c205d35a
[reactos.git] / reactos / lib / ppcmmu / devint.s
1 /* PowerPC Trap Handler first Half */
2 .text
3 .globl mmumain
4 .globl _mmumain
5 mmumain:
6 mr 0,1
7 lis 1,2
8 subi 1,1,448
9 stw 0,20(1)
10 stw 2,24(1)
11 stw 3,28(1)
12 stw 4,32(1)
13 stw 5,36(1)
14 stw 6,40(1)
15 stw 7,44(1)
16 stw 8,48(1)
17 stw 9,52(1)
18 stw 10,56(1)
19 stw 11,60(1)
20 stw 12,64(1)
21 stw 13,68(1)
22 stw 14,72(1)
23 stw 15,76(1)
24 stw 16,80(1)
25 stw 17,84(1)
26 stw 18,88(1)
27 stw 19,92(1)
28 stw 20,96(1)
29 stw 21,100(1)
30 stw 22,104(1)
31 stw 23,108(1)
32 stw 24,112(1)
33 stw 25,116(1)
34 stw 26,120(1)
35 stw 27,124(1)
36 stw 28,128(1)
37 stw 29,132(1)
38 stw 30,136(1)
39 stw 31,140(1)
40 mfsrr0 0
41 stw 0,400(1)
42 mfmsr 0
43 stw 0,404(1)
44 mfcr 0
45 stw 0,408(1)
46 mflr 0
47 stw 0,412(1)
48 mfctr 0
49 stw 0,416(1)
50 mfxer 0
51 stw 0,420(1)
52 /* xor 0,0,0 -- We can omit this since PPC doesn't have MQ */
53 stw 0,424(1)
54 mfdsisr 0
55 stw 0,428(1)
56 mfdar 0
57 stw 0,432(1)
58 addi 7,1,16
59 lis 8,_mmumain@ha
60 addi 8,8,_mmumain@l
61 mtctr 8
62 bctrl
63 addi 1,1,16
64 lwz 2,8(1)
65 /* Don't reload r3, since we'll return a result */
66 lwz 4,16(1)
67 lwz 5,20(1)
68 lwz 6,24(1)
69 lwz 7,28(1)
70 lwz 8,32(1)
71 lwz 9,36(1)
72 lwz 10,40(1)
73 lwz 11,44(1)
74 lwz 12,48(1)
75 lwz 13,52(1)
76 lwz 14,56(1)
77 lwz 15,60(1)
78 lwz 16,64(1)
79 lwz 17,68(1)
80 lwz 18,72(1)
81 lwz 19,76(1)
82 lwz 20,80(1)
83 lwz 21,84(1)
84 lwz 22,88(1)
85 lwz 23,92(1)
86 lwz 24,96(1)
87 lwz 25,100(1)
88 lwz 26,104(1)
89 lwz 27,108(1)
90 lwz 28,112(1)
91 lwz 29,116(1)
92 lwz 30,120(1)
93 lwz 31,124(1)
94 lwz 0,392(1)
95 mtcr 0
96 lwz 0,396(1)
97 mtlr 0
98 lwz 0,400(1)
99 mtctr 0
100 lwz 0,388(1) /* Copy out new MSR bits if needed */
101 lwz 1,4(1)
102 mtmsr 0
103 blr
104
105 .globl trap_start
106 .globl trap_end
107 trap_start:
108 mtsprg1 1
109 lis 1,2
110 subi 1,1,448
111 stw 0,16(1)
112 mfsprg1 0
113 stw 0,20(1)
114 stw 2,24(1)
115 stw 3,28(1)
116 stw 4,32(1)
117 stw 5,36(1)
118 stw 6,40(1)
119 stw 7,44(1)
120 stw 8,48(1)
121 stw 9,52(1)
122 stw 10,56(1)
123 stw 11,60(1)
124 stw 12,64(1)
125 stw 13,68(1)
126 stw 14,72(1)
127 stw 15,76(1)
128 stw 16,80(1)
129 stw 17,84(1)
130 stw 18,88(1)
131 stw 19,92(1)
132 stw 20,96(1)
133 stw 21,100(1)
134 stw 22,104(1)
135 stw 23,108(1)
136 stw 24,112(1)
137 stw 25,116(1)
138 stw 26,120(1)
139 stw 27,124(1)
140 stw 28,128(1)
141 stw 29,132(1)
142 stw 30,136(1)
143 stw 31,140(1)
144 mfsrr0 0
145 stw 0,400(1)
146 mfsrr1 0
147 stw 0,404(1)
148 mfcr 0
149 stw 0,408(1)
150 mflr 0
151 stw 0,412(1)
152 mfctr 0
153 stw 0,416(1)
154 mfxer 0
155 stw 0,420(1)
156 /* xor 0,0,0 -- We can omit this since PPC doesn't have MQ */
157 stw 0,424(1)
158 mfdsisr 0
159 stw 0,428(1)
160 mfdar 0
161 stw 0,432(1)
162 bl 1f
163 1: mflr 5
164 addi 4,1,16
165 rlwinm 3,5,24,0xff
166 lwz 5,36(5)
167 mtctr 5
168 lis 5,trap_finish_start@ha
169 addi 5,5,trap_finish_start@l
170 mtlr 5
171 bctr
172 trap_end:
173 .space 4
174
175 .globl trap_finish_start
176 trap_finish_start:
177 addi 1,1,16
178 lwz 2,8(1)
179 lwz 3,12(1)
180 lwz 4,16(1)
181 lwz 5,20(1)
182 lwz 6,24(1)
183 lwz 7,28(1)
184 lwz 8,32(1)
185 lwz 9,36(1)
186 lwz 10,40(1)
187 lwz 11,44(1)
188 lwz 12,48(1)
189 lwz 13,52(1)
190 lwz 14,56(1)
191 lwz 15,60(1)
192 lwz 16,64(1)
193 lwz 17,68(1)
194 lwz 18,72(1)
195 lwz 19,76(1)
196 lwz 20,80(1)
197 lwz 21,84(1)
198 lwz 22,88(1)
199 lwz 23,92(1)
200 lwz 24,96(1)
201 lwz 25,100(1)
202 lwz 26,104(1)
203 lwz 27,108(1)
204 lwz 28,112(1)
205 lwz 29,116(1)
206 lwz 30,120(1)
207 lwz 31,124(1)
208 lwz 0,384(1)
209 mtsrr0 0
210 lwz 0,388(1)
211 mtsrr1 0
212 lwz 0,392(1)
213 mtcr 0
214 lwz 0,396(1)
215 mtlr 0
216 lwz 0,400(1)
217 mtctr 0
218 lwz 0,404(1)
219 mtxer 0
220 lwz 0,412(1)
221 mtdsisr 0
222 lwz 0,416(1)
223 mtdar 0
224 lwz 0,0(1)
225 lwz 1,4(1)
226 rfi