#!/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