49 lines
953 B
ArmAsm
49 lines
953 B
ArmAsm
// 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
|