29 lines
459 B
C
29 lines
459 B
C
#pragma once
|
|
|
|
#include <zinnia/sched.h>
|
|
|
|
struct syscall_ret {
|
|
uintptr_t value;
|
|
int error;
|
|
};
|
|
|
|
struct syscall {
|
|
void* func;
|
|
int num_args;
|
|
};
|
|
|
|
[[gnu::no_caller_saved_registers]]
|
|
struct syscall_ret syscall_dispatch_fast(
|
|
uintptr_t a0,
|
|
uintptr_t a1,
|
|
uintptr_t a2,
|
|
uintptr_t a3,
|
|
uintptr_t a4,
|
|
uintptr_t a5,
|
|
size_t num
|
|
);
|
|
|
|
void syscall_dispatch(struct arch_context* ctx);
|
|
|
|
extern const struct syscall syscall_table[256];
|