diff options
Diffstat (limited to 'euler/source/syscall.asm')
-rw-r--r-- | euler/source/syscall.asm | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/euler/source/syscall.asm b/euler/source/syscall.asm new file mode 100644 index 0000000..d4515bb --- /dev/null +++ b/euler/source/syscall.asm @@ -0,0 +1,32 @@ +bits 64 + +section .text + +global __euler_do_syscall +__euler_do_syscall: + + push rdi + push rsi + push rdx + push rcx + + mov rax, qword [rdi] + mov rdi, qword [rsi] + mov rsi, qword [rdx] + mov rdx, qword [rcx] + + syscall + + pop rcx + mov qword [rcx], rdx + + pop rdx + mov qword [rdx], rsi + + pop rsi + mov qword [rsi], rdi + + pop rdi + mov qword [rdi], rax + + ret |