// This is NEW CODE similar to xv6's swtch.S but written for the new sched.h structures // IMPORTANT NOTE: This code must match the structure in sched.h precisely! .text .option norvc .globl sched_switchcontext sched_switchcontext: sd s0, 0 (a0) sd s1, 8 (a0) sd s2, 16 (a0) sd s3, 24 (a0) sd s4, 32 (a0) sd s5, 40 (a0) sd s6, 48 (a0) sd s7, 56 (a0) sd s8, 64 (a0) sd s9, 72 (a0) sd s10, 80 (a0) sd s11, 88 (a0) sd ra, 96 (a0) sd sp, 104 (a0) ld sp, 104 (a1) ld ra, 96 (a1) ld s11, 88 (a1) ld s10, 80 (a1) ld s9, 72 (a1) ld s8, 64 (a1) ld s7, 56 (a1) ld s6, 48 (a1) ld s5, 40 (a1) ld s4, 32 (a1) ld s3, 24 (a1) ld s2, 16 (a1) ld s1, 8 (a1) ld s0, 0 (a1) ret .globl sched_cputhreadpointer_set sched_cputhreadpointer_set: add tp, a0, zero ret .globl sched_cputhreadpointer_get sched_cputhreadpointer_get: add a0, tp, zero ret