syscall.hpp 627 B

12345678910111213141516
  1. #pragma once
  2. #include <kernel/interrupt.h>
  3. #include <types/types.h>
  4. #define SYSCALL_ARG1(type, name) type name = (type)((data)->s_regs.ebx)
  5. #define SYSCALL_ARG2(type, name) type name = (type)((data)->s_regs.ecx)
  6. #define SYSCALL_ARG3(type, name) type name = (type)((data)->s_regs.edx)
  7. #define SYSCALL_ARG4(type, name) type name = (type)((data)->s_regs.esi)
  8. #define SYSCALL_ARG5(type, name) type name = (type)((data)->s_regs.edi)
  9. #define SYSCALL_ARG6(type, name) type name = (type)((data)->s_regs.ebp)
  10. // return value is stored in %eax and %edx
  11. typedef int (*syscall_handler)(interrupt_stack* data);
  12. void init_syscall(void);