MCPcopy Create free account
hub / github.com/chyyuu/os_kernel_lab / switch

Function switch

user/src/bin/stackful_coroutine.rs:263–303  ·  view source on GitHub ↗
(old: *mut TaskContext, new: *const TaskContext)

Source from the content-addressed store, hash-verified

261#[naked]
262#[no_mangle]
263unsafe extern "C" fn switch(old: *mut TaskContext, new: *const TaskContext) {
264 // a0: _old, a1: _new
265 asm!(
266 "
267 sd x1, 0x00(a0)
268 sd x2, 0x08(a0)
269 sd x8, 0x10(a0)
270 sd x9, 0x18(a0)
271 sd x18, 0x20(a0)
272 sd x19, 0x28(a0)
273 sd x20, 0x30(a0)
274 sd x21, 0x38(a0)
275 sd x22, 0x40(a0)
276 sd x23, 0x48(a0)
277 sd x24, 0x50(a0)
278 sd x25, 0x58(a0)
279 sd x26, 0x60(a0)
280 sd x27, 0x68(a0)
281 sd x1, 0x70(a0)
282
283 ld x1, 0x00(a1)
284 ld x2, 0x08(a1)
285 ld x8, 0x10(a1)
286 ld x9, 0x18(a1)
287 ld x18, 0x20(a1)
288 ld x19, 0x28(a1)
289 ld x20, 0x30(a1)
290 ld x21, 0x38(a1)
291 ld x22, 0x40(a1)
292 ld x23, 0x48(a1)
293 ld x24, 0x50(a1)
294 ld x25, 0x58(a1)
295 ld x26, 0x60(a1)
296 ld x27, 0x68(a1)
297 ld t0, 0x70(a1)
298
299 jr t0
300 ",
301 options(noreturn)
302 );
303}
304
305#[no_mangle]
306pub fn main() {

Callers 1

t_yieldMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected