From 1effe3b9ac0bb1a819f6ae5ebb8438e60b77f9a2 Mon Sep 17 00:00:00 2001 From: Aleksa Vuckovic Date: Wed, 7 Sep 2022 22:10:02 +0200 Subject: syscall --- kernel/src/sys/syscall_asm.S | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 kernel/src/sys/syscall_asm.S (limited to 'kernel/src/sys/syscall_asm.S') 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 -- cgit v1.2.3