LibC: syscalls have now proper argument order

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

View File

@ -20,15 +20,28 @@ long syscall(long syscall, ...)
switch (syscall) switch (syscall)
{ {
case SYS_EXIT: case SYS_EXIT:
ret = Kernel::syscall(SYS_EXIT, va_arg(args, int)); {
int exit_code = va_arg(args, int);
ret = Kernel::syscall(SYS_EXIT, exit_code);
break; break;
}
case SYS_READ: case SYS_READ:
ret = Kernel::syscall(SYS_READ, va_arg(args, int), va_arg(args, void*), va_arg(args, size_t)); {
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; break;
}
case SYS_WRITE: case SYS_WRITE:
ret = Kernel::syscall(SYS_WRITE, va_arg(args, int), va_arg(args, const void*), va_arg(args, size_t)); {
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; break;
} }
}
va_end(args); va_end(args);