summaryrefslogtreecommitdiff
path: root/sys/src/cmd/vi
diff options
context:
space:
mode:
authormischief <mischief@offblast.org>2014-09-13 06:07:57 -0700
committermischief <mischief@offblast.org>2014-09-13 06:07:57 -0700
commit8348a233ae56a2f51dc2e3f93f681cc7aebdae14 (patch)
tree61d22338729832989deb266026beb786f36670fb /sys/src/cmd/vi
parentc8008e1ffd0bdcf8aa1152aa9a81157ef1688926 (diff)
vi: implement _nsec syscall
Diffstat (limited to 'sys/src/cmd/vi')
-rw-r--r--sys/src/cmd/vi/syscall.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/sys/src/cmd/vi/syscall.c b/sys/src/cmd/vi/syscall.c
index 7b977dd0d..25401d828 100644
--- a/sys/src/cmd/vi/syscall.c
+++ b/sys/src/cmd/vi/syscall.c
@@ -65,6 +65,7 @@ char *sysctab[]={
[AWAIT] "Await",
[PREAD] "Pread",
[PWRITE] "Pwrite",
+ [_NSEC] "_nsec",
};
void sys1(void) { Bprint(bioout, "No system call %s\n", sysctab[reg.r[REGRET]]); exits(0); }
@@ -638,6 +639,22 @@ syssegflush(void)
reg.r[REGRET] = 0;
}
+void
+sys_nsec(void)
+{
+ ulong ta;
+ vlong t;
+
+ ta = getmem_w(reg.r[REGSP]+4);
+ if(sysdbg)
+ itrace("_nsec(%lux)", ta);
+
+ t = nsec();
+
+ putmem_w(ta, t >> 32);
+ putmem_w(ta+4, t);
+}
+
void sysfversion(void) { Bprint(bioout, "No system call %s\n", sysctab[reg.r[REGRET]]); exits(0); }
void sysfsession(void) { Bprint(bioout, "No system call %s\n", sysctab[reg.r[REGRET]]); exits(0); }
void sysfauth(void) { Bprint(bioout, "No system call %s\n", sysctab[reg.r[REGRET]]); exits(0); }
@@ -710,6 +727,7 @@ void (*systab[])(void) ={
[AWAIT] sysawait,
[PREAD] syspread,
[PWRITE] syspwrite,
+ [_NSEC] sys_nsec,
};
void
@@ -719,7 +737,7 @@ Ssyscall(ulong inst)
USED(inst);
call = reg.r[REGRET];
- if(call < 0 || call > PWRITE || systab[call] == nil) {
+ if(call < 0 || call > _NSEC || systab[call] == nil) {
Bprint(bioout, "Bad system call\n");
dumpreg();
}