Initial commit: Schunix as it stands before the SchOS rename

An x86-64 operating system built from xv6, now largely rewritten: SMP,
a copy-on-write root filesystem (SchFS), PCI/USB/virtio drivers, a TTF
rasteriser, and a Linux-numbered syscall ABI.

No history before this point -- the tree was never under version control.
This commit exists so the rename that follows has something to undo to.
This commit is contained in:
Nexoniarz 2026-08-09 13:47:01 +02:00
commit d0f7acf9eb
275 changed files with 51417 additions and 0 deletions

110
lib/usys.S Normal file
View file

@ -0,0 +1,110 @@
#include "syscall.h"
#include "traps.h"
#define SYSCALL(name) \
.global name; \
name: \
mov $SYS_ ## name, %rax; \
mov %rcx, %r10 ;\
syscall ;\
ret
SYSCALL(fork)
.global _xv6_exit
_xv6_exit:
mov $SYS_exit, %rax
mov %rcx, %r10
syscall
ret
SYSCALL(wait)
SYSCALL(pipe)
SYSCALL(read)
SYSCALL(write)
SYSCALL(close)
SYSCALL(kill)
SYSCALL(exec)
SYSCALL(open)
SYSCALL(mknod)
SYSCALL(unlink)
SYSCALL(fstat)
SYSCALL(link)
SYSCALL(mkdir)
SYSCALL(chdir)
SYSCALL(dup)
SYSCALL(dup2)
SYSCALL(fcntl)
SYSCALL(getpid)
SYSCALL(sbrk)
SYSCALL(sleep)
SYSCALL(uptime)
SYSCALL(vga_sync)
SYSCALL(getmouse)
SYSCALL(lseek)
SYSCALL(reboot)
SYSCALL(shutdown)
SYSCALL(sigfillset)
SYSCALL(sigprocmask)
SYSCALL(sigwait)
SYSCALL(alarm)
SYSCALL(waitpid)
SYSCALL(setsid)
SYSCALL(mmap)
SYSCALL(munmap)
SYSCALL(delete)
SYSCALL(show)
SYSCALL(showstat)
SYSCALL(ftruncate)
SYSCALL(truncate)
SYSCALL(rename)
SYSCALL(symlink)
SYSCALL(readlink)
SYSCALL(getuid)
SYSCALL(geteuid)
SYSCALL(nanosleep)
SYSCALL(mprotect)
SYSCALL(ioctl)
SYSCALL(getcwd)
SYSCALL(arch_prctl)
SYSCALL(set_tid_address)
SYSCALL(set_robust_list)
SYSCALL(futex)
SYSCALL(clone)
SYSCALL(exit_group)
SYSCALL(wait4)
SYSCALL(getgid)
SYSCALL(getegid)
SYSCALL(umask)
SYSCALL(writev)
SYSCALL(readv)
SYSCALL(brk)
SYSCALL(prlimit)
SYSCALL(stat)
SYSCALL(lstat)
SYSCALL(access)
SYSCALL(openat)
SYSCALL(fchdir)
SYSCALL(enable_linux_abi)
SYSCALL(getrlimit)
SYSCALL(setuid)
SYSCALL(setgid)
SYSCALL(getsid)
SYSCALL(dup3)
SYSCALL(pipe2)
SYSCALL(clock_gettime)
SYSCALL(getppid)
SYSCALL(rt_sigaction)
SYSCALL(shmget)
SYSCALL(shmat)
SYSCALL(shmdt)
SYSCALL(socket)
SYSCALL(bind)
SYSCALL(listen)
SYSCALL(accept)
SYSCALL(connect)
SYSCALL(sendto)
SYSCALL(recvfrom)
SYSCALL(sockshutdown)
SYSCALL(socketpair)
SYSCALL(setsockopt)
SYSCALL(getsockopt)
SYSCALL(mount)