diff options
| author | Aleksa Vuckovic <aleksav013@gmail.com> | 2022-09-07 22:10:02 +0200 |
|---|---|---|
| committer | Aleksa Vuckovic <aleksav013@gmail.com> | 2022-09-07 22:24:29 +0200 |
| commit | 1effe3b9ac0bb1a819f6ae5ebb8438e60b77f9a2 (patch) | |
| tree | 33db19103b338938928f7813f0ca2a16073e7d0c /kernel/src/sys/syscall_asm.S | |
| parent | 956bb743a3ba6939aaff2372fc45628cda6a9840 (diff) | |
syscall
Diffstat (limited to 'kernel/src/sys/syscall_asm.S')
| -rw-r--r-- | kernel/src/sys/syscall_asm.S | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/kernel/src/sys/syscall_asm.S b/kernel/src/sys/syscall_asm.S new file mode 100644 index 0000000..a9942ca --- /dev/null +++ b/kernel/src/sys/syscall_asm.S @@ -0,0 +1,40 @@ +.extern syscall_handler + +.macro pushall + push %rax + push %rcx + push %rdx + push %rsi + push %rdi + push %r8 + push %r9 + push %r10 + push %r11 + pushfq +.endm + +.macro popall + popfq + pop %r11 + pop %r10 + pop %r9 + pop %r8 + pop %rdi + pop %rsi + pop %rdx + pop %rcx + pop %rax +.endm + +.global __syscall +__syscall: + pushq %rcx + pushq %r11 + + pushall + call syscall_handler + popall + + popfq + popq %rcx + sysretq |
