LibC: syscalls have now proper argument order

This commit is contained in:
Bananymous 2023-04-22 15:29:15 +03:00
parent 26fe6ad898
commit dc1b7cf08f
1 changed files with 22 additions and 9 deletions

View File

@ -19,15 +19,28 @@ long syscall(long syscall, ...)
switch (syscall)
{
case SYS_EXIT:
ret = Kernel::syscall(SYS_EXIT, va_arg(args, int));
break;
case SYS_READ:
ret = Kernel::syscall(SYS_READ, va_arg(args, int), va_arg(args, void*), va_arg(args, size_t));
break;
case SYS_WRITE:
ret = Kernel::syscall(SYS_WRITE, va_arg(args, int), va_arg(args, const void*), va_arg(args, size_t));
break;
case SYS_EXIT:
{
int exit_code = va_arg(args, int);
ret = Kernel::syscall(SYS_EXIT, exit_code);
break;
}
case SYS_READ:
{
int fd = va_arg(args, int);
void* buffer = va_arg(args, void*);
size_t bytes = va_arg(args, size_t);
ret = Kernel::syscall(SYS_READ, fd, buffer, bytes);
break;
}
case SYS_WRITE:
{
int fd = va_arg(args, int);
const char* string = va_arg(args, const char*);
size_t bytes = va_arg(args, size_t);
ret = Kernel::syscall(SYS_WRITE, fd, string, bytes);
break;
}
}
va_end(args);