22 lines
465 B
ArmAsm
22 lines
465 B
ArmAsm
.global context_switch
|
|
context_switch:
|
|
stp x19, x20, [x0, 16 * 0]
|
|
stp x21, x22, [x0, 16 * 1]
|
|
stp x23, x24, [x0, 16 * 2]
|
|
stp x25, x26, [x0, 16 * 3]
|
|
stp x27, x28, [x0, 16 * 4]
|
|
stp fp, lr, [x0, 16 * 5]
|
|
mov x9, sp
|
|
str x9, [x0, 16 * 6]
|
|
|
|
ldp x19, x20, [x1, 16 * 0]
|
|
ldp x21, x22, [x1, 16 * 1]
|
|
ldp x23, x24, [x1, 16 * 2]
|
|
ldp x25, x26, [x1, 16 * 3]
|
|
ldp x27, x28, [x1, 16 * 4]
|
|
ldp fp, lr, [x1, 16 * 5]
|
|
ldr x9, [x1, 16 * 6]
|
|
mov sp, x9
|
|
msr tpidr_el1, x2
|
|
ret
|