Files
Astral/src/arch/x86_64/context.asm
T
2023-01-02 23:36:36 -03:00

38 lines
517 B
NASM

global arch_switchcontext
arch_switchcontext:
mov rsp,rdi
add rsp, 24 ; cr2 gs fs
pop rax
mov es,rax
pop rax
mov ds,rax
pop rax
pop rbx
pop rcx
pop rdx
pop r8
pop r9
pop r10
pop r11
pop r12
pop r13
pop r14
pop r15
pop rdi
pop rsi
pop rbp
add rsp,8 ; remove error code
cmp qword [rsp+8], 0x3b ; user cs
jne .noswap
swapgs
mov qword [rsp+32], 0x43
.noswap:
iretq