summaryrefslogtreecommitdiff
path: root/user/usys.pl
diff options
context:
space:
mode:
Diffstat (limited to 'user/usys.pl')
-rwxr-xr-xuser/usys.pl38
1 files changed, 38 insertions, 0 deletions
diff --git a/user/usys.pl b/user/usys.pl
new file mode 100755
index 0000000..01e426e
--- /dev/null
+++ b/user/usys.pl
@@ -0,0 +1,38 @@
+#!/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("exec");
+entry("open");
+entry("mknod");
+entry("unlink");
+entry("fstat");
+entry("link");
+entry("mkdir");
+entry("chdir");
+entry("dup");
+entry("getpid");
+entry("sbrk");
+entry("sleep");
+entry("uptime");