46 lines
1.1 KiB
Perl
46 lines
1.1 KiB
Perl
|
#!/usr/bin/perl -w
|
||
|
|
||
|
# Generate usys.S, the stubs for syscalls.
|
||
|
|
||
|
print "// generated by usys.pl - do not edit\n";
|
||
|
|
||
|
print "#include \"kernel/syscall.h\"\n";
|
||
|
|
||
|
sub entry {
|
||
|
my $name = shift;
|
||
|
print ".global $name\n";
|
||
|
print "${name}:\n";
|
||
|
print " li a7, SYS_${name}\n";
|
||
|
print " ecall\n";
|
||
|
print " ret\n";
|
||
|
}
|
||
|
|
||
|
entry("fork");
|
||
|
entry("exit");
|
||
|
entry("wait");
|
||
|
entry("pipe");
|
||
|
entry("read");
|
||
|
entry("write");
|
||
|
entry("close");
|
||
|
entry("kill");
|
||
|
entry("execve"); # modified by Zak, replaces exec() which can work on top
|
||
|
entry("open");
|
||
|
entry("mknod");
|
||
|
entry("unlink");
|
||
|
entry("fstat");
|
||
|
entry("link");
|
||
|
entry("mkdir");
|
||
|
entry("chdir");
|
||
|
entry("dup");
|
||
|
entry("getpid");
|
||
|
entry("sbrk");
|
||
|
entry("sleep");
|
||
|
entry("uptime");
|
||
|
entry("prio"); # new syscall, set priority and limit
|
||
|
entry("affin"); # new syscall, set processor affinity
|
||
|
entry("thrd"); # new syscall, launch thread
|
||
|
entry("drvinf"); # new syscall, get drive info
|
||
|
entry("lsdir"); # new syscall, read directory in standardised form
|
||
|
entry("kqueue1"); # new syscall, allocate kqueue
|
||
|
entry("kevent"); # new syscall, wait for events or modify a kqueue
|