libc

my libc
git clone git://git.evenfri.pw/libc.git
Log | Files | Refs | README

syscall.c (624B)


      1 /*
      2  * syscall.c - raw system call interface
      3  * Copyright (C) 2026. All rights reserved.
      4  */
      5 
      6 #include "libc.h"
      7 
      8 static inline long call(long num, long a1, long a2, long a3, long a4, long a5, 
      9     long a6) {
     10   long ret;
     11   register long r10 asm("r10") = a4;
     12   register long r8 asm("r8") = a5;
     13   register long r9 asm("r9") = a6;
     14 
     15   asm volatile("syscall"
     16       : "=a"(ret)
     17       : "a"(num), "D"(a1), "S"(a2), "d"(a3), "r"(r10), "r"(r8), "r"(r9)
     18       : "rcx", "r11", "cc", "memory");
     19 
     20   return ret;
     21 }
     22 
     23 long syscall(long num, long a1, long a2, long a3, long a4, long a5, long a6) {
     24   return call(num, a1, a2, a3, a4, a5, a6);
     25 }