Function
switch
(old: *mut TaskContext, new: *const TaskContext)
Source from the content-addressed store, hash-verified
| 261 | #[naked] |
| 262 | #[no_mangle] |
| 263 | unsafe 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] |
| 306 | pub fn main() { |
Tested by
no test coverage detected