- Moved MSR code to separate files with an enum class - Implemented syscall_enable in C++ using new MSR calls
25 lines
484 B
ArmAsm
25 lines
484 B
ArmAsm
%include "push_all.inc"
|
|
|
|
extern syscall_handler
|
|
global syscall_handler_prelude
|
|
syscall_handler_prelude:
|
|
push 0 ; ss, doesn't matter here
|
|
push rsp
|
|
pushf
|
|
push 0 ; cs, doesn't matter here
|
|
push rcx ; user rip
|
|
push 0 ; bogus interrupt
|
|
push 0 ; bogus errorcode
|
|
push_all_and_segments
|
|
|
|
mov rdi, rsp
|
|
call syscall_handler
|
|
mov rsp, rax
|
|
|
|
pop_all_and_segments
|
|
add rsp, 16 ; ignore bogus interrupt / error
|
|
pop rcx ; user rip
|
|
add rsp, 32 ; ignore cs, flags, rsp, ss
|
|
|
|
o64 sysret
|