aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicholas Noll <nbnoll@eml.cc>2021-11-18 16:40:51 -0800
committerNicholas Noll <nbnoll@eml.cc>2021-11-18 16:40:51 -0800
commit5bcc08d92ae9345d6863f555a3dd9ec960e0860f (patch)
treec0fc5dba61ee770d5757ffb9702d61d277d122a1
parent4bf477d5ed372fd44697d2f0df245b61b4f3f7b3 (diff)
feat: filling out system layer's interface
-rw-r--r--include/base.h80
-rw-r--r--include/sys.h30
-rw-r--r--include/u.h7
-rw-r--r--rules.mk2
-rw-r--r--share/dynamic.mk4
-rw-r--r--src/base/mem/interface.c12
-rwxr-xr-xsys/gen.py10
-rw-r--r--sys/linux/amd64/arch/bits.h1
-rw-r--r--sys/linux/amd64/arch/types.h33
-rw-r--r--sys/linux/amd64/syscall.h704
-rw-r--r--sys/linux/arm/arch/bits.h1
-rw-r--r--sys/linux/arm/arch/types.h36
-rw-r--r--sys/linux/arm/syscall.h790
-rw-r--r--sys/linux/arm64/arch/bits.h1
-rw-r--r--sys/linux/arm64/arch/types.h28
-rw-r--r--sys/linux/arm64/syscall.h590
-rw-r--r--sys/linux/i386/arch/bits.h1
-rw-r--r--sys/linux/i386/arch/types.h34
-rw-r--r--sys/linux/i386/syscall.h830
-rw-r--r--sys/linux/port/arch/constants.h45
-rw-r--r--sys/linux/port/arch/types.h35
-rw-r--r--sys/linux/port/os/constants.h98
-rw-r--r--sys/linux/port/os/errno.h (renamed from sys/linux/port/arch/errno.h)0
-rw-r--r--sys/linux/port/os/types.h72
-rw-r--r--sys/linux/riscv64/arch/bits.h1
-rw-r--r--sys/linux/riscv64/arch/types.h27
-rw-r--r--sys/linux/riscv64/syscall.h590
-rw-r--r--sys/src/chmod.c8
-rw-r--r--sys/src/info.c7
-rw-r--r--sys/src/infoat.c8
-rw-r--r--sys/src/infofd.c10
-rw-r--r--sys/src/mkdir.c8
-rw-r--r--sys/src/mkdirat.c8
-rw-r--r--sys/src/mkfifo.c8
-rw-r--r--sys/src/mknode.c7
-rw-r--r--sys/src/mknodeat.c8
-rw-r--r--sys/src/write.c2
37 files changed, 2248 insertions, 1888 deletions
diff --git a/include/base.h b/include/base.h
index 7077731..df580c3 100644
--- a/include/base.h
+++ b/include/base.h
@@ -3,8 +3,10 @@
// ------------------------------------------------------------------------
// standard library
-//#include <arch/types.h>
-//
+#include <sys.h>
+#include <arch/types.h>
+
+// TODO: remove dependency system headers
#include <assert.h>
#include <stdlib.h>
#include <string.h>
@@ -125,9 +127,6 @@ char *str·copyn(char *dst, char *src, int n);
// -----------------------------------------------------------------------------
// i/o
-typedef FILE io·Stream;
-typedef struct stat io·Stat;
-
enum SeekPos
{
seek·cur = SEEK_CUR,
@@ -135,37 +134,6 @@ enum SeekPos
seek·end = SEEK_END
};
-/* XXX: change casing */
-enum
-{
- ReadOK = R_OK,
- WriteOK = W_OK,
- ExecOK = X_OK,
-};
-
-/* file handling */
-io·Stream *io·open(byte *name, byte *mode);
-int io·fd(io·Stream *s);
-int io·stat(io·Stream *s, io·Stat *buf);
-int io·close(io·Stream *s);
-byte io·getbyte(io·Stream *s);
-int io·ungetbyte(io·Stream *s, byte c);
-int io·read(io·Stream *s, int sz, int n, void *buf);
-int io·readln(io·Stream *s, int n, byte *buf);
-int io·putbyte(io·Stream *s, byte c);
-int io·putstring(io·Stream *s, string str);
-int io·write(io·Stream *s, int sz, int n, void *buf);
-int io·flush(io·Stream *s);
-int io·seek(io·Stream *s, long off, enum SeekPos whence);
-long io·tell(io·Stream *s);
-
-/* basic os helpers */
-int os·exists(byte *path, int flag);
-byte *os·dirname(byte *path);
-byte *os·basename(byte *path);
-int os·sep(void);
-
-/* io interfaces */
typedef struct io·Reader
{
int (*read)(void*, int sz, int n, void *buf);
@@ -227,6 +195,42 @@ typedef struct io·ReadWriter
} io·ReadWriter;
extern io·ReadWriter sys·ReadWriter;
+/* XXX: change casing */
+enum
+{
+ ReadOK = R_OK,
+ WriteOK = W_OK,
+ ExecOK = X_OK,
+};
+
+/* XXX(deprecated): file handling */
+
+typedef FILE io·Stream;
+typedef struct stat io·Stat;
+
+io·Stream *io·open(byte *name, byte *mode);
+int io·fd(io·Stream *s);
+int io·stat(io·Stream *s, io·Stat *buf);
+int io·close(io·Stream *s);
+byte io·getbyte(io·Stream *s);
+int io·ungetbyte(io·Stream *s, byte c);
+int io·read(io·Stream *s, int sz, int n, void *buf);
+int io·readln(io·Stream *s, int n, byte *buf);
+int io·putbyte(io·Stream *s, byte c);
+int io·putstring(io·Stream *s, string str);
+int io·write(io·Stream *s, int sz, int n, void *buf);
+int io·flush(io·Stream *s);
+int io·seek(io·Stream *s, long off, enum SeekPos whence);
+long io·tell(io·Stream *s);
+
+/* basic os helpers */
+
+int os·exists(byte *path, int flag);
+byte *os·dirname(byte *path);
+byte *os·basename(byte *path);
+int os·sep(void);
+
+/* io interfaces */
/* buffered i/o */
typedef struct io·Buffer io·Buffer;
@@ -364,9 +368,9 @@ long gz·tell(gz·Stream *s);
void exits(char *s);
void errorf(byte* fmt, ...);
-void verrorf(byte* fmt, va_list args);
+void verrorf(byte* fmt, va_list args);
void panicf(byte *fmt, ...);
-void vpanicf(byte *fmt, va_list args);
+void vpanicf(byte *fmt, va_list args);
// -----------------------------------------------------------------------------
// sorting
diff --git a/include/sys.h b/include/sys.h
index e7573bf..a838fe8 100644
--- a/include/sys.h
+++ b/include/sys.h
@@ -1,7 +1,11 @@
#pragma once
-#include <arch/constants.h>
-#include <arch/errno.h>
+/* types declarations */
+#include <arch/types.h>
+
+#include <os/types.h>
+#include <os/constants.h>
+#include <os/errno.h>
// -----------------------------------------------------------------------
// global constants
@@ -16,9 +20,15 @@
#define sys·SeekCur 1u
#define sys·SeekEnd 2u
+/* special file descriptors */
+#define sys·Stdin 0
+#define sys·Stdout 1
+#define sys·Stderr 2
+
// -----------------------------------------------------------------------
// functions
+/* errors */
char *sys·errormsg(int num);
/* file operations */
@@ -27,20 +37,32 @@ int sys·close(int fd);
int sys·write(int fd, uintptr len, void *buf, intptr *nw);
int sys·read(int fd, uintptr len, void *buf, intptr *nr);
int sys·seek(int fd, intptr offset, int from, intptr *pos);
+
+int sys·info(char *path, sys·Info *ret);
+int sys·infofd(int fd, sys·Info *ret);
+int sys·infoat(int dirfd, char *path, int flag, uint mask, sys·Info *ret);
+
int sys·dup(int from, int to);
/* directory operations */
-int sys·chdirfd(int fd);
int sys·chdir(char *path);
+int sys·chdirfd(int fd);
+int sys·mkdir(char *path, uint mode);
+int sys·mkdirat(int fd, char *path, uint mode);
+
int sys·direntry(int fd, int len, void *buffer, uintptr *size);
+/* file node */
+int sys·mknode(char *path, uint mode, uint64 dev);
+int sys·mknodeat(int dirfd, char *path, uint mode, uint64 device);
+
/* process operations */
int sys·fork(void);
int sys·exec(char *program, char *argv[], char *env[]);
/* memory operations */
int sys·brk(void *addr);
-int sys·sbrk(intptr delta, void **ret);
+//int sys·sbrk(intptr delta, void **ret);
int sys·mmap(void *addr, uintptr len, int prot, int flags, int fd, intptr off, void **ret);
int sys·mremap(void *old, uintptr from, uintptr to, int flags, void **new);
diff --git a/include/u.h b/include/u.h
index 87d5080..333d6b2 100644
--- a/include/u.h
+++ b/include/u.h
@@ -41,12 +41,19 @@ typedef uint32 rune;
/* pointer address */
typedef ADDR intptr;
typedef unsigned ADDR uintptr;
+typedef ADDR address_t;
+typedef REG register_t;
+typedef unsigned REG uregister_t;
+
+/* variable length list */
+typedef __builtin_va_list va_list;
#undef INT8
#undef INT16
#undef INT32
#undef INT64
#undef ADDR
+#undef REG
// ------------------------------------------------------------------
// global constants
diff --git a/rules.mk b/rules.mk
index ad69611..e03a1c4 100644
--- a/rules.mk
+++ b/rules.mk
@@ -54,6 +54,8 @@ $(OBJ_DIR)/%: $(SRC_DIR)/%.c
targets: $(SYS) $(LIBS) $(BINS) $(TEST)
clean:
+ @echo removing system layer
+ @rm -f $(SYS_OBJS) $(OBJ_DIR)/sys/sys.a
@echo removing object files
@rm -f $(OBJS)
@echo removing dependency files
diff --git a/share/dynamic.mk b/share/dynamic.mk
index 7839fe4..66065a5 100644
--- a/share/dynamic.mk
+++ b/share/dynamic.mk
@@ -2,10 +2,10 @@ $(BINS_$(d)): STATIC =
$(BINS_$(d)): CINIT =
$(BINS_$(d)): CFINI =
$(BINS_$(d)): ELIBS =
-$(BINS_$(d)): INCS = -I $(SYS_DIR)/$(OS)/$(ARCH) -I $(INC_DIR)
+$(BINS_$(d)): INCS = -I $(SYS_DIR)/$(OS)/$(ARCH) -I $(SYS_DIR)/$(OS)/port -I $(INC_DIR)
$(TEST_$(d)): STATIC =
$(TEST_$(d)): CINIT =
$(TEST_$(d)): CFINI =
$(TEST_$(d)): ELIBS =
-$(TEST_$(d)): INCS = -I $(SYS_DIR)/$(OS)/$(ARCH) -I $(INC_DIR)
+$(TEST_$(d)): INCS = -I $(SYS_DIR)/$(OS)/$(ARCH) -I $(SYS_DIR)/$(OS)/port -I $(INC_DIR)
diff --git a/src/base/mem/interface.c b/src/base/mem/interface.c
index 4d7d1ce..e128bb9 100644
--- a/src/base/mem/interface.c
+++ b/src/base/mem/interface.c
@@ -1,25 +1,21 @@
#include "internal.h"
-static
-void
+static void
·free(void *_, void *ptr) {
return free(ptr);
}
-static
-void *
+static void *
·alloc(void *_, uint n, ulong size) {
return malloc(n*size);
}
-static
-void *
+static void *
·calloc(void *_, uint n, ulong size) {
return calloc(n, size);
}
-static
-void *
+static void *
·realloc(void *_, void *ptr, uint n, ulong size) {
return realloc(ptr, n*size);
}
diff --git a/sys/gen.py b/sys/gen.py
index e1e8c0f..02ff952 100755
--- a/sys/gen.py
+++ b/sys/gen.py
@@ -103,9 +103,9 @@ def fmterrno(writer, musl):
continue
try:
if word[2].isdigit():
- putdefine(writer, errwrap(word[1]), word[2], left=30, right=30)
+ putdefine(writer, errwrap(word[1]), word[2], left=30, right=0)
else:
- putdefine(writer, errwrap(word[1]), errwrap(word[2]), left=30, right=30)
+ putdefine(writer, errwrap(word[1]), errwrap(word[2]), left=30, right=0)
except:
raise KeyError(f"{word[1]} not recognized")
@@ -232,7 +232,7 @@ def fmtsysnum(reader, writer):
sysn = word[2]
head = syscall(call)
if sysn.isdigit():
- print(f"#define {head:<30} {sysn:>30}", file=writer)
+ print(f"#define {head:<30} {sysn}", file=writer)
def fmtsysasm(reader, writer):
putline(writer)
@@ -301,6 +301,7 @@ int16 = "short"
int32 = "int"
int64 = {'x86_64':"long",'i386':"long long",'arm':"long long",'aarch64':"long",'riscv64':"long"}
addr = {'x86_64':"long",'i386':"int",'arm':"int",'aarch64':"long",'riscv64':"long"}
+reg = {'x86_64':"long",'i386':"int",'arm':"int",'aarch64':"long",'riscv64':"long"}
long64="0x7fffffffffffffffL"
long32="0x7fffffffL"
@@ -325,6 +326,7 @@ def fmtbits(writer, musl, arch):
putdefine(writer, "INT32", int32)
putdefine(writer, "INT64", int64[arch])
putdefine(writer, "ADDR", addr[arch])
+ putdefine(writer, "REG", reg[arch])
putline(writer)
putcomment(writer, "abi")
@@ -360,7 +362,7 @@ def putline(writer):
def putcomment(writer, string):
print(f"/* {string} */", file=writer)
-def putdefine(writer, name, value, left=20, right=00):
+def putdefine(writer, name, value, left=20, right=0):
print(f"#define {name:<{left}} {value:<{right}}", file=writer)
muslroot = "../vendor/musl"
diff --git a/sys/linux/amd64/arch/bits.h b/sys/linux/amd64/arch/bits.h
index f869385..9ff3228 100644
--- a/sys/linux/amd64/arch/bits.h
+++ b/sys/linux/amd64/arch/bits.h
@@ -6,6 +6,7 @@
#define INT32 int
#define INT64 long
#define ADDR long
+#define REG long
/* abi */
#define PAGESIZE 4096
diff --git a/sys/linux/amd64/arch/types.h b/sys/linux/amd64/arch/types.h
new file mode 100644
index 0000000..d22169c
--- /dev/null
+++ b/sys/linux/amd64/arch/types.h
@@ -0,0 +1,33 @@
+#pragma once
+
+#if 0
+/*
+ * copied from musl:
+ * copied from kernel definition, but with padding replaced
+ * by the corresponding correctly-sized userspace types.
+ */
+
+struct sys·Info
+{
+ uint64 devid;
+ uint64 inode;
+ uregister_t nlinks;
+
+ uint mode;
+ uint uid;
+ uint gid;
+
+ uint _pad;
+
+ uint64 spdevid;
+ intptr len;
+ long blklen;
+ int64 nblk;
+
+ sys·TimeNano access;
+ sys·TimeNano modify;
+ sys·TimeNano change;
+
+ long _unused[3];
+};
+#endif
diff --git a/sys/linux/amd64/syscall.h b/sys/linux/amd64/syscall.h
index cba66be..4664504 100644
--- a/sys/linux/amd64/syscall.h
+++ b/sys/linux/amd64/syscall.h
@@ -1,354 +1,354 @@
-#define ·Read 0
-#define ·Write 1
-#define ·Open 2
-#define ·Close 3
-#define ·Stat 4
-#define ·FStat 5
-#define ·LStat 6
-#define ·Poll 7
-#define ·LSeek 8
-#define ·MMap 9
-#define ·MProtect 10
-#define ·MUnmap 11
-#define ·Brk 12
-#define ·RtSigAction 13
-#define ·RtSigProcMask 14
-#define ·RtSigReturn 15
-#define ·IoCtl 16
-#define ·PRead64 17
-#define ·PWrite64 18
-#define ·ReadV 19
-#define ·WriteV 20
-#define ·Access 21
-#define ·Pipe 22
-#define ·Select 23
-#define ·SchedYield 24
-#define ·MRemap 25
-#define ·MSync 26
-#define ·MLoaded 27
-#define ·MAdvise 28
-#define ·ShmGet 29
-#define ·ShmAt 30
-#define ·ShmCtl 31
-#define ·Dup 32
-#define ·Dup2 33
-#define ·Pause 34
-#define ·NanoSleep 35
-#define ·GetITimer 36
-#define ·Alarm 37
-#define ·SetITimer 38
-#define ·GetPid 39
-#define ·SendFile 40
-#define ·Socket 41
-#define ·Connect 42
-#define ·Accept 43
-#define ·SendTo 44
-#define ·RecvFrom 45
-#define ·SendMsg 46
-#define ·RecvMsg 47
-#define ·Shutdown 48
-#define ·Bind 49
-#define ·Listen 50
-#define ·GetSockName 51
-#define ·GetPeerName 52
-#define ·SocketPair 53
-#define ·SetSockOpt 54
-#define ·GetSockOpt 55
-#define ·Clone 56
-#define ·Fork 57
-#define ·VFork 58
-#define ·ExecVe 59
-#define ·Exit 60
-#define ·Wait4 61
-#define ·Kill 62
-#define ·UName 63
-#define ·SemGet 64
-#define ·SemOp 65
-#define ·SemCtl 66
-#define ·ShmDt 67
-#define ·MsgGet 68
-#define ·MsgSend 69
-#define ·MsgRecv 70
-#define ·MsgCtl 71
-#define ·FCntl 72
-#define ·FLock 73
-#define ·FSync 74
-#define ·FdAtAsync 75
-#define ·Truncate 76
-#define ·FTruncate 77
-#define ·GetDents 78
-#define ·GetCwd 79
-#define ·Chdir 80
-#define ·FChdir 81
-#define ·Rename 82
-#define ·Mkdir 83
-#define ·Rmdir 84
-#define ·Create 85
-#define ·Link 86
-#define ·Unlink 87
-#define ·SymLink 88
-#define ·ReadLink 89
-#define ·Chmod 90
-#define ·FChmod 91
-#define ·Chown 92
-#define ·FChown 93
-#define ·LChown 94
-#define ·UMask 95
-#define ·GetTimeOfDay 96
-#define ·GetRLimit 97
-#define ·GetRUsage 98
-#define ·SysInfo 99
-#define ·Times 100
-#define ·PTrace 101
-#define ·GetUid 102
-#define ·SysLog 103
-#define ·GetGid 104
-#define ·SetUid 105
-#define ·SetGid 106
-#define ·GetEUid 107
-#define ·GetEGid 108
-#define ·SetPGid 109
-#define ·GetPPid 110
-#define ·GetPGrp 111
-#define ·SetSId 112
-#define ·SetReUid 113
-#define ·SetReGid 114
-#define ·GetGroups 115
-#define ·SetGroups 116
-#define ·SetResUid 117
-#define ·GetResUid 118
-#define ·SetResGid 119
-#define ·GetResGid 120
-#define ·GetPGid 121
-#define ·SetFsUid 122
-#define ·SetFsGid 123
-#define ·GetsId 124
-#define ·CapGet 125
-#define ·CapSet 126
-#define ·RtSigPending 127
-#define ·RtSigTimedWait 128
-#define ·RtSigQueueInfo 129
-#define ·RtSigSuspend 130
-#define ·SiGaltStack 131
-#define ·UTime 132
-#define ·MkNod 133
-#define ·UseLib 134
-#define ·Personality 135
-#define ·UStat 136
-#define ·StatFs 137
-#define ·FStatFs 138
-#define ·SysFs 139
-#define ·GetPriority 140
-#define ·SetPriority 141
-#define ·SchedSetParam 142
-#define ·SchedGetParam 143
-#define ·SchedSetScheduler 144
-#define ·SchedGetScheduler 145
-#define ·SchedGetPriorityMax 146
-#define ·SchedGetPriorityMin 147
-#define ·SchedRrGetInterval 148
-#define ·MLock 149
-#define ·MUnlock 150
-#define ·MLockAll 151
-#define ·MUnlockAll 152
-#define ·VHangUp 153
-#define ·ModifyLdT 154
-#define ·PivotRoot 155
-#define ·SysCtl 156
-#define ·PrCtl 157
-#define ·ArchPrCtl 158
-#define ·AdjTimex 159
-#define ·SetRLimit 160
-#define ·Chroot 161
-#define ·Sync 162
-#define ·Acct 163
-#define ·SetTimeOfDay 164
-#define ·Mount 165
-#define ·UMount2 166
-#define ·SwapOn 167
-#define ·SwapOff 168
-#define ·Reboot 169
-#define ·SetHostname 170
-#define ·SetDomainName 171
-#define ·IoPl 172
-#define ·IoPerm 173
-#define ·CreateModule 174
-#define ·InItModule 175
-#define ·DeleteModule 176
-#define ·GetKernelSyms 177
-#define ·QueryModule 178
-#define ·QuotaCtl 179
-#define ·NfsServCtl 180
-#define ·GetPMsg 181
-#define ·PutPMsg 182
-#define ·AFsSysCall 183
-#define ·TuxCall 184
-#define ·Security 185
-#define ·GetTId 186
-#define ·ReadAhead 187
-#define ·SetXAttr 188
-#define ·LSetXAttr 189
-#define ·FSetXAttr 190
-#define ·GetXAttr 191
-#define ·LGetXAttr 192
-#define ·FGetXAttr 193
-#define ·ListXAttr 194
-#define ·LListXAttr 195
-#define ·FListXAttr 196
-#define ·RemoveXAttr 197
-#define ·LRemoveXAttr 198
-#define ·FRemoveXAttr 199
-#define ·TKill 200
-#define ·Time 201
-#define ·Futex 202
-#define ·SchedSetAffinity 203
-#define ·SchedGetAffinity 204
-#define ·SetThreadArea 205
-#define ·IoSetUp 206
-#define ·IoDestroy 207
-#define ·IoGetEvents 208
-#define ·IoSubmit 209
-#define ·IoCancel 210
-#define ·GetThreadArea 211
-#define ·LookupDCookie 212
-#define ·EPollCreate 213
-#define ·EPollCtlOld 214
-#define ·EPollWaitOld 215
-#define ·RemapFilePages 216
-#define ·GetDents64 217
-#define ·SetTIdAddress 218
-#define ·RestartSysCall 219
-#define ·SemTimeDop 220
-#define ·FAdvise64 221
-#define ·TimerCreate 222
-#define ·TimerSetTime 223
-#define ·TimerGetTime 224
-#define ·TimerGetOverrun 225
-#define ·TimerDelete 226
-#define ·ClockSetTime 227
-#define ·ClockGetTime 228
-#define ·ClockGetRes 229
-#define ·ClockNanoSleep 230
-#define ·ExitGroup 231
-#define ·EPollWait 232
-#define ·EPollCtl 233
-#define ·TgKill 234
-#define ·UTimes 235
-#define ·VServer 236
-#define ·MBind 237
-#define ·SetMemPolicy 238
-#define ·GetMemPolicy 239
-#define ·MQOpen 240
-#define ·MQUnlink 241
-#define ·MQTimedSend 242
-#define ·MQTimedReceive 243
-#define ·MQNotify 244
-#define ·MQGetSetAttr 245
-#define ·KExecLoad 246
-#define ·WaitId 247
-#define ·AddKey 248
-#define ·RequestKey 249
-#define ·KeyCtl 250
-#define ·IoPrIoSet 251
-#define ·IoPrIoGet 252
-#define ·INotifyInIt 253
-#define ·INotifyAddWatch 254
-#define ·INotifyRmWatch 255
-#define ·MigratePages 256
-#define ·OpenAt 257
-#define ·MkdirAt 258
-#define ·MkNodAt 259
-#define ·FChownAt 260
-#define ·FuTimesAt 261
-#define ·NewFStatAt 262
-#define ·UnlinkAt 263
-#define ·RenameAt 264
-#define ·LinkAt 265
-#define ·SymLinkAt 266
-#define ·ReadLinkAt 267
-#define ·FChmodAt 268
-#define ·FAccessAt 269
-#define ·PSelect6 270
-#define ·PPoll 271
-#define ·UnShare 272
-#define ·SetRobustList 273
-#define ·GetRobustList 274
-#define ·Splice 275
-#define ·Tee 276
-#define ·SyncFileRange 277
-#define ·VmSplice 278
-#define ·MovePages 279
-#define ·UTimeNsAt 280
-#define ·EPollPWait 281
-#define ·SignalFd 282
-#define ·TimerFdCreate 283
-#define ·EventFd 284
-#define ·FAllocate 285
-#define ·TimerFdSetTime 286
-#define ·TimerFdGetTime 287
-#define ·Accept4 288
-#define ·SignalFd4 289
-#define ·EventFd2 290
-#define ·EPollCreate1 291
-#define ·Dup3 292
-#define ·Pipe2 293
-#define ·INotifyInIt1 294
-#define ·PreAdv 295
-#define ·PWriteV 296
-#define ·RtTgSigQueueInfo 297
-#define ·PerFEventOpen 298
-#define ·RecvMMsg 299
-#define ·FaNotifyInIt 300
-#define ·FaNotifyMark 301
-#define ·PrLimit64 302
-#define ·NameToHandleAt 303
-#define ·OpenByHandleAt 304
-#define ·ClockAdjTime 305
-#define ·SyncFs 306
-#define ·SendMMsg 307
-#define ·SetNs 308
-#define ·GetCpu 309
-#define ·ProcessVmReadV 310
-#define ·ProcessVmWriteV 311
-#define ·KCmp 312
-#define ·FinItModule 313
-#define ·SchedSetAttr 314
-#define ·SchedGetAttr 315
-#define ·RenameAt2 316
-#define ·SeccoMp 317
-#define ·GetRandom 318
-#define ·MemFdCreate 319
-#define ·KExecFileLoad 320
-#define ·BpF 321
-#define ·ExecVeAt 322
-#define ·UserFaultFd 323
-#define ·MemBarrier 324
-#define ·MLock2 325
-#define ·CopyFileRange 326
-#define ·PreAdv2 327
-#define ·PWriteV2 328
-#define ·PKeyMProtect 329
-#define ·PKeyAllOc 330
-#define ·PKeyFree 331
-#define ·StatX 332
-#define ·IoPGetEvents 333
-#define ·RSeq 334
-#define ·PidFdSendSignal 424
-#define ·IoUringSetUp 425
-#define ·IoUringEnter 426
-#define ·IoUringRegister 427
-#define ·OpenTree 428
-#define ·MoveMount 429
-#define ·FsOpen 430
-#define ·FsConfig 431
-#define ·FsMount 432
-#define ·FsPick 433
-#define ·PidFdOpen 434
-#define ·Clone3 435
-#define ·CloseRange 436
-#define ·OpenAt2 437
-#define ·PidFdGetFd 438
-#define ·FAccessAt2 439
+#define ·Read 0
+#define ·Write 1
+#define ·Open 2
+#define ·Close 3
+#define ·Stat 4
+#define ·FStat 5
+#define ·LStat 6
+#define ·Poll 7
+#define ·LSeek 8
+#define ·MMap 9
+#define ·MProtect 10
+#define ·MUnmap 11
+#define ·Brk 12
+#define ·RtSigAction 13
+#define ·RtSigProcMask 14
+#define ·RtSigReturn 15
+#define ·IoCtl 16
+#define ·PRead64 17
+#define ·PWrite64 18
+#define ·ReadV 19
+#define ·WriteV 20
+#define ·Access 21
+#define ·Pipe 22
+#define ·Select 23
+#define ·SchedYield 24
+#define ·MRemap 25
+#define ·MSync 26
+#define ·MLoaded 27
+#define ·MAdvise 28
+#define ·ShmGet 29
+#define ·ShmAt 30
+#define ·ShmCtl 31
+#define ·Dup 32
+#define ·Dup2 33
+#define ·Pause 34
+#define ·NanoSleep 35
+#define ·GetITimer 36
+#define ·Alarm 37
+#define ·SetITimer 38
+#define ·GetPid 39
+#define ·SendFile 40
+#define ·Socket 41
+#define ·Connect 42
+#define ·Accept 43
+#define ·SendTo 44
+#define ·RecvFrom 45
+#define ·SendMsg 46
+#define ·RecvMsg 47
+#define ·Shutdown 48
+#define ·Bind 49
+#define ·Listen 50
+#define ·GetSockName 51
+#define ·GetPeerName 52
+#define ·SocketPair 53
+#define ·SetSockOpt 54
+#define ·GetSockOpt 55
+#define ·Clone 56
+#define ·Fork 57
+#define ·VFork 58
+#define ·ExecVe 59
+#define ·Exit 60
+#define ·Wait4 61
+#define ·Kill 62
+#define ·UName 63
+#define ·SemGet 64
+#define ·SemOp 65
+#define ·SemCtl 66
+#define ·ShmDt 67
+#define ·MsgGet 68
+#define ·MsgSend 69
+#define ·MsgRecv 70
+#define ·MsgCtl 71
+#define ·FCntl 72
+#define ·FLock 73
+#define ·FSync 74
+#define ·FdAtAsync 75
+#define ·Truncate 76
+#define ·FTruncate 77
+#define ·GetDents 78
+#define ·GetCwd 79
+#define ·Chdir 80
+#define ·FChdir 81
+#define ·Rename 82
+#define ·Mkdir 83
+#define ·Rmdir 84
+#define ·Create 85
+#define ·Link 86
+#define ·Unlink 87
+#define ·SymLink 88
+#define ·ReadLink 89
+#define ·Chmod 90
+#define ·FChmod 91
+#define ·Chown 92
+#define ·FChown 93
+#define ·LChown 94
+#define ·UMask 95
+#define ·GetTimeOfDay 96
+#define ·GetRLimit 97
+#define ·GetRUsage 98
+#define ·SysInfo 99
+#define ·Times 100
+#define ·PTrace 101
+#define ·GetUid 102
+#define ·SysLog 103
+#define ·GetGid 104
+#define ·SetUid 105
+#define ·SetGid 106
+#define ·GetEUid 107
+#define ·GetEGid 108
+#define ·SetPGid 109
+#define ·GetPPid 110
+#define ·GetPGrp 111
+#define ·SetSId 112
+#define ·SetReUid 113
+#define ·SetReGid 114
+#define ·GetGroups 115
+#define ·SetGroups 116
+#define ·SetResUid 117
+#define ·GetResUid 118
+#define ·SetResGid 119
+#define ·GetResGid 120
+#define ·GetPGid 121
+#define ·SetFsUid 122
+#define ·SetFsGid 123
+#define ·GetsId 124
+#define ·CapGet 125
+#define ·CapSet 126
+#define ·RtSigPending 127
+#define ·RtSigTimedWait 128
+#define ·RtSigQueueInfo 129
+#define ·RtSigSuspend 130
+#define ·SiGaltStack 131
+#define ·UTime 132
+#define ·MkNod 133
+#define ·UseLib 134
+#define ·Personality 135
+#define ·UStat 136
+#define ·StatFs 137
+#define ·FStatFs 138
+#define ·SysFs 139
+#define ·GetPriority 140
+#define ·SetPriority 141
+#define ·SchedSetParam 142
+#define ·SchedGetParam 143
+#define ·SchedSetScheduler 144
+#define ·SchedGetScheduler 145
+#define ·SchedGetPriorityMax 146
+#define ·SchedGetPriorityMin 147
+#define ·SchedRrGetInterval 148
+#define ·MLock 149
+#define ·MUnlock 150
+#define ·MLockAll 151
+#define ·MUnlockAll 152
+#define ·VHangUp 153
+#define ·ModifyLdT 154
+#define ·PivotRoot 155
+#define ·SysCtl 156
+#define ·PrCtl 157
+#define ·ArchPrCtl 158
+#define ·AdjTimex 159
+#define ·SetRLimit 160
+#define ·Chroot 161
+#define ·Sync 162
+#define ·Acct 163
+#define ·SetTimeOfDay 164
+#define ·Mount 165
+#define ·UMount2 166
+#define ·SwapOn 167
+#define ·SwapOff 168
+#define ·Reboot 169
+#define ·SetHostname 170
+#define ·SetDomainName 171
+#define ·IoPl 172
+#define ·IoPerm 173
+#define ·CreateModule 174
+#define ·InItModule 175
+#define ·DeleteModule 176
+#define ·GetKernelSyms 177
+#define ·QueryModule 178
+#define ·QuotaCtl 179
+#define ·NfsServCtl 180
+#define ·GetPMsg 181
+#define ·PutPMsg 182
+#define ·AFsSysCall 183
+#define ·TuxCall 184
+#define ·Security 185
+#define ·GetTId 186
+#define ·ReadAhead 187
+#define ·SetXAttr 188
+#define ·LSetXAttr 189
+#define ·FSetXAttr 190
+#define ·GetXAttr 191
+#define ·LGetXAttr 192
+#define ·FGetXAttr 193
+#define ·ListXAttr 194
+#define ·LListXAttr 195
+#define ·FListXAttr 196
+#define ·RemoveXAttr 197
+#define ·LRemoveXAttr 198
+#define ·FRemoveXAttr 199
+#define ·TKill 200
+#define ·Time 201
+#define ·Futex 202
+#define ·SchedSetAffinity 203
+#define ·SchedGetAffinity 204
+#define ·SetThreadArea 205
+#define ·IoSetUp 206
+#define ·IoDestroy 207
+#define ·IoGetEvents 208
+#define ·IoSubmit 209
+#define ·IoCancel 210
+#define ·GetThreadArea 211
+#define ·LookupDCookie 212
+#define ·EPollCreate 213
+#define ·EPollCtlOld 214
+#define ·EPollWaitOld 215
+#define ·RemapFilePages 216
+#define ·GetDents64 217
+#define ·SetTIdAddress 218
+#define ·RestartSysCall 219
+#define ·SemTimeDop 220
+#define ·FAdvise64 221
+#define ·TimerCreate 222
+#define ·TimerSetTime 223
+#define ·TimerGetTime 224
+#define ·TimerGetOverrun 225
+#define ·TimerDelete 226
+#define ·ClockSetTime 227
+#define ·ClockGetTime 228
+#define ·ClockGetRes 229
+#define ·ClockNanoSleep 230
+#define ·ExitGroup 231
+#define ·EPollWait 232
+#define ·EPollCtl 233
+#define ·TgKill 234
+#define ·UTimes 235
+#define ·VServer 236
+#define ·MBind 237
+#define ·SetMemPolicy 238
+#define ·GetMemPolicy 239
+#define ·MQOpen 240
+#define ·MQUnlink 241
+#define ·MQTimedSend 242
+#define ·MQTimedReceive 243
+#define ·MQNotify 244
+#define ·MQGetSetAttr 245
+#define ·KExecLoad 246
+#define ·WaitId 247
+#define ·AddKey 248
+#define ·RequestKey 249
+#define ·KeyCtl 250
+#define ·IoPrIoSet 251
+#define ·IoPrIoGet 252
+#define ·INotifyInIt 253
+#define ·INotifyAddWatch 254
+#define ·INotifyRmWatch 255
+#define ·MigratePages 256
+#define ·OpenAt 257
+#define ·MkdirAt 258
+#define ·MkNodAt 259
+#define ·FChownAt 260
+#define ·FuTimesAt 261
+#define ·NewFStatAt 262
+#define ·UnlinkAt 263
+#define ·RenameAt 264
+#define ·LinkAt 265
+#define ·SymLinkAt 266
+#define ·ReadLinkAt 267
+#define ·FChmodAt 268
+#define ·FAccessAt 269
+#define ·PSelect6 270
+#define ·PPoll 271
+#define ·UnShare 272
+#define ·SetRobustList 273
+#define ·GetRobustList 274
+#define ·Splice 275
+#define ·Tee 276
+#define ·SyncFileRange 277
+#define ·VmSplice 278
+#define ·MovePages 279
+#define ·UTimeNsAt 280
+#define ·EPollPWait 281
+#define ·SignalFd 282
+#define ·TimerFdCreate 283
+#define ·EventFd 284
+#define ·FAllocate 285
+#define ·TimerFdSetTime 286
+#define ·TimerFdGetTime 287
+#define ·Accept4 288
+#define ·SignalFd4 289
+#define ·EventFd2 290
+#define ·EPollCreate1 291
+#define ·Dup3 292
+#define ·Pipe2 293
+#define ·INotifyInIt1 294
+#define ·PreAdv 295
+#define ·PWriteV 296
+#define ·RtTgSigQueueInfo 297
+#define ·PerFEventOpen 298
+#define ·RecvMMsg 299
+#define ·FaNotifyInIt 300
+#define ·FaNotifyMark 301
+#define ·PrLimit64 302
+#define ·NameToHandleAt 303
+#define ·OpenByHandleAt 304
+#define ·ClockAdjTime 305
+#define ·SyncFs 306
+#define ·SendMMsg 307
+#define ·SetNs 308
+#define ·GetCpu 309
+#define ·ProcessVmReadV 310
+#define ·ProcessVmWriteV 311
+#define ·KCmp 312
+#define ·FinItModule 313
+#define ·SchedSetAttr 314
+#define ·SchedGetAttr 315
+#define ·RenameAt2 316
+#define ·SeccoMp 317
+#define ·GetRandom 318
+#define ·MemFdCreate 319
+#define ·KExecFileLoad 320
+#define ·BpF 321
+#define ·ExecVeAt 322
+#define ·UserFaultFd 323
+#define ·MemBarrier 324
+#define ·MLock2 325
+#define ·CopyFileRange 326
+#define ·PreAdv2 327
+#define ·PWriteV2 328
+#define ·PKeyMProtect 329
+#define ·PKeyAllOc 330
+#define ·PKeyFree 331
+#define ·StatX 332
+#define ·IoPGetEvents 333
+#define ·RSeq 334
+#define ·PidFdSendSignal 424
+#define ·IoUringSetUp 425
+#define ·IoUringEnter 426
+#define ·IoUringRegister 427
+#define ·OpenTree 428
+#define ·MoveMount 429
+#define ·FsOpen 430
+#define ·FsConfig 431
+#define ·FsMount 432
+#define ·FsPick 433
+#define ·PidFdOpen 434
+#define ·Clone3 435
+#define ·CloseRange 436
+#define ·OpenAt2 437
+#define ·PidFdGetFd 438
+#define ·FAccessAt2 439
/* assembly routines */
#define asm __asm__ __volatile__
@@ -419,3 +419,5 @@ long _syscall6(long n, long a1, long a2, long a3, long a4, long a5, long a6)
"d"(a3), "r"(r10), "r"(r8), "r"(r9) : "rcx", "r11", "memory");
return ret;
}
+
+
diff --git a/sys/linux/arm/arch/bits.h b/sys/linux/arm/arch/bits.h
index 5f89c49..b842e25 100644
--- a/sys/linux/arm/arch/bits.h
+++ b/sys/linux/arm/arch/bits.h
@@ -6,6 +6,7 @@
#define INT32 int
#define INT64 long long
#define ADDR int
+#define REG int
/* abi */
#define INTPTR_MIN INT32_MIN
diff --git a/sys/linux/arm/arch/types.h b/sys/linux/arm/arch/types.h
new file mode 100644
index 0000000..536ca5f
--- /dev/null
+++ b/sys/linux/arm/arch/types.h
@@ -0,0 +1,36 @@
+#pragma once
+
+#if 0
+/*
+ * copied from musl:
+ * copied from kernel definition, but with padding replaced
+ * by the corresponding correctly-sized userspace types.
+ */
+
+struct sys·Info
+{
+ uint64 devid;
+ int _devpad;
+ long _inotrunc;
+
+ uint mode;
+ uregister_t nlinks;
+ uint uid;
+ uint gid;
+ uint64 spdevid;
+ int _spdevpad;
+
+ intptr len;
+ long blklen;
+ int64 nblk;
+ struct {
+ long sec;
+ long nano;
+ } _access32, _modify32, _change32;
+ uint64 inode;
+
+ sys·TimeNano access;
+ sys·TimeNano modify;
+ sys·TimeNano change;
+};
+#endif
diff --git a/sys/linux/arm/syscall.h b/sys/linux/arm/syscall.h
index e7a8f89..0bc3f73 100644
--- a/sys/linux/arm/syscall.h
+++ b/sys/linux/arm/syscall.h
@@ -1,398 +1,398 @@
-#define ·RestartSysCall 0
-#define ·Exit 1
-#define ·Fork 2
-#define ·Read 3
-#define ·Write 4
-#define ·Open 5
-#define ·Close 6
-#define ·Create 8
-#define ·Link 9
-#define ·Unlink 10
-#define ·ExecVe 11
-#define ·Chdir 12
-#define ·MkNod 14
-#define ·Chmod 15
-#define ·LChown 16
-#define ·LSeek 19
-#define ·GetPid 20
-#define ·Mount 21
-#define ·SetUid 23
-#define ·GetUid 24
-#define ·PTrace 26
-#define ·Pause 29
-#define ·Access 33
-#define ·Nice 34
-#define ·Sync 36
-#define ·Kill 37
-#define ·Rename 38
-#define ·Mkdir 39
-#define ·Rmdir 40
-#define ·Dup 41
-#define ·Pipe 42
-#define ·Times 43
-#define ·Brk 45
-#define ·SetGid 46
-#define ·GetGid 47
-#define ·GetEUid 49
-#define ·GetEGid 50
-#define ·Acct 51
-#define ·UMount2 52
-#define ·IoCtl 54
-#define ·FCntl 55
-#define ·SetPGid 57
-#define ·UMask 60
-#define ·Chroot 61
-#define ·UStat 62
-#define ·Dup2 63
-#define ·GetPPid 64
-#define ·GetPGrp 65
-#define ·SetSId 66
-#define ·SigAction 67
-#define ·SetReUid 70
-#define ·SetReGid 71
-#define ·SigSuspend 72
-#define ·SigPending 73
-#define ·SetHostname 74
-#define ·SetRLimit 75
-#define ·GetRUsage 77
-#define ·GetTimeOfDayTime32 78
-#define ·SetTimeOfDayTime32 79
-#define ·GetGroups 80
-#define ·SetGroups 81
-#define ·SymLink 83
-#define ·ReadLink 85
-#define ·UseLib 86
-#define ·SwapOn 87
-#define ·Reboot 88
-#define ·MUnmap 91
-#define ·Truncate 92
-#define ·FTruncate 93
-#define ·FChmod 94
-#define ·FChown 95
-#define ·GetPriority 96
-#define ·SetPriority 97
-#define ·StatFs 99
-#define ·FStatFs 100
-#define ·SysLog 103
-#define ·SetITimer 104
-#define ·GetITimer 105
-#define ·Stat 106
-#define ·LStat 107
-#define ·FStat 108
-#define ·VHangUp 111
-#define ·Wait4 114
-#define ·SwapOff 115
-#define ·SysInfo 116
-#define ·FSync 118
-#define ·SigReturn 119
-#define ·Clone 120
-#define ·SetDomainName 121
-#define ·UName 122
-#define ·AdjTimex 124
-#define ·MProtect 125
-#define ·SigProcMask 126
-#define ·InItModule 128
-#define ·DeleteModule 129
-#define ·QuotaCtl 131
-#define ·GetPGid 132
-#define ·FChdir 133
-#define ·BdFlush 134
-#define ·SysFs 135
-#define ·Personality 136
-#define ·SetFsUid 138
-#define ·SetFsGid 139
-#define ·LlSeek 140
-#define ·GetDents 141
-#define ·NewSelect 142
-#define ·FLock 143
-#define ·MSync 144
-#define ·ReadV 145
-#define ·WriteV 146
-#define ·GetsId 147
-#define ·FdAtAsync 148
-#define ·SysCtl 149
-#define ·MLock 150
-#define ·MUnlock 151
-#define ·MLockAll 152
-#define ·MUnlockAll 153
-#define ·SchedSetParam 154
-#define ·SchedGetParam 155
-#define ·SchedSetScheduler 156
-#define ·SchedGetScheduler 157
-#define ·SchedYield 158
-#define ·SchedGetPriorityMax 159
-#define ·SchedGetPriorityMin 160
-#define ·SchedRrGetInterval 161
-#define ·NanoSleep 162
-#define ·MRemap 163
-#define ·SetResUid 164
-#define ·GetResUid 165
-#define ·Poll 168
-#define ·NfsServCtl 169
-#define ·SetResGid 170
-#define ·GetResGid 171
-#define ·PrCtl 172
-#define ·RtSigReturn 173
-#define ·RtSigAction 174
-#define ·RtSigProcMask 175
-#define ·RtSigPending 176
-#define ·RtSigTimedWait 177
-#define ·RtSigQueueInfo 178
-#define ·RtSigSuspend 179
-#define ·PRead64 180
-#define ·PWrite64 181
-#define ·Chown 182
-#define ·GetCwd 183
-#define ·CapGet 184
-#define ·CapSet 185
-#define ·SiGaltStack 186
-#define ·SendFile 187
-#define ·VFork 190
-#define ·UGetRLimit 191
-#define ·MMap2 192
-#define ·Truncate64 193
-#define ·FTruncate64 194
-#define ·Stat64 195
-#define ·LStat64 196
-#define ·FStat64 197
-#define ·LChown32 198
-#define ·GetUid32 199
-#define ·GetGid32 200
-#define ·GetEUid32 201
-#define ·GetEGid32 202
-#define ·SetReUid32 203
-#define ·SetReGid32 204
-#define ·GetGroups32 205
-#define ·SetGroups32 206
-#define ·FChown32 207
-#define ·SetResUid32 208
-#define ·GetResUid32 209
-#define ·SetResGid32 210
-#define ·GetResGid32 211
-#define ·Chown32 212
-#define ·SetUid32 213
-#define ·SetGid32 214
-#define ·SetFsUid32 215
-#define ·SetFsGid32 216
-#define ·GetDents64 217
-#define ·PivotRoot 218
-#define ·MLoaded 219
-#define ·MAdvise 220
-#define ·FCntl64 221
-#define ·GetTId 224
-#define ·ReadAhead 225
-#define ·SetXAttr 226
-#define ·LSetXAttr 227
-#define ·FSetXAttr 228
-#define ·GetXAttr 229
-#define ·LGetXAttr 230
-#define ·FGetXAttr 231
-#define ·ListXAttr 232
-#define ·LListXAttr 233
-#define ·FListXAttr 234
-#define ·RemoveXAttr 235
-#define ·LRemoveXAttr 236
-#define ·FRemoveXAttr 237
-#define ·TKill 238
-#define ·SendFile64 239
-#define ·Futex 240
-#define ·SchedSetAffinity 241
-#define ·SchedGetAffinity 242
-#define ·IoSetUp 243
-#define ·IoDestroy 244
-#define ·IoGetEvents 245
-#define ·IoSubmit 246
-#define ·IoCancel 247
-#define ·ExitGroup 248
-#define ·LookupDCookie 249
-#define ·EPollCreate 250
-#define ·EPollCtl 251
-#define ·EPollWait 252
-#define ·RemapFilePages 253
-#define ·SetTIdAddress 256
-#define ·TimerCreate 257
-#define ·TimerSetTime32 258
-#define ·TimerGetTime32 259
-#define ·TimerGetOverrun 260
-#define ·TimerDelete 261
-#define ·ClockSetTime32 262
-#define ·ClockGetTime32 263
-#define ·ClockGetResTime32 264
-#define ·ClockNanoSleepTime32 265
-#define ·StatFs64 266
-#define ·FStatFs64 267
-#define ·TgKill 268
-#define ·UTimes 269
-#define ·FAdvise6464 270
-#define ·ArmFAdvise6464 270
-#define ·PciConfigIoBase 271
-#define ·PciConfigRead 272
-#define ·PciConfigWrite 273
-#define ·MQOpen 274
-#define ·MQUnlink 275
-#define ·MQTimedSend 276
-#define ·MQTimedReceive 277
-#define ·MQNotify 278
-#define ·MQGetSetAttr 279
-#define ·WaitId 280
-#define ·Socket 281
-#define ·Bind 282
-#define ·Connect 283
-#define ·Listen 284
-#define ·Accept 285
-#define ·GetSockName 286
-#define ·GetPeerName 287
-#define ·SocketPair 288
-#define ·Send 289
-#define ·SendTo 290
-#define ·Recv 291
-#define ·RecvFrom 292
-#define ·Shutdown 293
-#define ·SetSockOpt 294
-#define ·GetSockOpt 295
-#define ·SendMsg 296
-#define ·RecvMsg 297
-#define ·SemOp 298
-#define ·SemGet 299
-#define ·SemCtl 300
-#define ·MsgSend 301
-#define ·MsgRecv 302
-#define ·MsgGet 303
-#define ·MsgCtl 304
-#define ·ShmAt 305
-#define ·ShmDt 306
-#define ·ShmGet 307
-#define ·ShmCtl 308
-#define ·AddKey 309
-#define ·RequestKey 310
-#define ·KeyCtl 311
-#define ·SemTimeDop 312
-#define ·VServer 313
-#define ·IoPrIoSet 314
-#define ·IoPrIoGet 315
-#define ·INotifyInIt 316
-#define ·INotifyAddWatch 317
-#define ·INotifyRmWatch 318
-#define ·MBind 319
-#define ·GetMemPolicy 320
-#define ·SetMemPolicy 321
-#define ·OpenAt 322
-#define ·MkdirAt 323
-#define ·MkNodAt 324
-#define ·FChownAt 325
-#define ·FuTimesAt 326
-#define ·FStatAt64 327
-#define ·UnlinkAt 328
-#define ·RenameAt 329
-#define ·LinkAt 330
-#define ·SymLinkAt 331
-#define ·ReadLinkAt 332
-#define ·FChmodAt 333
-#define ·FAccessAt 334
-#define ·PSelect6 335
-#define ·PPoll 336
-#define ·UnShare 337
-#define ·SetRobustList 338
-#define ·GetRobustList 339
-#define ·Splice 340
-#define ·SyncFileRange2 341
-#define ·ArmSyncFileRange 341
-#define ·Tee 342
-#define ·VmSplice 343
-#define ·MovePages 344
-#define ·GetCpu 345
-#define ·EPollPWait 346
-#define ·KExecLoad 347
-#define ·UTimeNsAt 348
-#define ·SignalFd 349
-#define ·TimerFdCreate 350
-#define ·EventFd 351
-#define ·FAllocate 352
-#define ·TimerFdSetTime32 353
-#define ·TimerFdGetTime32 354
-#define ·SignalFd4 355
-#define ·EventFd2 356
-#define ·EPollCreate1 357
-#define ·Dup3 358
-#define ·Pipe2 359
-#define ·INotifyInIt1 360
-#define ·PreAdv 361
-#define ·PWriteV 362
-#define ·RtTgSigQueueInfo 363
-#define ·PerFEventOpen 364
-#define ·RecvMMsg 365
-#define ·Accept4 366
-#define ·FaNotifyInIt 367
-#define ·FaNotifyMark 368
-#define ·PrLimit64 369
-#define ·NameToHandleAt 370
-#define ·OpenByHandleAt 371
-#define ·ClockAdjTime 372
-#define ·SyncFs 373
-#define ·SendMMsg 374
-#define ·SetNs 375
-#define ·ProcessVmReadV 376
-#define ·ProcessVmWriteV 377
-#define ·KCmp 378
-#define ·FinItModule 379
-#define ·SchedSetAttr 380
-#define ·SchedGetAttr 381
-#define ·RenameAt2 382
-#define ·SeccoMp 383
-#define ·GetRandom 384
-#define ·MemFdCreate 385
-#define ·BpF 386
-#define ·ExecVeAt 387
-#define ·UserFaultFd 388
-#define ·MemBarrier 389
-#define ·MLock2 390
-#define ·CopyFileRange 391
-#define ·PreAdv2 392
-#define ·PWriteV2 393
-#define ·PKeyMProtect 394
-#define ·PKeyAllOc 395
-#define ·PKeyFree 396
-#define ·StatX 397
-#define ·RSeq 398
-#define ·IoPGetEvents 399
-#define ·MigratePages 400
-#define ·KExecFileLoad 401
-#define ·ClockGetTime64 403
-#define ·ClockSetTime64 404
-#define ·ClockAdjTime64 405
-#define ·ClockGetResTime64 406
-#define ·ClockNanoSleepTime64 407
-#define ·TimerGetTime64 408
-#define ·TimerSetTime64 409
-#define ·TimerFdGetTime64 410
-#define ·TimerFdSetTime64 411
-#define ·UTimeNsAtTime64 412
-#define ·PSelect6Time64 413
-#define ·PPollTime64 414
-#define ·IoPGetEventsTime64 416
-#define ·RecvMMsgTime64 417
-#define ·MQTimedSendTime64 418
-#define ·MQTimedReceiveTime64 419
-#define ·SemTimeDopTime64 420
-#define ·RtSigTimedWaitTime64 421
-#define ·FutexTime64 422
-#define ·SchedRrGetIntervalTime64 423
-#define ·PidFdSendSignal 424
-#define ·IoUringSetUp 425
-#define ·IoUringEnter 426
-#define ·IoUringRegister 427
-#define ·OpenTree 428
-#define ·MoveMount 429
-#define ·FsOpen 430
-#define ·FsConfig 431
-#define ·FsMount 432
-#define ·FsPick 433
-#define ·PidFdOpen 434
-#define ·Clone3 435
-#define ·CloseRange 436
-#define ·OpenAt2 437
-#define ·PidFdGetFd 438
-#define ·FAccessAt2 439
+#define ·RestartSysCall 0
+#define ·Exit 1
+#define ·Fork 2
+#define ·Read 3
+#define ·Write 4
+#define ·Open 5
+#define ·Close 6
+#define ·Create 8
+#define ·Link 9
+#define ·Unlink 10
+#define ·ExecVe 11
+#define ·Chdir 12
+#define ·MkNod 14
+#define ·Chmod 15
+#define ·LChown 16
+#define ·LSeek 19
+#define ·GetPid 20
+#define ·Mount 21
+#define ·SetUid 23
+#define ·GetUid 24
+#define ·PTrace 26
+#define ·Pause 29
+#define ·Access 33
+#define ·Nice 34
+#define ·Sync 36
+#define ·Kill 37
+#define ·Rename 38
+#define ·Mkdir 39
+#define ·Rmdir 40
+#define ·Dup 41
+#define ·Pipe 42
+#define ·Times 43
+#define ·Brk 45
+#define ·SetGid 46
+#define ·GetGid 47
+#define ·GetEUid 49
+#define ·GetEGid 50
+#define ·Acct 51
+#define ·UMount2 52
+#define ·IoCtl 54
+#define ·FCntl 55
+#define ·SetPGid 57
+#define ·UMask 60
+#define ·Chroot 61
+#define ·UStat 62
+#define ·Dup2 63
+#define ·GetPPid 64
+#define ·GetPGrp 65
+#define ·SetSId 66
+#define ·SigAction 67
+#define ·SetReUid 70
+#define ·SetReGid 71
+#define ·SigSuspend 72
+#define ·SigPending 73
+#define ·SetHostname 74
+#define ·SetRLimit 75
+#define ·GetRUsage 77
+#define ·GetTimeOfDayTime32 78
+#define ·SetTimeOfDayTime32 79
+#define ·GetGroups 80
+#define ·SetGroups 81
+#define ·SymLink 83
+#define ·ReadLink 85
+#define ·UseLib 86
+#define ·SwapOn 87
+#define ·Reboot 88
+#define ·MUnmap 91
+#define ·Truncate 92
+#define ·FTruncate 93
+#define ·FChmod 94
+#define ·FChown 95
+#define ·GetPriority 96
+#define ·SetPriority 97
+#define ·StatFs 99
+#define ·FStatFs 100
+#define ·SysLog 103
+#define ·SetITimer 104
+#define ·GetITimer 105
+#define ·Stat 106
+#define ·LStat 107
+#define ·FStat 108
+#define ·VHangUp 111
+#define ·Wait4 114
+#define ·SwapOff 115
+#define ·SysInfo 116
+#define ·FSync 118
+#define ·SigReturn 119
+#define ·Clone 120
+#define ·SetDomainName 121
+#define ·UName 122
+#define ·AdjTimex 124
+#define ·MProtect 125
+#define ·SigProcMask 126
+#define ·InItModule 128
+#define ·DeleteModule 129
+#define ·QuotaCtl 131
+#define ·GetPGid 132
+#define ·FChdir 133
+#define ·BdFlush 134
+#define ·SysFs 135
+#define ·Personality 136
+#define ·SetFsUid 138
+#define ·SetFsGid 139
+#define ·LlSeek 140
+#define ·GetDents 141
+#define ·NewSelect 142
+#define ·FLock 143
+#define ·MSync 144
+#define ·ReadV 145
+#define ·WriteV 146
+#define ·GetsId 147
+#define ·FdAtAsync 148
+#define ·SysCtl 149
+#define ·MLock 150
+#define ·MUnlock 151
+#define ·MLockAll 152
+#define ·MUnlockAll 153
+#define ·SchedSetParam 154
+#define ·SchedGetParam 155
+#define ·SchedSetScheduler 156
+#define ·SchedGetScheduler 157
+#define ·SchedYield 158
+#define ·SchedGetPriorityMax 159
+#define ·SchedGetPriorityMin 160
+#define ·SchedRrGetInterval 161
+#define ·NanoSleep 162
+#define ·MRemap 163
+#define ·SetResUid 164
+#define ·GetResUid 165
+#define ·Poll 168
+#define ·NfsServCtl 169
+#define ·SetResGid 170
+#define ·GetResGid 171
+#define ·PrCtl 172
+#define ·RtSigReturn 173
+#define ·RtSigAction 174
+#define ·RtSigProcMask 175
+#define ·RtSigPending 176
+#define ·RtSigTimedWait 177
+#define ·RtSigQueueInfo 178
+#define ·RtSigSuspend 179
+#define ·PRead64 180
+#define ·PWrite64 181
+#define ·Chown 182
+#define ·GetCwd 183
+#define ·CapGet 184
+#define ·CapSet 185
+#define ·SiGaltStack 186
+#define ·SendFile 187
+#define ·VFork 190
+#define ·UGetRLimit 191
+#define ·MMap2 192
+#define ·Truncate64 193
+#define ·FTruncate64 194
+#define ·Stat64 195
+#define ·LStat64 196
+#define ·FStat64 197
+#define ·LChown32 198
+#define ·GetUid32 199
+#define ·GetGid32 200
+#define ·GetEUid32 201
+#define ·GetEGid32 202
+#define ·SetReUid32 203
+#define ·SetReGid32 204
+#define ·GetGroups32 205
+#define ·SetGroups32 206
+#define ·FChown32 207
+#define ·SetResUid32 208
+#define ·GetResUid32 209
+#define ·SetResGid32 210
+#define ·GetResGid32 211
+#define ·Chown32 212
+#define ·SetUid32 213
+#define ·SetGid32 214
+#define ·SetFsUid32 215
+#define ·SetFsGid32 216
+#define ·GetDents64 217
+#define ·PivotRoot 218
+#define ·MLoaded 219
+#define ·MAdvise 220
+#define ·FCntl64 221
+#define ·GetTId 224
+#define ·ReadAhead 225
+#define ·SetXAttr 226
+#define ·LSetXAttr 227
+#define ·FSetXAttr 228
+#define ·GetXAttr 229
+#define ·LGetXAttr 230
+#define ·FGetXAttr 231
+#define ·ListXAttr 232
+#define ·LListXAttr 233
+#define ·FListXAttr 234
+#define ·RemoveXAttr 235
+#define ·LRemoveXAttr 236
+#define ·FRemoveXAttr 237
+#define ·TKill 238
+#define ·SendFile64 239
+#define ·Futex 240
+#define ·SchedSetAffinity 241
+#define ·SchedGetAffinity 242
+#define ·IoSetUp 243
+#define ·IoDestroy 244
+#define ·IoGetEvents 245
+#define ·IoSubmit 246
+#define ·IoCancel 247
+#define ·ExitGroup 248
+#define ·LookupDCookie 249
+#define ·EPollCreate 250
+#define ·EPollCtl 251
+#define ·EPollWait 252
+#define ·RemapFilePages 253
+#define ·SetTIdAddress 256
+#define ·TimerCreate 257
+#define ·TimerSetTime32 258
+#define ·TimerGetTime32 259
+#define ·TimerGetOverrun 260
+#define ·TimerDelete 261
+#define ·ClockSetTime32 262
+#define ·ClockGetTime32 263
+#define ·ClockGetResTime32 264
+#define ·ClockNanoSleepTime32 265
+#define ·StatFs64 266
+#define ·FStatFs64 267
+#define ·TgKill 268
+#define ·UTimes 269
+#define ·FAdvise6464 270
+#define ·ArmFAdvise6464 270
+#define ·PciConfigIoBase 271
+#define ·PciConfigRead 272
+#define ·PciConfigWrite 273
+#define ·MQOpen 274
+#define ·MQUnlink 275
+#define ·MQTimedSend 276
+#define ·MQTimedReceive 277
+#define ·MQNotify 278
+#define ·MQGetSetAttr 279
+#define ·WaitId 280
+#define ·Socket 281
+#define ·Bind 282
+#define ·Connect 283
+#define ·Listen 284
+#define ·Accept 285
+#define ·GetSockName 286
+#define ·GetPeerName 287
+#define ·SocketPair 288
+#define ·Send 289
+#define ·SendTo 290
+#define ·Recv 291
+#define ·RecvFrom 292
+#define ·Shutdown 293
+#define ·SetSockOpt 294
+#define ·GetSockOpt 295
+#define ·SendMsg 296
+#define ·RecvMsg 297
+#define ·SemOp 298
+#define ·SemGet 299
+#define ·SemCtl 300
+#define ·MsgSend 301
+#define ·MsgRecv 302
+#define ·MsgGet 303
+#define ·MsgCtl 304
+#define ·ShmAt 305
+#define ·ShmDt 306
+#define ·ShmGet 307
+#define ·ShmCtl 308
+#define ·AddKey 309
+#define ·RequestKey 310
+#define ·KeyCtl 311
+#define ·SemTimeDop 312
+#define ·VServer 313
+#define ·IoPrIoSet 314
+#define ·IoPrIoGet 315
+#define ·INotifyInIt 316
+#define ·INotifyAddWatch 317
+#define ·INotifyRmWatch 318
+#define ·MBind 319
+#define ·GetMemPolicy 320
+#define ·SetMemPolicy 321
+#define ·OpenAt 322
+#define ·MkdirAt 323
+#define ·MkNodAt 324
+#define ·FChownAt 325
+#define ·FuTimesAt 326
+#define ·FStatAt64 327
+#define ·UnlinkAt 328
+#define ·RenameAt 329
+#define ·LinkAt 330
+#define ·SymLinkAt 331
+#define ·ReadLinkAt 332
+#define ·FChmodAt 333
+#define ·FAccessAt 334
+#define ·PSelect6 335
+#define ·PPoll 336
+#define ·UnShare 337
+#define ·SetRobustList 338
+#define ·GetRobustList 339
+#define ·Splice 340
+#define ·SyncFileRange2 341
+#define ·ArmSyncFileRange 341
+#define ·Tee 342
+#define ·VmSplice 343
+#define ·MovePages 344
+#define ·GetCpu 345
+#define ·EPollPWait 346
+#define ·KExecLoad 347
+#define ·UTimeNsAt 348
+#define ·SignalFd 349
+#define ·TimerFdCreate 350
+#define ·EventFd 351
+#define ·FAllocate 352
+#define ·TimerFdSetTime32 353
+#define ·TimerFdGetTime32 354
+#define ·SignalFd4 355
+#define ·EventFd2 356
+#define ·EPollCreate1 357
+#define ·Dup3 358
+#define ·Pipe2 359
+#define ·INotifyInIt1 360
+#define ·PreAdv 361
+#define ·PWriteV 362
+#define ·RtTgSigQueueInfo 363
+#define ·PerFEventOpen 364
+#define ·RecvMMsg 365
+#define ·Accept4 366
+#define ·FaNotifyInIt 367
+#define ·FaNotifyMark 368
+#define ·PrLimit64 369
+#define ·NameToHandleAt 370
+#define ·OpenByHandleAt 371
+#define ·ClockAdjTime 372
+#define ·SyncFs 373
+#define ·SendMMsg 374
+#define ·SetNs 375
+#define ·ProcessVmReadV 376
+#define ·ProcessVmWriteV 377
+#define ·KCmp 378
+#define ·FinItModule 379
+#define ·SchedSetAttr 380
+#define ·SchedGetAttr 381
+#define ·RenameAt2 382
+#define ·SeccoMp 383
+#define ·GetRandom 384
+#define ·MemFdCreate 385
+#define ·BpF 386
+#define ·ExecVeAt 387
+#define ·UserFaultFd 388
+#define ·MemBarrier 389
+#define ·MLock2 390
+#define ·CopyFileRange 391
+#define ·PreAdv2 392
+#define ·PWriteV2 393
+#define ·PKeyMProtect 394
+#define ·PKeyAllOc 395
+#define ·PKeyFree 396
+#define ·StatX 397
+#define ·RSeq 398
+#define ·IoPGetEvents 399
+#define ·MigratePages 400
+#define ·KExecFileLoad 401
+#define ·ClockGetTime64 403
+#define ·ClockSetTime64 404
+#define ·ClockAdjTime64 405
+#define ·ClockGetResTime64 406
+#define ·ClockNanoSleepTime64 407
+#define ·TimerGetTime64 408
+#define ·TimerSetTime64 409
+#define ·TimerFdGetTime64 410
+#define ·TimerFdSetTime64 411
+#define ·UTimeNsAtTime64 412
+#define ·PSelect6Time64 413
+#define ·PPollTime64 414
+#define ·IoPGetEventsTime64 416
+#define ·RecvMMsgTime64 417
+#define ·MQTimedSendTime64 418
+#define ·MQTimedReceiveTime64 419
+#define ·SemTimeDopTime64 420
+#define ·RtSigTimedWaitTime64 421
+#define ·FutexTime64 422
+#define ·SchedRrGetIntervalTime64 423
+#define ·PidFdSendSignal 424
+#define ·IoUringSetUp 425
+#define ·IoUringEnter 426
+#define ·IoUringRegister 427
+#define ·OpenTree 428
+#define ·MoveMount 429
+#define ·FsOpen 430
+#define ·FsConfig 431
+#define ·FsMount 432
+#define ·FsPick 433
+#define ·PidFdOpen 434
+#define ·Clone3 435
+#define ·CloseRange 436
+#define ·OpenAt2 437
+#define ·PidFdGetFd 438
+#define ·FAccessAt2 439
/* assembly routines */
#define asm __asm__ __volatile__
diff --git a/sys/linux/arm64/arch/bits.h b/sys/linux/arm64/arch/bits.h
index b09b933..c96db8b 100644
--- a/sys/linux/arm64/arch/bits.h
+++ b/sys/linux/arm64/arch/bits.h
@@ -6,6 +6,7 @@
#define INT32 int
#define INT64 long
#define ADDR long
+#define REG long
/* abi */
#define INTPTR_MIN INT64_MIN
diff --git a/sys/linux/arm64/arch/types.h b/sys/linux/arm64/arch/types.h
new file mode 100644
index 0000000..65d05f6
--- /dev/null
+++ b/sys/linux/arm64/arch/types.h
@@ -0,0 +1,28 @@
+#pragma once
+
+#if 0
+struct sys·Info
+{
+ uint64 devid;
+ uint64 inode;
+ uint mode;
+ uregister_t nlinks;
+
+ uint uid;
+ uint gid;
+ uint64 spdevid;
+ ulong _pad;
+ intptr len;
+ long blklen;
+
+ int __pad;
+
+ int64 nblk;
+
+ sys·TimeNano access;
+ sys·TimeNano modify;
+ sys·TimeNano change;
+
+ uint _unused[2];
+};
+#endif
diff --git a/sys/linux/arm64/syscall.h b/sys/linux/arm64/syscall.h
index efe905e..eb84762 100644
--- a/sys/linux/arm64/syscall.h
+++ b/sys/linux/arm64/syscall.h
@@ -1,298 +1,298 @@
-#define ·IoSetUp 0
-#define ·IoDestroy 1
-#define ·IoSubmit 2
-#define ·IoCancel 3
-#define ·IoGetEvents 4
-#define ·SetXAttr 5
-#define ·LSetXAttr 6
-#define ·FSetXAttr 7
-#define ·GetXAttr 8
-#define ·LGetXAttr 9
-#define ·FGetXAttr 10
-#define ·ListXAttr 11
-#define ·LListXAttr 12
-#define ·FListXAttr 13
-#define ·RemoveXAttr 14
-#define ·LRemoveXAttr 15
-#define ·FRemoveXAttr 16
-#define ·GetCwd 17
-#define ·LookupDCookie 18
-#define ·EventFd2 19
-#define ·EPollCreate1 20
-#define ·EPollCtl 21
-#define ·EPollPWait 22
-#define ·Dup 23
-#define ·Dup3 24
-#define ·FCntl 25
-#define ·INotifyInIt1 26
-#define ·INotifyAddWatch 27
-#define ·INotifyRmWatch 28
-#define ·IoCtl 29
-#define ·IoPrIoSet 30
-#define ·IoPrIoGet 31
-#define ·FLock 32
-#define ·MkNodAt 33
-#define ·MkdirAt 34
-#define ·UnlinkAt 35
-#define ·SymLinkAt 36
-#define ·LinkAt 37
-#define ·RenameAt 38
-#define ·UMount2 39
-#define ·Mount 40
-#define ·PivotRoot 41
-#define ·NfsServCtl 42
-#define ·StatFs 43
-#define ·FStatFs 44
-#define ·Truncate 45
-#define ·FTruncate 46
-#define ·FAllocate 47
-#define ·FAccessAt 48
-#define ·Chdir 49
-#define ·FChdir 50
-#define ·Chroot 51
-#define ·FChmod 52
-#define ·FChmodAt 53
-#define ·FChownAt 54
-#define ·FChown 55
-#define ·OpenAt 56
-#define ·Close 57
-#define ·VHangUp 58
-#define ·Pipe2 59
-#define ·QuotaCtl 60
-#define ·GetDents64 61
-#define ·LSeek 62
-#define ·Read 63
-#define ·Write 64
-#define ·ReadV 65
-#define ·WriteV 66
-#define ·PRead64 67
-#define ·PWrite64 68
-#define ·PreAdv 69
-#define ·PWriteV 70
-#define ·SendFile 71
-#define ·PSelect6 72
-#define ·PPoll 73
-#define ·SignalFd4 74
-#define ·VmSplice 75
-#define ·Splice 76
-#define ·Tee 77
-#define ·ReadLinkAt 78
-#define ·NewFStatAt 79
-#define ·FStat 80
-#define ·Sync 81
-#define ·FSync 82
-#define ·FdAtAsync 83
-#define ·SyncFileRange 84
-#define ·TimerFdCreate 85
-#define ·TimerFdSetTime 86
-#define ·TimerFdGetTime 87
-#define ·UTimeNsAt 88
-#define ·Acct 89
-#define ·CapGet 90
-#define ·CapSet 91
-#define ·Personality 92
-#define ·Exit 93
-#define ·ExitGroup 94
-#define ·WaitId 95
-#define ·SetTIdAddress 96
-#define ·UnShare 97
-#define ·Futex 98
-#define ·SetRobustList 99
-#define ·GetRobustList 100
-#define ·NanoSleep 101
-#define ·GetITimer 102
-#define ·SetITimer 103
-#define ·KExecLoad 104
-#define ·InItModule 105
-#define ·DeleteModule 106
-#define ·TimerCreate 107
-#define ·TimerGetTime 108
-#define ·TimerGetOverrun 109
-#define ·TimerSetTime 110
-#define ·TimerDelete 111
-#define ·ClockSetTime 112
-#define ·ClockGetTime 113
-#define ·ClockGetRes 114
-#define ·ClockNanoSleep 115
-#define ·SysLog 116
-#define ·PTrace 117
-#define ·SchedSetParam 118
-#define ·SchedSetScheduler 119
-#define ·SchedGetScheduler 120
-#define ·SchedGetParam 121
-#define ·SchedSetAffinity 122
-#define ·SchedGetAffinity 123
-#define ·SchedYield 124
-#define ·SchedGetPriorityMax 125
-#define ·SchedGetPriorityMin 126
-#define ·SchedRrGetInterval 127
-#define ·RestartSysCall 128
-#define ·Kill 129
-#define ·TKill 130
-#define ·TgKill 131
-#define ·SiGaltStack 132
-#define ·RtSigSuspend 133
-#define ·RtSigAction 134
-#define ·RtSigProcMask 135
-#define ·RtSigPending 136
-#define ·RtSigTimedWait 137
-#define ·RtSigQueueInfo 138
-#define ·RtSigReturn 139
-#define ·SetPriority 140
-#define ·GetPriority 141
-#define ·Reboot 142
-#define ·SetReGid 143
-#define ·SetGid 144
-#define ·SetReUid 145
-#define ·SetUid 146
-#define ·SetResUid 147
-#define ·GetResUid 148
-#define ·SetResGid 149
-#define ·GetResGid 150
-#define ·SetFsUid 151
-#define ·SetFsGid 152
-#define ·Times 153
-#define ·SetPGid 154
-#define ·GetPGid 155
-#define ·GetsId 156
-#define ·SetSId 157
-#define ·GetGroups 158
-#define ·SetGroups 159
-#define ·UName 160
-#define ·SetHostname 161
-#define ·SetDomainName 162
-#define ·GetRLimit 163
-#define ·SetRLimit 164
-#define ·GetRUsage 165
-#define ·UMask 166
-#define ·PrCtl 167
-#define ·GetCpu 168
-#define ·GetTimeOfDay 169
-#define ·SetTimeOfDay 170
-#define ·AdjTimex 171
-#define ·GetPid 172
-#define ·GetPPid 173
-#define ·GetUid 174
-#define ·GetEUid 175
-#define ·GetGid 176
-#define ·GetEGid 177
-#define ·GetTId 178
-#define ·SysInfo 179
-#define ·MQOpen 180
-#define ·MQUnlink 181
-#define ·MQTimedSend 182
-#define ·MQTimedReceive 183
-#define ·MQNotify 184
-#define ·MQGetSetAttr 185
-#define ·MsgGet 186
-#define ·MsgCtl 187
-#define ·MsgRecv 188
-#define ·MsgSend 189
-#define ·SemGet 190
-#define ·SemCtl 191
-#define ·SemTimeDop 192
-#define ·SemOp 193
-#define ·ShmGet 194
-#define ·ShmCtl 195
-#define ·ShmAt 196
-#define ·ShmDt 197
-#define ·Socket 198
-#define ·SocketPair 199
-#define ·Bind 200
-#define ·Listen 201
-#define ·Accept 202
-#define ·Connect 203
-#define ·GetSockName 204
-#define ·GetPeerName 205
-#define ·SendTo 206
-#define ·RecvFrom 207
-#define ·SetSockOpt 208
-#define ·GetSockOpt 209
-#define ·Shutdown 210
-#define ·SendMsg 211
-#define ·RecvMsg 212
-#define ·ReadAhead 213
-#define ·Brk 214
-#define ·MUnmap 215
-#define ·MRemap 216
-#define ·AddKey 217
-#define ·RequestKey 218
-#define ·KeyCtl 219
-#define ·Clone 220
-#define ·ExecVe 221
-#define ·MMap 222
-#define ·FAdvise64 223
-#define ·SwapOn 224
-#define ·SwapOff 225
-#define ·MProtect 226
-#define ·MSync 227
-#define ·MLock 228
-#define ·MUnlock 229
-#define ·MLockAll 230
-#define ·MUnlockAll 231
-#define ·MLoaded 232
-#define ·MAdvise 233
-#define ·RemapFilePages 234
-#define ·MBind 235
-#define ·GetMemPolicy 236
-#define ·SetMemPolicy 237
-#define ·MigratePages 238
-#define ·MovePages 239
-#define ·RtTgSigQueueInfo 240
-#define ·PerFEventOpen 241
-#define ·Accept4 242
-#define ·RecvMMsg 243
-#define ·Wait4 260
-#define ·PrLimit64 261
-#define ·FaNotifyInIt 262
-#define ·FaNotifyMark 263
-#define ·NameToHandleAt 264
-#define ·OpenByHandleAt 265
-#define ·ClockAdjTime 266
-#define ·SyncFs 267
-#define ·SetNs 268
-#define ·SendMMsg 269
-#define ·ProcessVmReadV 270
-#define ·ProcessVmWriteV 271
-#define ·KCmp 272
-#define ·FinItModule 273
-#define ·SchedSetAttr 274
-#define ·SchedGetAttr 275
-#define ·RenameAt2 276
-#define ·SeccoMp 277
-#define ·GetRandom 278
-#define ·MemFdCreate 279
-#define ·BpF 280
-#define ·ExecVeAt 281
-#define ·UserFaultFd 282
-#define ·MemBarrier 283
-#define ·MLock2 284
-#define ·CopyFileRange 285
-#define ·PreAdv2 286
-#define ·PWriteV2 287
-#define ·PKeyMProtect 288
-#define ·PKeyAllOc 289
-#define ·PKeyFree 290
-#define ·StatX 291
-#define ·IoPGetEvents 292
-#define ·RSeq 293
-#define ·KExecFileLoad 294
-#define ·PidFdSendSignal 424
-#define ·IoUringSetUp 425
-#define ·IoUringEnter 426
-#define ·IoUringRegister 427
-#define ·OpenTree 428
-#define ·MoveMount 429
-#define ·FsOpen 430
-#define ·FsConfig 431
-#define ·FsMount 432
-#define ·FsPick 433
-#define ·PidFdOpen 434
-#define ·Clone3 435
-#define ·CloseRange 436
-#define ·OpenAt2 437
-#define ·PidFdGetFd 438
-#define ·FAccessAt2 439
+#define ·IoSetUp 0
+#define ·IoDestroy 1
+#define ·IoSubmit 2
+#define ·IoCancel 3
+#define ·IoGetEvents 4
+#define ·SetXAttr 5
+#define ·LSetXAttr 6
+#define ·FSetXAttr 7
+#define ·GetXAttr 8
+#define ·LGetXAttr 9
+#define ·FGetXAttr 10
+#define ·ListXAttr 11
+#define ·LListXAttr 12
+#define ·FListXAttr 13
+#define ·RemoveXAttr 14
+#define ·LRemoveXAttr 15
+#define ·FRemoveXAttr 16
+#define ·GetCwd 17
+#define ·LookupDCookie 18
+#define ·EventFd2 19
+#define ·EPollCreate1 20
+#define ·EPollCtl 21
+#define ·EPollPWait 22
+#define ·Dup 23
+#define ·Dup3 24
+#define ·FCntl 25
+#define ·INotifyInIt1 26
+#define ·INotifyAddWatch 27
+#define ·INotifyRmWatch 28
+#define ·IoCtl 29
+#define ·IoPrIoSet 30
+#define ·IoPrIoGet 31
+#define ·FLock 32
+#define ·MkNodAt 33
+#define ·MkdirAt 34
+#define ·UnlinkAt 35
+#define ·SymLinkAt 36
+#define ·LinkAt 37
+#define ·RenameAt 38
+#define ·UMount2 39
+#define ·Mount 40
+#define ·PivotRoot 41
+#define ·NfsServCtl 42
+#define ·StatFs 43
+#define ·FStatFs 44
+#define ·Truncate 45
+#define ·FTruncate 46
+#define ·FAllocate 47
+#define ·FAccessAt 48
+#define ·Chdir 49
+#define ·FChdir 50
+#define ·Chroot 51
+#define ·FChmod 52
+#define ·FChmodAt 53
+#define ·FChownAt 54
+#define ·FChown 55
+#define ·OpenAt 56
+#define ·Close 57
+#define ·VHangUp 58
+#define ·Pipe2 59
+#define ·QuotaCtl 60
+#define ·GetDents64 61
+#define ·LSeek 62
+#define ·Read 63
+#define ·Write 64
+#define ·ReadV 65
+#define ·WriteV 66
+#define ·PRead64 67
+#define ·PWrite64 68
+#define ·PreAdv 69
+#define ·PWriteV 70
+#define ·SendFile 71
+#define ·PSelect6 72
+#define ·PPoll 73
+#define ·SignalFd4 74
+#define ·VmSplice 75
+#define ·Splice 76
+#define ·Tee 77
+#define ·ReadLinkAt 78
+#define ·NewFStatAt 79
+#define ·FStat 80
+#define ·Sync 81
+#define ·FSync 82
+#define ·FdAtAsync 83
+#define ·SyncFileRange 84
+#define ·TimerFdCreate 85
+#define ·TimerFdSetTime 86
+#define ·TimerFdGetTime 87
+#define ·UTimeNsAt 88
+#define ·Acct 89
+#define ·CapGet 90
+#define ·CapSet 91
+#define ·Personality 92
+#define ·Exit 93
+#define ·ExitGroup 94
+#define ·WaitId 95
+#define ·SetTIdAddress 96
+#define ·UnShare 97
+#define ·Futex 98
+#define ·SetRobustList 99
+#define ·GetRobustList 100
+#define ·NanoSleep 101
+#define ·GetITimer 102
+#define ·SetITimer 103
+#define ·KExecLoad 104
+#define ·InItModule 105
+#define ·DeleteModule 106
+#define ·TimerCreate 107
+#define ·TimerGetTime 108
+#define ·TimerGetOverrun 109
+#define ·TimerSetTime 110
+#define ·TimerDelete 111
+#define ·ClockSetTime 112
+#define ·ClockGetTime 113
+#define ·ClockGetRes 114
+#define ·ClockNanoSleep 115
+#define ·SysLog 116
+#define ·PTrace 117
+#define ·SchedSetParam 118
+#define ·SchedSetScheduler 119
+#define ·SchedGetScheduler 120
+#define ·SchedGetParam 121
+#define ·SchedSetAffinity 122
+#define ·SchedGetAffinity 123
+#define ·SchedYield 124
+#define ·SchedGetPriorityMax 125
+#define ·SchedGetPriorityMin 126
+#define ·SchedRrGetInterval 127
+#define ·RestartSysCall 128
+#define ·Kill 129
+#define ·TKill 130
+#define ·TgKill 131
+#define ·SiGaltStack 132
+#define ·RtSigSuspend 133
+#define ·RtSigAction 134
+#define ·RtSigProcMask 135
+#define ·RtSigPending 136
+#define ·RtSigTimedWait 137
+#define ·RtSigQueueInfo 138
+#define ·RtSigReturn 139
+#define ·SetPriority 140
+#define ·GetPriority 141
+#define ·Reboot 142
+#define ·SetReGid 143
+#define ·SetGid 144
+#define ·SetReUid 145
+#define ·SetUid 146
+#define ·SetResUid 147
+#define ·GetResUid 148
+#define ·SetResGid 149
+#define ·GetResGid 150
+#define ·SetFsUid 151
+#define ·SetFsGid 152
+#define ·Times 153
+#define ·SetPGid 154
+#define ·GetPGid 155
+#define ·GetsId 156
+#define ·SetSId 157
+#define ·GetGroups 158
+#define ·SetGroups 159
+#define ·UName 160
+#define ·SetHostname 161
+#define ·SetDomainName 162
+#define ·GetRLimit 163
+#define ·SetRLimit 164
+#define ·GetRUsage 165
+#define ·UMask 166
+#define ·PrCtl 167
+#define ·GetCpu 168
+#define ·GetTimeOfDay 169
+#define ·SetTimeOfDay 170
+#define ·AdjTimex 171
+#define ·GetPid 172
+#define ·GetPPid 173
+#define ·GetUid 174
+#define ·GetEUid 175
+#define ·GetGid 176
+#define ·GetEGid 177
+#define ·GetTId 178
+#define ·SysInfo 179
+#define ·MQOpen 180
+#define ·MQUnlink 181
+#define ·MQTimedSend 182
+#define ·MQTimedReceive 183
+#define ·MQNotify 184
+#define ·MQGetSetAttr 185
+#define ·MsgGet 186
+#define ·MsgCtl 187
+#define ·MsgRecv 188
+#define ·MsgSend 189
+#define ·SemGet 190
+#define ·SemCtl 191
+#define ·SemTimeDop 192
+#define ·SemOp 193
+#define ·ShmGet 194
+#define ·ShmCtl 195
+#define ·ShmAt 196
+#define ·ShmDt 197
+#define ·Socket 198
+#define ·SocketPair 199
+#define ·Bind 200
+#define ·Listen 201
+#define ·Accept 202
+#define ·Connect 203
+#define ·GetSockName 204
+#define ·GetPeerName 205
+#define ·SendTo 206
+#define ·RecvFrom 207
+#define ·SetSockOpt 208
+#define ·GetSockOpt 209
+#define ·Shutdown 210
+#define ·SendMsg 211
+#define ·RecvMsg 212
+#define ·ReadAhead 213
+#define ·Brk 214
+#define ·MUnmap 215
+#define ·MRemap 216
+#define ·AddKey 217
+#define ·RequestKey 218
+#define ·KeyCtl 219
+#define ·Clone 220
+#define ·ExecVe 221
+#define ·MMap 222
+#define ·FAdvise64 223
+#define ·SwapOn 224
+#define ·SwapOff 225
+#define ·MProtect 226
+#define ·MSync 227
+#define ·MLock 228
+#define ·MUnlock 229
+#define ·MLockAll 230
+#define ·MUnlockAll 231
+#define ·MLoaded 232
+#define ·MAdvise 233
+#define ·RemapFilePages 234
+#define ·MBind 235
+#define ·GetMemPolicy 236
+#define ·SetMemPolicy 237
+#define ·MigratePages 238
+#define ·MovePages 239
+#define ·RtTgSigQueueInfo 240
+#define ·PerFEventOpen 241
+#define ·Accept4 242
+#define ·RecvMMsg 243
+#define ·Wait4 260
+#define ·PrLimit64 261
+#define ·FaNotifyInIt 262
+#define ·FaNotifyMark 263
+#define ·NameToHandleAt 264
+#define ·OpenByHandleAt 265
+#define ·ClockAdjTime 266
+#define ·SyncFs 267
+#define ·SetNs 268
+#define ·SendMMsg 269
+#define ·ProcessVmReadV 270
+#define ·ProcessVmWriteV 271
+#define ·KCmp 272
+#define ·FinItModule 273
+#define ·SchedSetAttr 274
+#define ·SchedGetAttr 275
+#define ·RenameAt2 276
+#define ·SeccoMp 277
+#define ·GetRandom 278
+#define ·MemFdCreate 279
+#define ·BpF 280
+#define ·ExecVeAt 281
+#define ·UserFaultFd 282
+#define ·MemBarrier 283
+#define ·MLock2 284
+#define ·CopyFileRange 285
+#define ·PreAdv2 286
+#define ·PWriteV2 287
+#define ·PKeyMProtect 288
+#define ·PKeyAllOc 289
+#define ·PKeyFree 290
+#define ·StatX 291
+#define ·IoPGetEvents 292
+#define ·RSeq 293
+#define ·KExecFileLoad 294
+#define ·PidFdSendSignal 424
+#define ·IoUringSetUp 425
+#define ·IoUringEnter 426
+#define ·IoUringRegister 427
+#define ·OpenTree 428
+#define ·MoveMount 429
+#define ·FsOpen 430
+#define ·FsConfig 431
+#define ·FsMount 432
+#define ·FsPick 433
+#define ·PidFdOpen 434
+#define ·Clone3 435
+#define ·CloseRange 436
+#define ·OpenAt2 437
+#define ·PidFdGetFd 438
+#define ·FAccessAt2 439
/* assembly routines */
#define asm __asm__ __volatile__
diff --git a/sys/linux/i386/arch/bits.h b/sys/linux/i386/arch/bits.h
index 25926c1..b41b43e 100644
--- a/sys/linux/i386/arch/bits.h
+++ b/sys/linux/i386/arch/bits.h
@@ -6,6 +6,7 @@
#define INT32 int
#define INT64 long long
#define ADDR int
+#define REG int
/* abi */
#define PAGESIZE 4096
diff --git a/sys/linux/i386/arch/types.h b/sys/linux/i386/arch/types.h
new file mode 100644
index 0000000..be2421a
--- /dev/null
+++ b/sys/linux/i386/arch/types.h
@@ -0,0 +1,34 @@
+#pragma once
+
+#if 0
+/*
+ * copied from musl:
+ * copied from kernel definition, but with padding replaced
+ * by the corresponding correctly-sized userspace types.
+ */
+
+struct sys·Info
+{
+ uint64 devid;
+ int _devpad;
+ long _inodetrunc;
+ uint mode;
+ uregister_t nlinks;
+ uint uid;
+ uint gid;
+ uint64 spdevid;
+ int _spdevpad;
+
+ intptr len;
+ long blklen;
+ int64 nblk;
+ struct{
+ long sec;
+ long nano;
+ } _access32, _modify32, _change32;
+ uint64 inode;
+ sys·TimeNano access;
+ sys·TimeNano modify;
+ sys·TimeNano change;
+};
+#endif
diff --git a/sys/linux/i386/syscall.h b/sys/linux/i386/syscall.h
index 21894bf..5c42f90 100644
--- a/sys/linux/i386/syscall.h
+++ b/sys/linux/i386/syscall.h
@@ -1,418 +1,418 @@
-#define ·RestartSysCall 0
-#define ·Exit 1
-#define ·Fork 2
-#define ·Read 3
-#define ·Write 4
-#define ·Open 5
-#define ·Close 6
-#define ·WaitPid 7
-#define ·Create 8
-#define ·Link 9
-#define ·Unlink 10
-#define ·ExecVe 11
-#define ·Chdir 12
-#define ·Time 13
-#define ·MkNod 14
-#define ·Chmod 15
-#define ·LChown 16
-#define ·Break 17
-#define ·OldStat 18
-#define ·LSeek 19
-#define ·GetPid 20
-#define ·Mount 21
-#define ·UMount 22
-#define ·SetUid 23
-#define ·GetUid 24
-#define ·STime 25
-#define ·PTrace 26
-#define ·Alarm 27
-#define ·OldFStat 28
-#define ·Pause 29
-#define ·UTime 30
-#define ·STty 31
-#define ·GTty 32
-#define ·Access 33
-#define ·Nice 34
-#define ·FTime 35
-#define ·Sync 36
-#define ·Kill 37
-#define ·Rename 38
-#define ·Mkdir 39
-#define ·Rmdir 40
-#define ·Dup 41
-#define ·Pipe 42
-#define ·Times 43
-#define ·Prof 44
-#define ·Brk 45
-#define ·SetGid 46
-#define ·GetGid 47
-#define ·Signal 48
-#define ·GetEUid 49
-#define ·GetEGid 50
-#define ·Acct 51
-#define ·UMount2 52
-#define ·Lock 53
-#define ·IoCtl 54
-#define ·FCntl 55
-#define ·MPx 56
-#define ·SetPGid 57
-#define ·ULimit 58
-#define ·OldOldUName 59
-#define ·UMask 60
-#define ·Chroot 61
-#define ·UStat 62
-#define ·Dup2 63
-#define ·GetPPid 64
-#define ·GetPGrp 65
-#define ·SetSId 66
-#define ·SigAction 67
-#define ·SGetMask 68
-#define ·SSetMask 69
-#define ·SetReUid 70
-#define ·SetReGid 71
-#define ·SigSuspend 72
-#define ·SigPending 73
-#define ·SetHostname 74
-#define ·SetRLimit 75
-#define ·GetRUsage 77
-#define ·GetTimeOfDayTime32 78
-#define ·SetTimeOfDayTime32 79
-#define ·GetGroups 80
-#define ·SetGroups 81
-#define ·Select 82
-#define ·SymLink 83
-#define ·OldLStat 84
-#define ·ReadLink 85
-#define ·UseLib 86
-#define ·SwapOn 87
-#define ·Reboot 88
-#define ·ReadDir 89
-#define ·MMap 90
-#define ·MUnmap 91
-#define ·Truncate 92
-#define ·FTruncate 93
-#define ·FChmod 94
-#define ·FChown 95
-#define ·GetPriority 96
-#define ·SetPriority 97
-#define ·ProfIl 98
-#define ·StatFs 99
-#define ·FStatFs 100
-#define ·IoPerm 101
-#define ·SocketCall 102
-#define ·SysLog 103
-#define ·SetITimer 104
-#define ·GetITimer 105
-#define ·Stat 106
-#define ·LStat 107
-#define ·FStat 108
-#define ·OldUName 109
-#define ·IoPl 110
-#define ·VHangUp 111
-#define ·Idle 112
-#define ·Vm86Old 113
-#define ·Wait4 114
-#define ·SwapOff 115
-#define ·SysInfo 116
-#define ·Ipc 117
-#define ·FSync 118
-#define ·SigReturn 119
-#define ·Clone 120
-#define ·SetDomainName 121
-#define ·UName 122
-#define ·ModifyLdT 123
-#define ·AdjTimex 124
-#define ·MProtect 125
-#define ·SigProcMask 126
-#define ·CreateModule 127
-#define ·InItModule 128
-#define ·DeleteModule 129
-#define ·GetKernelSyms 130
-#define ·QuotaCtl 131
-#define ·GetPGid 132
-#define ·FChdir 133
-#define ·BdFlush 134
-#define ·SysFs 135
-#define ·Personality 136
-#define ·AFsSysCall 137
-#define ·SetFsUid 138
-#define ·SetFsGid 139
-#define ·LlSeek 140
-#define ·GetDents 141
-#define ·NewSelect 142
-#define ·FLock 143
-#define ·MSync 144
-#define ·ReadV 145
-#define ·WriteV 146
-#define ·GetsId 147
-#define ·FdAtAsync 148
-#define ·SysCtl 149
-#define ·MLock 150
-#define ·MUnlock 151
-#define ·MLockAll 152
-#define ·MUnlockAll 153
-#define ·SchedSetParam 154
-#define ·SchedGetParam 155
-#define ·SchedSetScheduler 156
-#define ·SchedGetScheduler 157
-#define ·SchedYield 158
-#define ·SchedGetPriorityMax 159
-#define ·SchedGetPriorityMin 160
-#define ·SchedRrGetInterval 161
-#define ·NanoSleep 162
-#define ·MRemap 163
-#define ·SetResUid 164
-#define ·GetResUid 165
-#define ·Vm86 166
-#define ·QueryModule 167
-#define ·Poll 168
-#define ·NfsServCtl 169
-#define ·SetResGid 170
-#define ·GetResGid 171
-#define ·PrCtl 172
-#define ·RtSigReturn 173
-#define ·RtSigAction 174
-#define ·RtSigProcMask 175
-#define ·RtSigPending 176
-#define ·RtSigTimedWait 177
-#define ·RtSigQueueInfo 178
-#define ·RtSigSuspend 179
-#define ·PRead64 180
-#define ·PWrite64 181
-#define ·Chown 182
-#define ·GetCwd 183
-#define ·CapGet 184
-#define ·CapSet 185
-#define ·SiGaltStack 186
-#define ·SendFile 187
-#define ·GetPMsg 188
-#define ·PutPMsg 189
-#define ·VFork 190
-#define ·UGetRLimit 191
-#define ·MMap2 192
-#define ·Truncate64 193
-#define ·FTruncate64 194
-#define ·Stat64 195
-#define ·LStat64 196
-#define ·FStat64 197
-#define ·LChown32 198
-#define ·GetUid32 199
-#define ·GetGid32 200
-#define ·GetEUid32 201
-#define ·GetEGid32 202
-#define ·SetReUid32 203
-#define ·SetReGid32 204
-#define ·GetGroups32 205
-#define ·SetGroups32 206
-#define ·FChown32 207
-#define ·SetResUid32 208
-#define ·GetResUid32 209
-#define ·SetResGid32 210
-#define ·GetResGid32 211
-#define ·Chown32 212
-#define ·SetUid32 213
-#define ·SetGid32 214
-#define ·SetFsUid32 215
-#define ·SetFsGid32 216
-#define ·PivotRoot 217
-#define ·MLoaded 218
-#define ·MAdvise 219
-#define ·GetDents64 220
-#define ·FCntl64 221
-#define ·GetTId 224
-#define ·ReadAhead 225
-#define ·SetXAttr 226
-#define ·LSetXAttr 227
-#define ·FSetXAttr 228
-#define ·GetXAttr 229
-#define ·LGetXAttr 230
-#define ·FGetXAttr 231
-#define ·ListXAttr 232
-#define ·LListXAttr 233
-#define ·FListXAttr 234
-#define ·RemoveXAttr 235
-#define ·LRemoveXAttr 236
-#define ·FRemoveXAttr 237
-#define ·TKill 238
-#define ·SendFile64 239
-#define ·Futex 240
-#define ·SchedSetAffinity 241
-#define ·SchedGetAffinity 242
-#define ·SetThreadArea 243
-#define ·GetThreadArea 244
-#define ·IoSetUp 245
-#define ·IoDestroy 246
-#define ·IoGetEvents 247
-#define ·IoSubmit 248
-#define ·IoCancel 249
-#define ·FAdvise64 250
-#define ·ExitGroup 252
-#define ·LookupDCookie 253
-#define ·EPollCreate 254
-#define ·EPollCtl 255
-#define ·EPollWait 256
-#define ·RemapFilePages 257
-#define ·SetTIdAddress 258
-#define ·TimerCreate 259
-#define ·StatFs64 268
-#define ·FStatFs64 269
-#define ·TgKill 270
-#define ·UTimes 271
-#define ·FAdvise6464 272
-#define ·VServer 273
-#define ·MBind 274
-#define ·GetMemPolicy 275
-#define ·SetMemPolicy 276
-#define ·MQOpen 277
-#define ·KExecLoad 283
-#define ·WaitId 284
-#define ·AddKey 286
-#define ·RequestKey 287
-#define ·KeyCtl 288
-#define ·IoPrIoSet 289
-#define ·IoPrIoGet 290
-#define ·INotifyInIt 291
-#define ·INotifyAddWatch 292
-#define ·INotifyRmWatch 293
-#define ·MigratePages 294
-#define ·OpenAt 295
-#define ·MkdirAt 296
-#define ·MkNodAt 297
-#define ·FChownAt 298
-#define ·FuTimesAt 299
-#define ·FStatAt64 300
-#define ·UnlinkAt 301
-#define ·RenameAt 302
-#define ·LinkAt 303
-#define ·SymLinkAt 304
-#define ·ReadLinkAt 305
-#define ·FChmodAt 306
-#define ·FAccessAt 307
-#define ·PSelect6 308
-#define ·PPoll 309
-#define ·UnShare 310
-#define ·SetRobustList 311
-#define ·GetRobustList 312
-#define ·Splice 313
-#define ·SyncFileRange 314
-#define ·Tee 315
-#define ·VmSplice 316
-#define ·MovePages 317
-#define ·GetCpu 318
-#define ·EPollPWait 319
-#define ·UTimeNsAt 320
-#define ·SignalFd 321
-#define ·TimerFdCreate 322
-#define ·EventFd 323
-#define ·FAllocate 324
-#define ·TimerFdSetTime32 325
-#define ·TimerFdGetTime32 326
-#define ·SignalFd4 327
-#define ·EventFd2 328
-#define ·EPollCreate1 329
-#define ·Dup3 330
-#define ·Pipe2 331
-#define ·INotifyInIt1 332
-#define ·PreAdv 333
-#define ·PWriteV 334
-#define ·RtTgSigQueueInfo 335
-#define ·PerFEventOpen 336
-#define ·RecvMMsg 337
-#define ·FaNotifyInIt 338
-#define ·FaNotifyMark 339
-#define ·PrLimit64 340
-#define ·NameToHandleAt 341
-#define ·OpenByHandleAt 342
-#define ·ClockAdjTime 343
-#define ·SyncFs 344
-#define ·SendMMsg 345
-#define ·SetNs 346
-#define ·ProcessVmReadV 347
-#define ·ProcessVmWriteV 348
-#define ·KCmp 349
-#define ·FinItModule 350
-#define ·SchedSetAttr 351
-#define ·SchedGetAttr 352
-#define ·RenameAt2 353
-#define ·SeccoMp 354
-#define ·GetRandom 355
-#define ·MemFdCreate 356
-#define ·BpF 357
-#define ·ExecVeAt 358
-#define ·Socket 359
-#define ·SocketPair 360
-#define ·Bind 361
-#define ·Connect 362
-#define ·Listen 363
-#define ·Accept4 364
-#define ·GetSockOpt 365
-#define ·SetSockOpt 366
-#define ·GetSockName 367
-#define ·GetPeerName 368
-#define ·SendTo 369
-#define ·SendMsg 370
-#define ·RecvFrom 371
-#define ·RecvMsg 372
-#define ·Shutdown 373
-#define ·UserFaultFd 374
-#define ·MemBarrier 375
-#define ·MLock2 376
-#define ·CopyFileRange 377
-#define ·PreAdv2 378
-#define ·PWriteV2 379
-#define ·PKeyMProtect 380
-#define ·PKeyAllOc 381
-#define ·PKeyFree 382
-#define ·StatX 383
-#define ·ArchPrCtl 384
-#define ·IoPGetEvents 385
-#define ·RSeq 386
-#define ·SemGet 393
-#define ·SemCtl 394
-#define ·ShmGet 395
-#define ·ShmCtl 396
-#define ·ShmAt 397
-#define ·ShmDt 398
-#define ·MsgGet 399
-#define ·MsgSend 400
-#define ·MsgRecv 401
-#define ·MsgCtl 402
-#define ·ClockGetTime64 403
-#define ·ClockSetTime64 404
-#define ·ClockAdjTime64 405
-#define ·ClockGetResTime64 406
-#define ·ClockNanoSleepTime64 407
-#define ·TimerGetTime64 408
-#define ·TimerSetTime64 409
-#define ·TimerFdGetTime64 410
-#define ·TimerFdSetTime64 411
-#define ·UTimeNsAtTime64 412
-#define ·PSelect6Time64 413
-#define ·PPollTime64 414
-#define ·IoPGetEventsTime64 416
-#define ·RecvMMsgTime64 417
-#define ·MQTimedSendTime64 418
-#define ·MQTimedReceiveTime64 419
-#define ·SemTimeDopTime64 420
-#define ·RtSigTimedWaitTime64 421
-#define ·FutexTime64 422
-#define ·SchedRrGetIntervalTime64 423
-#define ·PidFdSendSignal 424
-#define ·IoUringSetUp 425
-#define ·IoUringEnter 426
-#define ·IoUringRegister 427
-#define ·OpenTree 428
-#define ·MoveMount 429
-#define ·FsOpen 430
-#define ·FsConfig 431
-#define ·FsMount 432
-#define ·FsPick 433
-#define ·PidFdOpen 434
-#define ·Clone3 435
-#define ·CloseRange 436
-#define ·OpenAt2 437
-#define ·PidFdGetFd 438
-#define ·FAccessAt2 439
+#define ·RestartSysCall 0
+#define ·Exit 1
+#define ·Fork 2
+#define ·Read 3
+#define ·Write 4
+#define ·Open 5
+#define ·Close 6
+#define ·WaitPid 7
+#define ·Create 8
+#define ·Link 9
+#define ·Unlink 10
+#define ·ExecVe 11
+#define ·Chdir 12
+#define ·Time 13
+#define ·MkNod 14
+#define ·Chmod 15
+#define ·LChown 16
+#define ·Break 17
+#define ·OldStat 18
+#define ·LSeek 19
+#define ·GetPid 20
+#define ·Mount 21
+#define ·UMount 22
+#define ·SetUid 23
+#define ·GetUid 24
+#define ·STime 25
+#define ·PTrace 26
+#define ·Alarm 27
+#define ·OldFStat 28
+#define ·Pause 29
+#define ·UTime 30
+#define ·STty 31
+#define ·GTty 32
+#define ·Access 33
+#define ·Nice 34
+#define ·FTime 35
+#define ·Sync 36
+#define ·Kill 37
+#define ·Rename 38
+#define ·Mkdir 39
+#define ·Rmdir 40
+#define ·Dup 41
+#define ·Pipe 42
+#define ·Times 43
+#define ·Prof 44
+#define ·Brk 45
+#define ·SetGid 46
+#define ·GetGid 47
+#define ·Signal 48
+#define ·GetEUid 49
+#define ·GetEGid 50
+#define ·Acct 51
+#define ·UMount2 52
+#define ·Lock 53
+#define ·IoCtl 54
+#define ·FCntl 55
+#define ·MPx 56
+#define ·SetPGid 57
+#define ·ULimit 58
+#define ·OldOldUName 59
+#define ·UMask 60
+#define ·Chroot 61
+#define ·UStat 62
+#define ·Dup2 63
+#define ·GetPPid 64
+#define ·GetPGrp 65
+#define ·SetSId 66
+#define ·SigAction 67
+#define ·SGetMask 68
+#define ·SSetMask 69
+#define ·SetReUid 70
+#define ·SetReGid 71
+#define ·SigSuspend 72
+#define ·SigPending 73
+#define ·SetHostname 74
+#define ·SetRLimit 75
+#define ·GetRUsage 77
+#define ·GetTimeOfDayTime32 78
+#define ·SetTimeOfDayTime32 79
+#define ·GetGroups 80
+#define ·SetGroups 81
+#define ·Select 82
+#define ·SymLink 83
+#define ·OldLStat 84
+#define ·ReadLink 85
+#define ·UseLib 86
+#define ·SwapOn 87
+#define ·Reboot 88
+#define ·ReadDir 89
+#define ·MMap 90
+#define ·MUnmap 91
+#define ·Truncate 92
+#define ·FTruncate 93
+#define ·FChmod 94
+#define ·FChown 95
+#define ·GetPriority 96
+#define ·SetPriority 97
+#define ·ProfIl 98
+#define ·StatFs 99
+#define ·FStatFs 100
+#define ·IoPerm 101
+#define ·SocketCall 102
+#define ·SysLog 103
+#define ·SetITimer 104
+#define ·GetITimer 105
+#define ·Stat 106
+#define ·LStat 107
+#define ·FStat 108
+#define ·OldUName 109
+#define ·IoPl 110
+#define ·VHangUp 111
+#define ·Idle 112
+#define ·Vm86Old 113
+#define ·Wait4 114
+#define ·SwapOff 115
+#define ·SysInfo 116
+#define ·Ipc 117
+#define ·FSync 118
+#define ·SigReturn 119
+#define ·Clone 120
+#define ·SetDomainName 121
+#define ·UName 122
+#define ·ModifyLdT 123
+#define ·AdjTimex 124
+#define ·MProtect 125
+#define ·SigProcMask 126
+#define ·CreateModule 127
+#define ·InItModule 128
+#define ·DeleteModule 129
+#define ·GetKernelSyms 130
+#define ·QuotaCtl 131
+#define ·GetPGid 132
+#define ·FChdir 133
+#define ·BdFlush 134
+#define ·SysFs 135
+#define ·Personality 136
+#define ·AFsSysCall 137
+#define ·SetFsUid 138
+#define ·SetFsGid 139
+#define ·LlSeek 140
+#define ·GetDents 141
+#define ·NewSelect 142
+#define ·FLock 143
+#define ·MSync 144
+#define ·ReadV 145
+#define ·WriteV 146
+#define ·GetsId 147
+#define ·FdAtAsync 148
+#define ·SysCtl 149
+#define ·MLock 150
+#define ·MUnlock 151
+#define ·MLockAll 152
+#define ·MUnlockAll 153
+#define ·SchedSetParam 154
+#define ·SchedGetParam 155
+#define ·SchedSetScheduler 156
+#define ·SchedGetScheduler 157
+#define ·SchedYield 158
+#define ·SchedGetPriorityMax 159
+#define ·SchedGetPriorityMin 160
+#define ·SchedRrGetInterval 161
+#define ·NanoSleep 162
+#define ·MRemap 163
+#define ·SetResUid 164
+#define ·GetResUid 165
+#define ·Vm86 166
+#define ·QueryModule 167
+#define ·Poll 168
+#define ·NfsServCtl 169
+#define ·SetResGid 170
+#define ·GetResGid 171
+#define ·PrCtl 172
+#define ·RtSigReturn 173
+#define ·RtSigAction 174
+#define ·RtSigProcMask 175
+#define ·RtSigPending 176
+#define ·RtSigTimedWait 177
+#define ·RtSigQueueInfo 178
+#define ·RtSigSuspend 179
+#define ·PRead64 180
+#define ·PWrite64 181
+#define ·Chown 182
+#define ·GetCwd 183
+#define ·CapGet 184
+#define ·CapSet 185
+#define ·SiGaltStack 186
+#define ·SendFile 187
+#define ·GetPMsg 188
+#define ·PutPMsg 189
+#define ·VFork 190
+#define ·UGetRLimit 191
+#define ·MMap2 192
+#define ·Truncate64 193
+#define ·FTruncate64 194
+#define ·Stat64 195
+#define ·LStat64 196
+#define ·FStat64 197
+#define ·LChown32 198
+#define ·GetUid32 199
+#define ·GetGid32 200
+#define ·GetEUid32 201
+#define ·GetEGid32 202
+#define ·SetReUid32 203
+#define ·SetReGid32 204
+#define ·GetGroups32 205
+#define ·SetGroups32 206
+#define ·FChown32 207
+#define ·SetResUid32 208
+#define ·GetResUid32 209
+#define ·SetResGid32 210
+#define ·GetResGid32 211
+#define ·Chown32 212
+#define ·SetUid32 213
+#define ·SetGid32 214
+#define ·SetFsUid32 215
+#define ·SetFsGid32 216
+#define ·PivotRoot 217
+#define ·MLoaded 218
+#define ·MAdvise 219
+#define ·GetDents64 220
+#define ·FCntl64 221
+#define ·GetTId 224
+#define ·ReadAhead 225
+#define ·SetXAttr 226
+#define ·LSetXAttr 227
+#define ·FSetXAttr 228
+#define ·GetXAttr 229
+#define ·LGetXAttr 230
+#define ·FGetXAttr 231
+#define ·ListXAttr 232
+#define ·LListXAttr 233
+#define ·FListXAttr 234
+#define ·RemoveXAttr 235
+#define ·LRemoveXAttr 236
+#define ·FRemoveXAttr 237
+#define ·TKill 238
+#define ·SendFile64 239
+#define ·Futex 240
+#define ·SchedSetAffinity 241
+#define ·SchedGetAffinity 242
+#define ·SetThreadArea 243
+#define ·GetThreadArea 244
+#define ·IoSetUp 245
+#define ·IoDestroy 246
+#define ·IoGetEvents 247
+#define ·IoSubmit 248
+#define ·IoCancel 249
+#define ·FAdvise64 250
+#define ·ExitGroup 252
+#define ·LookupDCookie 253
+#define ·EPollCreate 254
+#define ·EPollCtl 255
+#define ·EPollWait 256
+#define ·RemapFilePages 257
+#define ·SetTIdAddress 258
+#define ·TimerCreate 259
+#define ·StatFs64 268
+#define ·FStatFs64 269
+#define ·TgKill 270
+#define ·UTimes 271
+#define ·FAdvise6464 272
+#define ·VServer 273
+#define ·MBind 274
+#define ·GetMemPolicy 275
+#define ·SetMemPolicy 276
+#define ·MQOpen 277
+#define ·KExecLoad 283
+#define ·WaitId 284
+#define ·AddKey 286
+#define ·RequestKey 287
+#define ·KeyCtl 288
+#define ·IoPrIoSet 289
+#define ·IoPrIoGet 290
+#define ·INotifyInIt 291
+#define ·INotifyAddWatch 292
+#define ·INotifyRmWatch 293
+#define ·MigratePages 294
+#define ·OpenAt 295
+#define ·MkdirAt 296
+#define ·MkNodAt 297
+#define ·FChownAt 298
+#define ·FuTimesAt 299
+#define ·FStatAt64 300
+#define ·UnlinkAt 301
+#define ·RenameAt 302
+#define ·LinkAt 303
+#define ·SymLinkAt 304
+#define ·ReadLinkAt 305
+#define ·FChmodAt 306
+#define ·FAccessAt 307
+#define ·PSelect6 308
+#define ·PPoll 309
+#define ·UnShare 310
+#define ·SetRobustList 311
+#define ·GetRobustList 312
+#define ·Splice 313
+#define ·SyncFileRange 314
+#define ·Tee 315
+#define ·VmSplice 316
+#define ·MovePages 317
+#define ·GetCpu 318
+#define ·EPollPWait 319
+#define ·UTimeNsAt 320
+#define ·SignalFd 321
+#define ·TimerFdCreate 322
+#define ·EventFd 323
+#define ·FAllocate 324
+#define ·TimerFdSetTime32 325
+#define ·TimerFdGetTime32 326
+#define ·SignalFd4 327
+#define ·EventFd2 328
+#define ·EPollCreate1 329
+#define ·Dup3 330
+#define ·Pipe2 331
+#define ·INotifyInIt1 332
+#define ·PreAdv 333
+#define ·PWriteV 334
+#define ·RtTgSigQueueInfo 335
+#define ·PerFEventOpen 336
+#define ·RecvMMsg 337
+#define ·FaNotifyInIt 338
+#define ·FaNotifyMark 339
+#define ·PrLimit64 340
+#define ·NameToHandleAt 341
+#define ·OpenByHandleAt 342
+#define ·ClockAdjTime 343
+#define ·SyncFs 344
+#define ·SendMMsg 345
+#define ·SetNs 346
+#define ·ProcessVmReadV 347
+#define ·ProcessVmWriteV 348
+#define ·KCmp 349
+#define ·FinItModule 350
+#define ·SchedSetAttr 351
+#define ·SchedGetAttr 352
+#define ·RenameAt2 353
+#define ·SeccoMp 354
+#define ·GetRandom 355
+#define ·MemFdCreate 356
+#define ·BpF 357
+#define ·ExecVeAt 358
+#define ·Socket 359
+#define ·SocketPair 360
+#define ·Bind 361
+#define ·Connect 362
+#define ·Listen 363
+#define ·Accept4 364
+#define ·GetSockOpt 365
+#define ·SetSockOpt 366
+#define ·GetSockName 367
+#define ·GetPeerName 368
+#define ·SendTo 369
+#define ·SendMsg 370
+#define ·RecvFrom 371
+#define ·RecvMsg 372
+#define ·Shutdown 373
+#define ·UserFaultFd 374
+#define ·MemBarrier 375
+#define ·MLock2 376
+#define ·CopyFileRange 377
+#define ·PreAdv2 378
+#define ·PWriteV2 379
+#define ·PKeyMProtect 380
+#define ·PKeyAllOc 381
+#define ·PKeyFree 382
+#define ·StatX 383
+#define ·ArchPrCtl 384
+#define ·IoPGetEvents 385
+#define ·RSeq 386
+#define ·SemGet 393
+#define ·SemCtl 394
+#define ·ShmGet 395
+#define ·ShmCtl 396
+#define ·ShmAt 397
+#define ·ShmDt 398
+#define ·MsgGet 399
+#define ·MsgSend 400
+#define ·MsgRecv 401
+#define ·MsgCtl 402
+#define ·ClockGetTime64 403
+#define ·ClockSetTime64 404
+#define ·ClockAdjTime64 405
+#define ·ClockGetResTime64 406
+#define ·ClockNanoSleepTime64 407
+#define ·TimerGetTime64 408
+#define ·TimerSetTime64 409
+#define ·TimerFdGetTime64 410
+#define ·TimerFdSetTime64 411
+#define ·UTimeNsAtTime64 412
+#define ·PSelect6Time64 413
+#define ·PPollTime64 414
+#define ·IoPGetEventsTime64 416
+#define ·RecvMMsgTime64 417
+#define ·MQTimedSendTime64 418
+#define ·MQTimedReceiveTime64 419
+#define ·SemTimeDopTime64 420
+#define ·RtSigTimedWaitTime64 421
+#define ·FutexTime64 422
+#define ·SchedRrGetIntervalTime64 423
+#define ·PidFdSendSignal 424
+#define ·IoUringSetUp 425
+#define ·IoUringEnter 426
+#define ·IoUringRegister 427
+#define ·OpenTree 428
+#define ·MoveMount 429
+#define ·FsOpen 430
+#define ·FsConfig 431
+#define ·FsMount 432
+#define ·FsPick 433
+#define ·PidFdOpen 434
+#define ·Clone3 435
+#define ·CloseRange 436
+#define ·OpenAt2 437
+#define ·PidFdGetFd 438
+#define ·FAccessAt2 439
/* assembly routines */
#define asm __asm__ __volatile__
diff --git a/sys/linux/port/arch/constants.h b/sys/linux/port/arch/constants.h
deleted file mode 100644
index b8d3878..0000000
--- a/sys/linux/port/arch/constants.h
+++ /dev/null
@@ -1,45 +0,0 @@
-#pragma once
-
-/* open */
-#define sys·OCreate 0x40u
-#define sys·ONoTTY 0x100u
-#define sys·OTrunc 0x200u
-#define sys·OAppend 0x400u
-#define sys·ONoBlock 0x800u
-#define sys·OSync 0x1000u
-#define sys·OAsync 0x2000u
-#define sys·OLargeFile 0x8000u
-#define sys·ODirectory 0x10000u
-#define sys·ONoFollow 0x20000u
-#define sys·OTmpFile 0x410000u
-
-/* mmap */
-#define sys·ProtNone 0
-#define sys·ProtRead 1
-#define sys·ProtWrite 2
-#define sys·ProtExec 4
-#define sys·ProtGrowsDown 0x01000000
-#define sys·ProtGrowsUp 0x02000000
-
-#define sys·MapFile 0
-#define sys·MapShared 0x01
-#define sys·MapPrivate 0x02
-#define sys·MapSharedValidate 0x03
-#define sys·MapType 0x0f
-#define sys·MapFixed 0x10
-#define sys·MapAnon 0x20
-#define sys·MapNoReserve 0x4000
-#define sys·MapGrowsDown 0x0100
-#define sys·MapDenyWrite 0x0800
-#define sys·MapExecutable 0x1000
-#define sys·MapLocked 0x2000
-#define sys·MapPopulate 0x8000
-#define sys·MapNonBlock 0x10000
-#define sys·MapStack 0x20000
-#define sys·MapHugetlb 0x40000
-#define sys·MapSync 0x80000
-#define sys·MapFixedNoReplace 0x100000
-
-#define sys·RemapCanMove 1
-#define sys·RemapFixed 2
-#define sys·RemapNoUnmap 4
diff --git a/sys/linux/port/arch/types.h b/sys/linux/port/arch/types.h
deleted file mode 100644
index 014e4cb..0000000
--- a/sys/linux/port/arch/types.h
+++ /dev/null
@@ -1,35 +0,0 @@
-#pragma once
-
-// XXX: os vs sys prefix...
-
-typedef struct os·Directory os·Directory;
-typedef struct os·DirEntry os·DirEntry;
-
-struct os·Directory
-{
- intptr off;
- int fd;
- int pad;
- int pos, end;
- /* buf needs fall on (off_t) 8 byte alignment */
- char buf[2048];
-};
-
-struct os·DirEntry
-{
- ulong ino; /* inode number */
- ulong off; /* offset to next entry (from start of directory */
- ushort len; /* length of entry (in bytes) */
- uchar type; /* filetype */
- char name[]; /* filename */
-};
-
-/* types of DirEntry (last byte) */
-#define os·EntryUnknown 0
-#define os·EntryFifo 1
-#define os·EntryChar 2
-#define os·EntryDir 4
-#define os·EntryBlock 6
-#define os·EntryFile 8
-#define os·EntryLink 10
-#define os·EntrySocket 12
diff --git a/sys/linux/port/os/constants.h b/sys/linux/port/os/constants.h
new file mode 100644
index 0000000..8abf1fa
--- /dev/null
+++ b/sys/linux/port/os/constants.h
@@ -0,0 +1,98 @@
+#pragma once
+
+/* open */
+#define sys·OCreate 0x40u
+#define sys·ONoTTY 0x100u
+#define sys·OTrunc 0x200u
+#define sys·OAppend 0x400u
+#define sys·ONoBlock 0x800u
+#define sys·OSync 0x1000u
+#define sys·OAsync 0x2000u
+#define sys·OLargeFile 0x8000u
+#define sys·ODirectory 0x10000u
+#define sys·ONoFollow 0x20000u
+#define sys·OTmpFile 0x410000u
+
+/* device modes */
+#define sys·ModeFile 0170000
+#define sys·ModeDir 0040000
+#define sys·ModeChar 0020000
+#define sys·ModeBlock 0060000
+#define sys·ModeBasic 0100000
+#define sys·ModeFifo 0010000
+#define sys·ModeLink 0120000
+#define sys·ModeSocket 0140000
+
+/* mmap */
+#define sys·ProtNone 0
+#define sys·ProtRead 1
+#define sys·ProtWrite 2
+#define sys·ProtExec 4
+#define sys·ProtGrowsDown 0x01000000
+#define sys·ProtGrowsUp 0x02000000
+
+#define sys·MapFile 0
+#define sys·MapShared 0x01
+#define sys·MapPrivate 0x02
+#define sys·MapSharedValidate 0x03
+#define sys·MapType 0x0f
+#define sys·MapFixed 0x10
+#define sys·MapAnon 0x20
+#define sys·MapNoReserve 0x4000
+#define sys·MapGrowsDown 0x0100
+#define sys·MapDenyWrite 0x0800
+#define sys·MapExecutable 0x1000
+#define sys·MapLocked 0x2000
+#define sys·MapPopulate 0x8000
+#define sys·MapNonBlock 0x10000
+#define sys·MapStack 0x20000
+#define sys·MapHugetlb 0x40000
+#define sys·MapSync 0x80000
+#define sys·MapFixedNoReplace 0x100000
+
+#define sys·RemapCanMove 1
+#define sys·RemapFixed 2
+#define sys·RemapNoUnmap 4
+
+/* types of DirEntry (last byte) */
+#define sys·EntryUnknown 0
+#define sys·EntryFifo 1
+#define sys·EntryChar 2
+#define sys·EntryDir 4
+#define sys·EntryBlock 6
+#define sys·EntryFile 8
+#define sys·EntryLink 10
+#define sys·EntrySocket 12
+
+/* at flags */
+#define sys·FdCwd (-100)
+
+#define sys·AtNoFollowLink 0x100
+#define sys·AtRemoveDir 0x200
+#define sys·AtFollowLink 0x400
+#define sys·AtEmptyPath 0x1000
+
+/* stat(x) */
+
+// flags
+#define sys·InfoSyncLegacy 0x0000
+#define sys·InfoSyncType 0x6000
+#define sys·InfoForceSync 0x2000
+#define sys·InfoNoSync 0x4000
+
+// masks
+#define sys·InfoType 0x00000001u /* want/got stx_mode & s_ifmt */
+#define sys·InfoMode 0x00000002u /* want/got stx_mode & ~s_ifmt */
+#define sys·InfoNLink 0x00000004u /* want/got stx_nlink */
+#define sys·InfoUid 0x00000008u /* want/got stx_uid */
+#define sys·InfoGid 0x00000010u /* want/got stx_gid */
+#define sys·InfoAccessTime 0x00000020u /* want/got stx_atime */
+#define sys·InfoModifyTime 0x00000040u /* want/got stx_mtime */
+#define sys·InfoChangeTime 0x00000080u /* want/got stx_ctime */
+#define sys·InfoInode 0x00000100u /* want/got stx_ino */
+#define sys·InfoSize 0x00000200u /* want/got stx_size */
+#define sys·InfoBlocks 0x00000400u /* want/got stx_blocks */
+#define sys·InfoBasic 0x000007ffu /* the stuff in the normal stat struct*/
+#define sys·InfoCreateTime 0x00000800u /* want/got stx_btime */
+#define sys·InfoMntId 0x00001000u /* got stx_mnt_id */
+#define sys·InfoAll (sys·InfoBasic|sys·InfoCreateTime)
diff --git a/sys/linux/port/arch/errno.h b/sys/linux/port/os/errno.h
index 9d7e66e..9d7e66e 100644
--- a/sys/linux/port/arch/errno.h
+++ b/sys/linux/port/os/errno.h
diff --git a/sys/linux/port/os/types.h b/sys/linux/port/os/types.h
new file mode 100644
index 0000000..6e5c0c6
--- /dev/null
+++ b/sys/linux/port/os/types.h
@@ -0,0 +1,72 @@
+#pragma once
+
+/*
+ * time
+ */
+
+/* timeval */
+typedef struct sys·TimeStamp sys·TimeStamp;
+
+struct sys·TimeStamp
+{
+ int64 sec;
+ uint32 nano;
+ int32 femto;
+};
+
+/*
+ * files
+ */
+
+typedef struct sys·Info sys·Info;
+typedef struct sys·Directory sys·Directory;
+typedef struct sys·DirEntry sys·DirEntry;
+
+/* statx */
+struct sys·Info
+{
+ uint32 mask;
+ uint32 blksize;
+ uint64 attr;
+ uint32 nlink;
+ uint32 uid;
+ uint32 gid;
+ uint16 mode;
+ uint16 _pad;
+ uint64 inode;
+ uint64 size;
+ uint64 nblk;
+ uint64 attrmask;
+
+ sys·TimeStamp access, create, status, modify;
+
+ struct{
+ uint32 major;
+ uint32 minor;
+ }spdev;
+ struct{
+ uint32 major;
+ uint32 minor;
+ }device;
+
+ uint64 spare[14];
+};
+
+struct sys·Directory
+{
+ intptr off;
+ int fd;
+ int pad;
+ int pos, end;
+ /* buf needs fall on (off_t) 8 byte alignment */
+ char buf[2048];
+};
+
+struct sys·DirEntry
+{
+ ulong ino; /* inode number */
+ ulong off; /* offset to next entry (from start of directory */
+ ushort len; /* length of entry (in bytes) */
+ uchar type; /* filetype */
+ char name[]; /* filename */
+};
diff --git a/sys/linux/riscv64/arch/bits.h b/sys/linux/riscv64/arch/bits.h
index b09b933..c96db8b 100644
--- a/sys/linux/riscv64/arch/bits.h
+++ b/sys/linux/riscv64/arch/bits.h
@@ -6,6 +6,7 @@
#define INT32 int
#define INT64 long
#define ADDR long
+#define REG long
/* abi */
#define INTPTR_MIN INT64_MIN
diff --git a/sys/linux/riscv64/arch/types.h b/sys/linux/riscv64/arch/types.h
new file mode 100644
index 0000000..af908d2
--- /dev/null
+++ b/sys/linux/riscv64/arch/types.h
@@ -0,0 +1,27 @@
+#pragma once
+
+#if 0
+struct sys·Info
+{
+ uint64 devid;
+ uint64 inode;
+ uint mode;
+
+ uregister_t nlinks;
+
+ uint uid;
+ uint gid;
+ uint64 spdevid;
+ ulong _pad;
+ intptr len;
+ long blklen;
+ int __pad;
+ int64 nblock;
+
+ sys·TimeNano access;
+ sys·TimeNano modify;
+ sys·TimeNano change;
+
+ unsigned _unused[2];
+}
+#endif
diff --git a/sys/linux/riscv64/syscall.h b/sys/linux/riscv64/syscall.h
index b4f419c..e565dd6 100644
--- a/sys/linux/riscv64/syscall.h
+++ b/sys/linux/riscv64/syscall.h
@@ -1,298 +1,298 @@
-#define ·IoSetUp 0
-#define ·IoDestroy 1
-#define ·IoSubmit 2
-#define ·IoCancel 3
-#define ·IoGetEvents 4
-#define ·SetXAttr 5
-#define ·LSetXAttr 6
-#define ·FSetXAttr 7
-#define ·GetXAttr 8
-#define ·LGetXAttr 9
-#define ·FGetXAttr 10
-#define ·ListXAttr 11
-#define ·LListXAttr 12
-#define ·FListXAttr 13
-#define ·RemoveXAttr 14
-#define ·LRemoveXAttr 15
-#define ·FRemoveXAttr 16
-#define ·GetCwd 17
-#define ·LookupDCookie 18
-#define ·EventFd2 19
-#define ·EPollCreate1 20
-#define ·EPollCtl 21
-#define ·EPollPWait 22
-#define ·Dup 23
-#define ·Dup3 24
-#define ·FCntl 25
-#define ·INotifyInIt1 26
-#define ·INotifyAddWatch 27
-#define ·INotifyRmWatch 28
-#define ·IoCtl 29
-#define ·IoPrIoSet 30
-#define ·IoPrIoGet 31
-#define ·FLock 32
-#define ·MkNodAt 33
-#define ·MkdirAt 34
-#define ·UnlinkAt 35
-#define ·SymLinkAt 36
-#define ·LinkAt 37
-#define ·UMount2 39
-#define ·Mount 40
-#define ·PivotRoot 41
-#define ·NfsServCtl 42
-#define ·StatFs 43
-#define ·FStatFs 44
-#define ·Truncate 45
-#define ·FTruncate 46
-#define ·FAllocate 47
-#define ·FAccessAt 48
-#define ·Chdir 49
-#define ·FChdir 50
-#define ·Chroot 51
-#define ·FChmod 52
-#define ·FChmodAt 53
-#define ·FChownAt 54
-#define ·FChown 55
-#define ·OpenAt 56
-#define ·Close 57
-#define ·VHangUp 58
-#define ·Pipe2 59
-#define ·QuotaCtl 60
-#define ·GetDents64 61
-#define ·LSeek 62
-#define ·Read 63
-#define ·Write 64
-#define ·ReadV 65
-#define ·WriteV 66
-#define ·PRead64 67
-#define ·PWrite64 68
-#define ·PreAdv 69
-#define ·PWriteV 70
-#define ·SendFile 71
-#define ·PSelect6 72
-#define ·PPoll 73
-#define ·SignalFd4 74
-#define ·VmSplice 75
-#define ·Splice 76
-#define ·Tee 77
-#define ·ReadLinkAt 78
-#define ·FStatAt 79
-#define ·FStat 80
-#define ·Sync 81
-#define ·FSync 82
-#define ·FdAtAsync 83
-#define ·SyncFileRange 84
-#define ·TimerFdCreate 85
-#define ·TimerFdSetTime 86
-#define ·TimerFdGetTime 87
-#define ·UTimeNsAt 88
-#define ·Acct 89
-#define ·CapGet 90
-#define ·CapSet 91
-#define ·Personality 92
-#define ·Exit 93
-#define ·ExitGroup 94
-#define ·WaitId 95
-#define ·SetTIdAddress 96
-#define ·UnShare 97
-#define ·Futex 98
-#define ·SetRobustList 99
-#define ·GetRobustList 100
-#define ·NanoSleep 101
-#define ·GetITimer 102
-#define ·SetITimer 103
-#define ·KExecLoad 104
-#define ·InItModule 105
-#define ·DeleteModule 106
-#define ·TimerCreate 107
-#define ·TimerGetTime 108
-#define ·TimerGetOverrun 109
-#define ·TimerSetTime 110
-#define ·TimerDelete 111
-#define ·ClockSetTime 112
-#define ·ClockGetTime 113
-#define ·ClockGetRes 114
-#define ·ClockNanoSleep 115
-#define ·SysLog 116
-#define ·PTrace 117
-#define ·SchedSetParam 118
-#define ·SchedSetScheduler 119
-#define ·SchedGetScheduler 120
-#define ·SchedGetParam 121
-#define ·SchedSetAffinity 122
-#define ·SchedGetAffinity 123
-#define ·SchedYield 124
-#define ·SchedGetPriorityMax 125
-#define ·SchedGetPriorityMin 126
-#define ·SchedRrGetInterval 127
-#define ·RestartSysCall 128
-#define ·Kill 129
-#define ·TKill 130
-#define ·TgKill 131
-#define ·SiGaltStack 132
-#define ·RtSigSuspend 133
-#define ·RtSigAction 134
-#define ·RtSigProcMask 135
-#define ·RtSigPending 136
-#define ·RtSigTimedWait 137
-#define ·RtSigQueueInfo 138
-#define ·RtSigReturn 139
-#define ·SetPriority 140
-#define ·GetPriority 141
-#define ·Reboot 142
-#define ·SetReGid 143
-#define ·SetGid 144
-#define ·SetReUid 145
-#define ·SetUid 146
-#define ·SetResUid 147
-#define ·GetResUid 148
-#define ·SetResGid 149
-#define ·GetResGid 150
-#define ·SetFsUid 151
-#define ·SetFsGid 152
-#define ·Times 153
-#define ·SetPGid 154
-#define ·GetPGid 155
-#define ·GetsId 156
-#define ·SetSId 157
-#define ·GetGroups 158
-#define ·SetGroups 159
-#define ·UName 160
-#define ·SetHostname 161
-#define ·SetDomainName 162
-#define ·GetRLimit 163
-#define ·SetRLimit 164
-#define ·GetRUsage 165
-#define ·UMask 166
-#define ·PrCtl 167
-#define ·GetCpu 168
-#define ·GetTimeOfDay 169
-#define ·SetTimeOfDay 170
-#define ·AdjTimex 171
-#define ·GetPid 172
-#define ·GetPPid 173
-#define ·GetUid 174
-#define ·GetEUid 175
-#define ·GetGid 176
-#define ·GetEGid 177
-#define ·GetTId 178
-#define ·SysInfo 179
-#define ·MQOpen 180
-#define ·MQUnlink 181
-#define ·MQTimedSend 182
-#define ·MQTimedReceive 183
-#define ·MQNotify 184
-#define ·MQGetSetAttr 185
-#define ·MsgGet 186
-#define ·MsgCtl 187
-#define ·MsgRecv 188
-#define ·MsgSend 189
-#define ·SemGet 190
-#define ·SemCtl 191
-#define ·SemTimeDop 192
-#define ·SemOp 193
-#define ·ShmGet 194
-#define ·ShmCtl 195
-#define ·ShmAt 196
-#define ·ShmDt 197
-#define ·Socket 198
-#define ·SocketPair 199
-#define ·Bind 200
-#define ·Listen 201
-#define ·Accept 202
-#define ·Connect 203
-#define ·GetSockName 204
-#define ·GetPeerName 205
-#define ·SendTo 206
-#define ·RecvFrom 207
-#define ·SetSockOpt 208
-#define ·GetSockOpt 209
-#define ·Shutdown 210
-#define ·SendMsg 211
-#define ·RecvMsg 212
-#define ·ReadAhead 213
-#define ·Brk 214
-#define ·MUnmap 215
-#define ·MRemap 216
-#define ·AddKey 217
-#define ·RequestKey 218
-#define ·KeyCtl 219
-#define ·Clone 220
-#define ·ExecVe 221
-#define ·MMap 222
-#define ·FAdvise64 223
-#define ·SwapOn 224
-#define ·SwapOff 225
-#define ·MProtect 226
-#define ·MSync 227
-#define ·MLock 228
-#define ·MUnlock 229
-#define ·MLockAll 230
-#define ·MUnlockAll 231
-#define ·MLoaded 232
-#define ·MAdvise 233
-#define ·RemapFilePages 234
-#define ·MBind 235
-#define ·GetMemPolicy 236
-#define ·SetMemPolicy 237
-#define ·MigratePages 238
-#define ·MovePages 239
-#define ·RtTgSigQueueInfo 240
-#define ·PerFEventOpen 241
-#define ·Accept4 242
-#define ·RecvMMsg 243
-#define ·ArchSpecificSysCall 244
-#define ·Wait4 260
-#define ·PrLimit64 261
-#define ·FaNotifyInIt 262
-#define ·FaNotifyMark 263
-#define ·NameToHandleAt 264
-#define ·OpenByHandleAt 265
-#define ·ClockAdjTime 266
-#define ·SyncFs 267
-#define ·SetNs 268
-#define ·SendMMsg 269
-#define ·ProcessVmReadV 270
-#define ·ProcessVmWriteV 271
-#define ·KCmp 272
-#define ·FinItModule 273
-#define ·SchedSetAttr 274
-#define ·SchedGetAttr 275
-#define ·RenameAt2 276
-#define ·SeccoMp 277
-#define ·GetRandom 278
-#define ·MemFdCreate 279
-#define ·BpF 280
-#define ·ExecVeAt 281
-#define ·UserFaultFd 282
-#define ·MemBarrier 283
-#define ·MLock2 284
-#define ·CopyFileRange 285
-#define ·PreAdv2 286
-#define ·PWriteV2 287
-#define ·PKeyMProtect 288
-#define ·PKeyAllOc 289
-#define ·PKeyFree 290
-#define ·StatX 291
-#define ·IoPGetEvents 292
-#define ·RSeq 293
-#define ·KExecFileLoad 294
-#define ·PidFdSendSignal 424
-#define ·IoUringSetUp 425
-#define ·IoUringEnter 426
-#define ·IoUringRegister 427
-#define ·OpenTree 428
-#define ·MoveMount 429
-#define ·FsOpen 430
-#define ·FsConfig 431
-#define ·FsMount 432
-#define ·FsPick 433
-#define ·PidFdOpen 434
-#define ·Clone3 435
-#define ·CloseRange 436
-#define ·OpenAt2 437
-#define ·PidFdGetFd 438
-#define ·FAccessAt2 439
+#define ·IoSetUp 0
+#define ·IoDestroy 1
+#define ·IoSubmit 2
+#define ·IoCancel 3
+#define ·IoGetEvents 4
+#define ·SetXAttr 5
+#define ·LSetXAttr 6
+#define ·FSetXAttr 7
+#define ·GetXAttr 8
+#define ·LGetXAttr 9
+#define ·FGetXAttr 10
+#define ·ListXAttr 11
+#define ·LListXAttr 12
+#define ·FListXAttr 13
+#define ·RemoveXAttr 14
+#define ·LRemoveXAttr 15
+#define ·FRemoveXAttr 16
+#define ·GetCwd 17
+#define ·LookupDCookie 18
+#define ·EventFd2 19
+#define ·EPollCreate1 20
+#define ·EPollCtl 21
+#define ·EPollPWait 22
+#define ·Dup 23
+#define ·Dup3 24
+#define ·FCntl 25
+#define ·INotifyInIt1 26
+#define ·INotifyAddWatch 27
+#define ·INotifyRmWatch 28
+#define ·IoCtl 29
+#define ·IoPrIoSet 30
+#define ·IoPrIoGet 31
+#define ·FLock 32
+#define ·MkNodAt 33
+#define ·MkdirAt 34
+#define ·UnlinkAt 35
+#define ·SymLinkAt 36
+#define ·LinkAt 37
+#define ·UMount2 39
+#define ·Mount 40
+#define ·PivotRoot 41
+#define ·NfsServCtl 42
+#define ·StatFs 43
+#define ·FStatFs 44
+#define ·Truncate 45
+#define ·FTruncate 46
+#define ·FAllocate 47
+#define ·FAccessAt 48
+#define ·Chdir 49
+#define ·FChdir 50
+#define ·Chroot 51
+#define ·FChmod 52
+#define ·FChmodAt 53
+#define ·FChownAt 54
+#define ·FChown 55
+#define ·OpenAt 56
+#define ·Close 57
+#define ·VHangUp 58
+#define ·Pipe2 59
+#define ·QuotaCtl 60
+#define ·GetDents64 61
+#define ·LSeek 62
+#define ·Read 63
+#define ·Write 64
+#define ·ReadV 65
+#define ·WriteV 66
+#define ·PRead64 67
+#define ·PWrite64 68
+#define ·PreAdv 69
+#define ·PWriteV 70
+#define ·SendFile 71
+#define ·PSelect6 72
+#define ·PPoll 73
+#define ·SignalFd4 74
+#define ·VmSplice 75
+#define ·Splice 76
+#define ·Tee 77
+#define ·ReadLinkAt 78
+#define ·FStatAt 79
+#define ·FStat 80
+#define ·Sync 81
+#define ·FSync 82
+#define ·FdAtAsync 83
+#define ·SyncFileRange 84
+#define ·TimerFdCreate 85
+#define ·TimerFdSetTime 86
+#define ·TimerFdGetTime 87
+#define ·UTimeNsAt 88
+#define ·Acct 89
+#define ·CapGet 90
+#define ·CapSet 91
+#define ·Personality 92
+#define ·Exit 93
+#define ·ExitGroup 94
+#define ·WaitId 95
+#define ·SetTIdAddress 96
+#define ·UnShare 97
+#define ·Futex 98
+#define ·SetRobustList 99
+#define ·GetRobustList 100
+#define ·NanoSleep 101
+#define ·GetITimer 102
+#define ·SetITimer 103
+#define ·KExecLoad 104
+#define ·InItModule 105
+#define ·DeleteModule 106
+#define ·TimerCreate 107
+#define ·TimerGetTime 108
+#define ·TimerGetOverrun 109
+#define ·TimerSetTime 110
+#define ·TimerDelete 111
+#define ·ClockSetTime 112
+#define ·ClockGetTime 113
+#define ·ClockGetRes 114
+#define ·ClockNanoSleep 115
+#define ·SysLog 116
+#define ·PTrace 117
+#define ·SchedSetParam 118
+#define ·SchedSetScheduler 119
+#define ·SchedGetScheduler 120
+#define ·SchedGetParam 121
+#define ·SchedSetAffinity 122
+#define ·SchedGetAffinity 123
+#define ·SchedYield 124
+#define ·SchedGetPriorityMax 125
+#define ·SchedGetPriorityMin 126
+#define ·SchedRrGetInterval 127
+#define ·RestartSysCall 128
+#define ·Kill 129
+#define ·TKill 130
+#define ·TgKill 131
+#define ·SiGaltStack 132
+#define ·RtSigSuspend 133
+#define ·RtSigAction 134
+#define ·RtSigProcMask 135
+#define ·RtSigPending 136
+#define ·RtSigTimedWait 137
+#define ·RtSigQueueInfo 138
+#define ·RtSigReturn 139
+#define ·SetPriority 140
+#define ·GetPriority 141
+#define ·Reboot 142
+#define ·SetReGid 143
+#define ·SetGid 144
+#define ·SetReUid 145
+#define ·SetUid 146
+#define ·SetResUid 147
+#define ·GetResUid 148
+#define ·SetResGid 149
+#define ·GetResGid 150
+#define ·SetFsUid 151
+#define ·SetFsGid 152
+#define ·Times 153
+#define ·SetPGid 154
+#define ·GetPGid 155
+#define ·GetsId 156
+#define ·SetSId 157
+#define ·GetGroups 158
+#define ·SetGroups 159
+#define ·UName 160
+#define ·SetHostname 161
+#define ·SetDomainName 162
+#define ·GetRLimit 163
+#define ·SetRLimit 164
+#define ·GetRUsage 165
+#define ·UMask 166
+#define ·PrCtl 167
+#define ·GetCpu 168
+#define ·GetTimeOfDay 169
+#define ·SetTimeOfDay 170
+#define ·AdjTimex 171
+#define ·GetPid 172
+#define ·GetPPid 173
+#define ·GetUid 174
+#define ·GetEUid 175
+#define ·GetGid 176
+#define ·GetEGid 177
+#define ·GetTId 178
+#define ·SysInfo 179
+#define ·MQOpen 180
+#define ·MQUnlink 181
+#define ·MQTimedSend 182
+#define ·MQTimedReceive 183
+#define ·MQNotify 184
+#define ·MQGetSetAttr 185
+#define ·MsgGet 186
+#define ·MsgCtl 187
+#define ·MsgRecv 188
+#define ·MsgSend 189
+#define ·SemGet 190
+#define ·SemCtl 191
+#define ·SemTimeDop 192
+#define ·SemOp 193
+#define ·ShmGet 194
+#define ·ShmCtl 195
+#define ·ShmAt 196
+#define ·ShmDt 197
+#define ·Socket 198
+#define ·SocketPair 199
+#define ·Bind 200
+#define ·Listen 201
+#define ·Accept 202
+#define ·Connect 203
+#define ·GetSockName 204
+#define ·GetPeerName 205
+#define ·SendTo 206
+#define ·RecvFrom 207
+#define ·SetSockOpt 208
+#define ·GetSockOpt 209
+#define ·Shutdown 210
+#define ·SendMsg 211
+#define ·RecvMsg 212
+#define ·ReadAhead 213
+#define ·Brk 214
+#define ·MUnmap 215
+#define ·MRemap 216
+#define ·AddKey 217
+#define ·RequestKey 218
+#define ·KeyCtl 219
+#define ·Clone 220
+#define ·ExecVe 221
+#define ·MMap 222
+#define ·FAdvise64 223
+#define ·SwapOn 224
+#define ·SwapOff 225
+#define ·MProtect 226
+#define ·MSync 227
+#define ·MLock 228
+#define ·MUnlock 229
+#define ·MLockAll 230
+#define ·MUnlockAll 231
+#define ·MLoaded 232
+#define ·MAdvise 233
+#define ·RemapFilePages 234
+#define ·MBind 235
+#define ·GetMemPolicy 236
+#define ·SetMemPolicy 237
+#define ·MigratePages 238
+#define ·MovePages 239
+#define ·RtTgSigQueueInfo 240
+#define ·PerFEventOpen 241
+#define ·Accept4 242
+#define ·RecvMMsg 243
+#define ·ArchSpecificSysCall 244
+#define ·Wait4 260
+#define ·PrLimit64 261
+#define ·FaNotifyInIt 262
+#define ·FaNotifyMark 263
+#define ·NameToHandleAt 264
+#define ·OpenByHandleAt 265
+#define ·ClockAdjTime 266
+#define ·SyncFs 267
+#define ·SetNs 268
+#define ·SendMMsg 269
+#define ·ProcessVmReadV 270
+#define ·ProcessVmWriteV 271
+#define ·KCmp 272
+#define ·FinItModule 273
+#define ·SchedSetAttr 274
+#define ·SchedGetAttr 275
+#define ·RenameAt2 276
+#define ·SeccoMp 277
+#define ·GetRandom 278
+#define ·MemFdCreate 279
+#define ·BpF 280
+#define ·ExecVeAt 281
+#define ·UserFaultFd 282
+#define ·MemBarrier 283
+#define ·MLock2 284
+#define ·CopyFileRange 285
+#define ·PreAdv2 286
+#define ·PWriteV2 287
+#define ·PKeyMProtect 288
+#define ·PKeyAllOc 289
+#define ·PKeyFree 290
+#define ·StatX 291
+#define ·IoPGetEvents 292
+#define ·RSeq 293
+#define ·KExecFileLoad 294
+#define ·PidFdSendSignal 424
+#define ·IoUringSetUp 425
+#define ·IoUringEnter 426
+#define ·IoUringRegister 427
+#define ·OpenTree 428
+#define ·MoveMount 429
+#define ·FsOpen 430
+#define ·FsConfig 431
+#define ·FsMount 432
+#define ·FsPick 433
+#define ·PidFdOpen 434
+#define ·Clone3 435
+#define ·CloseRange 436
+#define ·OpenAt2 437
+#define ·PidFdGetFd 438
+#define ·FAccessAt2 439
/* assembly routines */
#define asm __asm__ __volatile__
diff --git a/sys/src/chmod.c b/sys/src/chmod.c
new file mode 100644
index 0000000..a37a037
--- /dev/null
+++ b/sys/src/chmod.c
@@ -0,0 +1,8 @@
+#include "internal.h"
+
+int
+sys·chmod(char *path, uint mode)
+{
+ long ret = syscall(·Chmod, path, mode);
+ return error(ret);
+}
diff --git a/sys/src/info.c b/sys/src/info.c
new file mode 100644
index 0000000..60f32a0
--- /dev/null
+++ b/sys/src/info.c
@@ -0,0 +1,7 @@
+#include "internal.h"
+
+int
+sys·info(char *path, sys·Info *file)
+{
+ return sys·infoat(sys·FdCwd, path, 0, sys·InfoAll, file);
+}
diff --git a/sys/src/infoat.c b/sys/src/infoat.c
new file mode 100644
index 0000000..ccbaf18
--- /dev/null
+++ b/sys/src/infoat.c
@@ -0,0 +1,8 @@
+#include "internal.h"
+
+int
+sys·infoat(int dirfd, char *path, int flag, uint mask, sys·Info *file)
+{
+ long ret = syscall(·StatX, dirfd, path, flag, mask, file);
+ return error(ret);
+}
diff --git a/sys/src/infofd.c b/sys/src/infofd.c
new file mode 100644
index 0000000..8b2973b
--- /dev/null
+++ b/sys/src/infofd.c
@@ -0,0 +1,10 @@
+#include "internal.h"
+#include <linux/stat.h>
+
+int
+sys·infofd(int fd, sys·Info *file)
+{
+ if(fd < 0)
+ return sys·ErrorBadFd;
+ return sys·infoat(fd, "", sys·AtEmptyPath, sys·InfoAll, file);
+}
diff --git a/sys/src/mkdir.c b/sys/src/mkdir.c
new file mode 100644
index 0000000..0672912
--- /dev/null
+++ b/sys/src/mkdir.c
@@ -0,0 +1,8 @@
+#include "internal.h"
+
+int
+sys·mkdir(char *path, uint mode)
+{
+ long ret = syscall(·MkdirAt, sys·FdCwd, path, mode);
+ return error(ret);
+}
diff --git a/sys/src/mkdirat.c b/sys/src/mkdirat.c
new file mode 100644
index 0000000..f6239d6
--- /dev/null
+++ b/sys/src/mkdirat.c
@@ -0,0 +1,8 @@
+#include "internal.h"
+
+int
+mkdirat(int dirfd, char *path, uint mode)
+{
+ long ret = syscall(·MkdirAt, dirfd, path, mode);
+ return error(ret);
+}
diff --git a/sys/src/mkfifo.c b/sys/src/mkfifo.c
new file mode 100644
index 0000000..da12f31
--- /dev/null
+++ b/sys/src/mkfifo.c
@@ -0,0 +1,8 @@
+#include "internal.h"
+
+int
+sys·mkfifo(char *path, uint mode)
+{
+ long ret = sys·mknode(path, mode|sys·ModeFifo, 0);
+ return error(ret);
+}
diff --git a/sys/src/mknode.c b/sys/src/mknode.c
new file mode 100644
index 0000000..1824664
--- /dev/null
+++ b/sys/src/mknode.c
@@ -0,0 +1,7 @@
+#include "internal.h"
+
+int
+sys·mknode(char *path, uint mode, uint64 device)
+{
+ return sys·mknodeat(sys·FdCwd, path, mode, device);
+}
diff --git a/sys/src/mknodeat.c b/sys/src/mknodeat.c
new file mode 100644
index 0000000..d592731
--- /dev/null
+++ b/sys/src/mknodeat.c
@@ -0,0 +1,8 @@
+#include "internal.h"
+
+int
+sys·mknodeat(int dirfd, char *path, uint mode, uint64 device)
+{
+ long ret = syscall(·MkNodAt, dirfd, path, mode, device);
+ return error(ret);
+}
diff --git a/sys/src/write.c b/sys/src/write.c
index 16c9f71..7863673 100644
--- a/sys/src/write.c
+++ b/sys/src/write.c
@@ -1,7 +1,7 @@
#include "internal.h"
int
-sys·write(int fd, intptr len, void *buf, intptr *ret)
+sys·write(int fd, uintptr len, void *buf, intptr *ret)
{
long err = *ret = syscall(·Write, fd, buf, len);
return err;