Lines 94-111
ENTRY(cpu_throw)
Link Here
|
94 |
msr tpidr_el0, x6 |
94 |
msr tpidr_el0, x6 |
95 |
ldr x6, [x4, #PCB_TPIDRRO] |
95 |
ldr x6, [x4, #PCB_TPIDRRO] |
96 |
msr tpidrro_el0, x6 |
96 |
msr tpidrro_el0, x6 |
97 |
ldp x8, x9, [x4, #PCB_REGS + 8 * 8] |
97 |
ldp x19, x20, [x4, #PCB_REGS + 19 * 8] |
98 |
ldp x10, x11, [x4, #PCB_REGS + 10 * 8] |
98 |
ldp x21, x22, [x4, #PCB_REGS + 21 * 8] |
99 |
ldp x12, x13, [x4, #PCB_REGS + 12 * 8] |
99 |
ldp x23, x24, [x4, #PCB_REGS + 23 * 8] |
100 |
ldp x14, x15, [x4, #PCB_REGS + 14 * 8] |
100 |
ldp x25, x26, [x4, #PCB_REGS + 25 * 8] |
101 |
ldp x16, x17, [x4, #PCB_REGS + 16 * 8] |
101 |
ldp x27, x28, [x4, #PCB_REGS + 27 * 8] |
102 |
ldr x19, [x4, #PCB_REGS + 19 * 8] |
102 |
ldp x29, lr, [x4, #PCB_REGS + 29 * 8] |
103 |
ldp x20, x21, [x4, #PCB_REGS + 20 * 8] |
|
|
104 |
ldp x22, x23, [x4, #PCB_REGS + 22 * 8] |
105 |
ldp x24, x25, [x4, #PCB_REGS + 24 * 8] |
106 |
ldp x26, x27, [x4, #PCB_REGS + 26 * 8] |
107 |
ldp x28, x29, [x4, #PCB_REGS + 28 * 8] |
108 |
ldr lr, [x4, #PCB_LR] |
109 |
|
103 |
|
110 |
ret |
104 |
ret |
111 |
END(cpu_throw) |
105 |
END(cpu_throw) |
Lines 125-142
ENTRY(cpu_switch)
Link Here
|
125 |
ldr x4, [x0, #TD_PCB] |
119 |
ldr x4, [x0, #TD_PCB] |
126 |
|
120 |
|
127 |
/* Store the callee-saved registers */ |
121 |
/* Store the callee-saved registers */ |
128 |
stp x8, x9, [x4, #PCB_REGS + 8 * 8] |
122 |
stp x19, x20, [x4, #PCB_REGS + 19 * 8] |
129 |
stp x10, x11, [x4, #PCB_REGS + 10 * 8] |
123 |
stp x21, x22, [x4, #PCB_REGS + 21 * 8] |
130 |
stp x12, x13, [x4, #PCB_REGS + 12 * 8] |
124 |
stp x23, x24, [x4, #PCB_REGS + 23 * 8] |
131 |
stp x14, x15, [x4, #PCB_REGS + 14 * 8] |
125 |
stp x25, x26, [x4, #PCB_REGS + 25 * 8] |
132 |
stp x16, x17, [x4, #PCB_REGS + 16 * 8] |
126 |
stp x27, x28, [x4, #PCB_REGS + 27 * 8] |
133 |
stp x18, x19, [x4, #PCB_REGS + 18 * 8] |
127 |
stp x29, lr, [x4, #PCB_REGS + 29 * 8] |
134 |
stp x20, x21, [x4, #PCB_REGS + 20 * 8] |
|
|
135 |
stp x22, x23, [x4, #PCB_REGS + 22 * 8] |
136 |
stp x24, x25, [x4, #PCB_REGS + 24 * 8] |
137 |
stp x26, x27, [x4, #PCB_REGS + 26 * 8] |
138 |
stp x28, x29, [x4, #PCB_REGS + 28 * 8] |
139 |
str lr, [x4, #PCB_LR] |
140 |
/* And the old stack pointer */ |
128 |
/* And the old stack pointer */ |
141 |
mov x5, sp |
129 |
mov x5, sp |
142 |
mrs x6, tpidrro_el0 |
130 |
mrs x6, tpidrro_el0 |
Lines 195-220
ENTRY(cpu_switch)
Link Here
|
195 |
msr tpidr_el0, x6 |
183 |
msr tpidr_el0, x6 |
196 |
ldr x6, [x4, #PCB_TPIDRRO] |
184 |
ldr x6, [x4, #PCB_TPIDRRO] |
197 |
msr tpidrro_el0, x6 |
185 |
msr tpidrro_el0, x6 |
198 |
ldp x8, x9, [x4, #PCB_REGS + 8 * 8] |
186 |
ldp x19, x20, [x4, #PCB_REGS + 19 * 8] |
199 |
ldp x10, x11, [x4, #PCB_REGS + 10 * 8] |
187 |
ldp x21, x22, [x4, #PCB_REGS + 21 * 8] |
200 |
ldp x12, x13, [x4, #PCB_REGS + 12 * 8] |
188 |
ldp x23, x24, [x4, #PCB_REGS + 23 * 8] |
201 |
ldp x14, x15, [x4, #PCB_REGS + 14 * 8] |
189 |
ldp x25, x26, [x4, #PCB_REGS + 25 * 8] |
202 |
ldp x16, x17, [x4, #PCB_REGS + 16 * 8] |
190 |
ldp x27, x28, [x4, #PCB_REGS + 27 * 8] |
203 |
ldr x19, [x4, #PCB_REGS + 19 * 8] |
191 |
ldp x29, lr, [x4, #PCB_REGS + 29 * 8] |
204 |
ldp x20, x21, [x4, #PCB_REGS + 20 * 8] |
|
|
205 |
ldp x22, x23, [x4, #PCB_REGS + 22 * 8] |
206 |
ldp x24, x25, [x4, #PCB_REGS + 24 * 8] |
207 |
ldp x26, x27, [x4, #PCB_REGS + 26 * 8] |
208 |
ldp x28, x29, [x4, #PCB_REGS + 28 * 8] |
209 |
ldr lr, [x4, #PCB_LR] |
210 |
|
192 |
|
211 |
str xzr, [x4, #PCB_REGS + 18 * 8] |
193 |
str xzr, [x4, #PCB_REGS + 18 * 8] |
212 |
ret |
194 |
ret |
213 |
END(cpu_switch) |
195 |
END(cpu_switch) |
214 |
|
196 |
|
215 |
ENTRY(fork_trampoline) |
197 |
ENTRY(fork_trampoline) |
216 |
mov x0, x8 |
198 |
mov x0, x19 |
217 |
mov x1, x9 |
199 |
mov x1, x20 |
218 |
mov x2, sp |
200 |
mov x2, sp |
219 |
mov fp, #0 /* Stack traceback stops here. */ |
201 |
mov fp, #0 /* Stack traceback stops here. */ |
220 |
bl _C_LABEL(fork_exit) |
202 |
bl _C_LABEL(fork_exit) |
Lines 258-280
ENTRY(fork_trampoline)
Link Here
|
258 |
* will be set to the desired value anyway. |
240 |
* will be set to the desired value anyway. |
259 |
*/ |
241 |
*/ |
260 |
ERET |
242 |
ERET |
261 |
|
243 |
|
262 |
END(fork_trampoline) |
244 |
END(fork_trampoline) |
263 |
|
245 |
|
264 |
ENTRY(savectx) |
246 |
ENTRY(savectx) |
265 |
/* Store the callee-saved registers */ |
247 |
/* Store the callee-saved registers */ |
266 |
stp x8, x9, [x0, #PCB_REGS + 8 * 8] |
248 |
stp x19, x20, [x0, #PCB_REGS + 19 * 8] |
267 |
stp x10, x11, [x0, #PCB_REGS + 10 * 8] |
249 |
stp x21, x22, [x0, #PCB_REGS + 21 * 8] |
268 |
stp x12, x13, [x0, #PCB_REGS + 12 * 8] |
250 |
stp x23, x24, [x0, #PCB_REGS + 23 * 8] |
269 |
stp x14, x15, [x0, #PCB_REGS + 14 * 8] |
251 |
stp x25, x26, [x0, #PCB_REGS + 25 * 8] |
270 |
stp x16, x17, [x0, #PCB_REGS + 16 * 8] |
252 |
stp x27, x28, [x0, #PCB_REGS + 27 * 8] |
271 |
stp x18, x19, [x0, #PCB_REGS + 18 * 8] |
253 |
stp x29, lr, [x0, #PCB_REGS + 29 * 8] |
272 |
stp x20, x21, [x0, #PCB_REGS + 20 * 8] |
|
|
273 |
stp x22, x23, [x0, #PCB_REGS + 22 * 8] |
274 |
stp x24, x25, [x0, #PCB_REGS + 24 * 8] |
275 |
stp x26, x27, [x0, #PCB_REGS + 26 * 8] |
276 |
stp x28, x29, [x0, #PCB_REGS + 28 * 8] |
277 |
str lr, [x0, #PCB_LR] |
278 |
/* And the old stack pointer */ |
254 |
/* And the old stack pointer */ |
279 |
mov x5, sp |
255 |
mov x5, sp |
280 |
mrs x6, tpidrro_el0 |
256 |
mrs x6, tpidrro_el0 |