diff options
Diffstat (limited to 'sys/contrib/cloudabi/cloudabi_vdso_x86_64.c')
-rw-r--r-- | sys/contrib/cloudabi/cloudabi_vdso_x86_64.c | 950 |
1 files changed, 0 insertions, 950 deletions
diff --git a/sys/contrib/cloudabi/cloudabi_vdso_x86_64.c b/sys/contrib/cloudabi/cloudabi_vdso_x86_64.c deleted file mode 100644 index a493d716bb52..000000000000 --- a/sys/contrib/cloudabi/cloudabi_vdso_x86_64.c +++ /dev/null @@ -1,950 +0,0 @@ -// Copyright (c) 2016 Nuxi (https://nuxi.nl/) and contributors. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -// SUCH DAMAGE. -// -// This file is automatically generated. Do not edit. -// -// Source: https://github.com/NuxiNL/cloudabi - -#include <cloudabi_types.h> - -cloudabi_errno_t cloudabi_sys_clock_res_get(cloudabi_clockid_t clock_id, - cloudabi_timestamp_t *resolution) { - register uint64_t reg_rax asm("rax") = 0; - register uint64_t reg_rdi asm("rdi") = (uint64_t)clock_id; - register char okay; - asm volatile( - "\tsyscall\n" - "\tsetnc %0\n" - : "=r"(okay), "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi) - : "memory", "rcx", "rdx", "r8", "r9", "r10", "r11"); - if (okay) { - *resolution = (cloudabi_timestamp_t)reg_rax; - return 0; - } - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_clock_time_get(cloudabi_clockid_t clock_id, - cloudabi_timestamp_t precision, - cloudabi_timestamp_t *time) { - register uint64_t reg_rax asm("rax") = 1; - register uint64_t reg_rdi asm("rdi") = (uint64_t)clock_id; - register uint64_t reg_rsi asm("rsi") = (uint64_t)precision; - register char okay; - asm volatile( - "\tsyscall\n" - "\tsetnc %0\n" - : "=r"(okay), "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi) - : "memory", "rcx", "rdx", "r8", "r9", "r10", "r11"); - if (okay) { - *time = (cloudabi_timestamp_t)reg_rax; - return 0; - } - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_condvar_signal(_Atomic(cloudabi_condvar_t) * - condvar, - cloudabi_scope_t scope, - cloudabi_nthreads_t nwaiters) { - register uint64_t reg_rax asm("rax") = 2; - register uint64_t reg_rdi asm("rdi") = (uint64_t)condvar; - register uint64_t reg_rsi asm("rsi") = (uint64_t)scope; - register uint64_t reg_rdx asm("rdx") = (uint64_t)nwaiters; - asm volatile("\tsyscall\n" - : "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi), "r"(reg_rdx) - : "memory", "rcx", "r8", "r9", "r10", "r11"); - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_fd_close(cloudabi_fd_t fd) { - register uint64_t reg_rax asm("rax") = 3; - register uint64_t reg_rdi asm("rdi") = (uint64_t)fd; - asm volatile("\tsyscall\n" - : "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi) - : "memory", "rcx", "rdx", "r8", "r9", "r10", "r11"); - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_fd_create1(cloudabi_filetype_t type, - cloudabi_fd_t *fd) { - register uint64_t reg_rax asm("rax") = 4; - register uint64_t reg_rdi asm("rdi") = (uint64_t)type; - register char okay; - asm volatile( - "\tsyscall\n" - "\tsetnc %0\n" - : "=r"(okay), "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi) - : "memory", "rcx", "rdx", "r8", "r9", "r10", "r11"); - if (okay) { - *fd = (cloudabi_fd_t)reg_rax; - return 0; - } - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_fd_create2(cloudabi_filetype_t type, - cloudabi_fd_t *fd1, - cloudabi_fd_t *fd2) { - register uint64_t reg_rax asm("rax") = 5; - register uint64_t reg_rdi asm("rdi") = (uint64_t)type; - register uint64_t reg_rdx asm("rdx"); - register char okay; - asm volatile( - "\tsyscall\n" - "\tsetnc %0\n" - : "=r"(okay), "=r"(reg_rax), "=r"(reg_rdx) - : "r"(reg_rax), "r"(reg_rdi) - : "memory", "rcx", "r8", "r9", "r10", "r11"); - if (okay) { - *fd1 = (cloudabi_fd_t)reg_rax; - *fd2 = (cloudabi_fd_t)reg_rdx; - return 0; - } - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_fd_datasync(cloudabi_fd_t fd) { - register uint64_t reg_rax asm("rax") = 6; - register uint64_t reg_rdi asm("rdi") = (uint64_t)fd; - asm volatile("\tsyscall\n" - : "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi) - : "memory", "rcx", "rdx", "r8", "r9", "r10", "r11"); - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_fd_dup(cloudabi_fd_t from, cloudabi_fd_t *fd) { - register uint64_t reg_rax asm("rax") = 7; - register uint64_t reg_rdi asm("rdi") = (uint64_t)from; - register char okay; - asm volatile( - "\tsyscall\n" - "\tsetnc %0\n" - : "=r"(okay), "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi) - : "memory", "rcx", "rdx", "r8", "r9", "r10", "r11"); - if (okay) { - *fd = (cloudabi_fd_t)reg_rax; - return 0; - } - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_fd_pread(cloudabi_fd_t fd, - const cloudabi_iovec_t *iov, - size_t iovcnt, - cloudabi_filesize_t offset, - size_t *nread) { - register uint64_t reg_rax asm("rax") = 8; - register uint64_t reg_rdi asm("rdi") = (uint64_t)fd; - register uint64_t reg_rsi asm("rsi") = (uint64_t)iov; - register uint64_t reg_rdx asm("rdx") = (uint64_t)iovcnt; - register uint64_t reg_r10 asm("r10") = (uint64_t)offset; - register char okay; - asm volatile( - "\tsyscall\n" - "\tsetnc %0\n" - : "=r"(okay), "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi), "r"(reg_rdx), "r"(reg_r10) - : "memory", "rcx", "r8", "r9", "r11"); - if (okay) { - *nread = (size_t)reg_rax; - return 0; - } - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_fd_pwrite(cloudabi_fd_t fd, - const cloudabi_ciovec_t *iov, - size_t iovcnt, - cloudabi_filesize_t offset, - size_t *nwritten) { - register uint64_t reg_rax asm("rax") = 9; - register uint64_t reg_rdi asm("rdi") = (uint64_t)fd; - register uint64_t reg_rsi asm("rsi") = (uint64_t)iov; - register uint64_t reg_rdx asm("rdx") = (uint64_t)iovcnt; - register uint64_t reg_r10 asm("r10") = (uint64_t)offset; - register char okay; - asm volatile( - "\tsyscall\n" - "\tsetnc %0\n" - : "=r"(okay), "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi), "r"(reg_rdx), "r"(reg_r10) - : "memory", "rcx", "r8", "r9", "r11"); - if (okay) { - *nwritten = (size_t)reg_rax; - return 0; - } - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_fd_read(cloudabi_fd_t fd, - const cloudabi_iovec_t *iov, - size_t iovcnt, size_t *nread) { - register uint64_t reg_rax asm("rax") = 10; - register uint64_t reg_rdi asm("rdi") = (uint64_t)fd; - register uint64_t reg_rsi asm("rsi") = (uint64_t)iov; - register uint64_t reg_rdx asm("rdx") = (uint64_t)iovcnt; - register char okay; - asm volatile( - "\tsyscall\n" - "\tsetnc %0\n" - : "=r"(okay), "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi), "r"(reg_rdx) - : "memory", "rcx", "r8", "r9", "r10", "r11"); - if (okay) { - *nread = (size_t)reg_rax; - return 0; - } - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_fd_replace(cloudabi_fd_t from, cloudabi_fd_t to) { - register uint64_t reg_rax asm("rax") = 11; - register uint64_t reg_rdi asm("rdi") = (uint64_t)from; - register uint64_t reg_rsi asm("rsi") = (uint64_t)to; - asm volatile("\tsyscall\n" - : "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi) - : "memory", "rcx", "rdx", "r8", "r9", "r10", "r11"); - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_fd_seek(cloudabi_fd_t fd, - cloudabi_filedelta_t offset, - cloudabi_whence_t whence, - cloudabi_filesize_t *newoffset) { - register uint64_t reg_rax asm("rax") = 12; - register uint64_t reg_rdi asm("rdi") = (uint64_t)fd; - register uint64_t reg_rsi asm("rsi") = (uint64_t)offset; - register uint64_t reg_rdx asm("rdx") = (uint64_t)whence; - register char okay; - asm volatile( - "\tsyscall\n" - "\tsetnc %0\n" - : "=r"(okay), "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi), "r"(reg_rdx) - : "memory", "rcx", "r8", "r9", "r10", "r11"); - if (okay) { - *newoffset = (cloudabi_filesize_t)reg_rax; - return 0; - } - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_fd_stat_get(cloudabi_fd_t fd, - cloudabi_fdstat_t *buf) { - register uint64_t reg_rax asm("rax") = 13; - register uint64_t reg_rdi asm("rdi") = (uint64_t)fd; - register uint64_t reg_rsi asm("rsi") = (uint64_t)buf; - asm volatile("\tsyscall\n" - : "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi) - : "memory", "rcx", "rdx", "r8", "r9", "r10", "r11"); - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_fd_stat_put(cloudabi_fd_t fd, - const cloudabi_fdstat_t *buf, - cloudabi_fdsflags_t flags) { - register uint64_t reg_rax asm("rax") = 14; - register uint64_t reg_rdi asm("rdi") = (uint64_t)fd; - register uint64_t reg_rsi asm("rsi") = (uint64_t)buf; - register uint64_t reg_rdx asm("rdx") = (uint64_t)flags; - asm volatile("\tsyscall\n" - : "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi), "r"(reg_rdx) - : "memory", "rcx", "r8", "r9", "r10", "r11"); - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_fd_sync(cloudabi_fd_t fd) { - register uint64_t reg_rax asm("rax") = 15; - register uint64_t reg_rdi asm("rdi") = (uint64_t)fd; - asm volatile("\tsyscall\n" - : "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi) - : "memory", "rcx", "rdx", "r8", "r9", "r10", "r11"); - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_fd_write(cloudabi_fd_t fd, - const cloudabi_ciovec_t *iov, - size_t iovcnt, size_t *nwritten) { - register uint64_t reg_rax asm("rax") = 16; - register uint64_t reg_rdi asm("rdi") = (uint64_t)fd; - register uint64_t reg_rsi asm("rsi") = (uint64_t)iov; - register uint64_t reg_rdx asm("rdx") = (uint64_t)iovcnt; - register char okay; - asm volatile( - "\tsyscall\n" - "\tsetnc %0\n" - : "=r"(okay), "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi), "r"(reg_rdx) - : "memory", "rcx", "r8", "r9", "r10", "r11"); - if (okay) { - *nwritten = (size_t)reg_rax; - return 0; - } - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_file_advise(cloudabi_fd_t fd, - cloudabi_filesize_t offset, - cloudabi_filesize_t len, - cloudabi_advice_t advice) { - register uint64_t reg_rax asm("rax") = 17; - register uint64_t reg_rdi asm("rdi") = (uint64_t)fd; - register uint64_t reg_rsi asm("rsi") = (uint64_t)offset; - register uint64_t reg_rdx asm("rdx") = (uint64_t)len; - register uint64_t reg_r10 asm("r10") = (uint64_t)advice; - asm volatile("\tsyscall\n" - : "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi), "r"(reg_rdx), - "r"(reg_r10) - : "memory", "rcx", "r8", "r9", "r11"); - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_file_allocate(cloudabi_fd_t fd, - cloudabi_filesize_t offset, - cloudabi_filesize_t len) { - register uint64_t reg_rax asm("rax") = 18; - register uint64_t reg_rdi asm("rdi") = (uint64_t)fd; - register uint64_t reg_rsi asm("rsi") = (uint64_t)offset; - register uint64_t reg_rdx asm("rdx") = (uint64_t)len; - asm volatile("\tsyscall\n" - : "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi), "r"(reg_rdx) - : "memory", "rcx", "r8", "r9", "r10", "r11"); - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_file_create(cloudabi_fd_t fd, const char *path, - size_t pathlen, - cloudabi_filetype_t type) { - register uint64_t reg_rax asm("rax") = 19; - register uint64_t reg_rdi asm("rdi") = (uint64_t)fd; - register uint64_t reg_rsi asm("rsi") = (uint64_t)path; - register uint64_t reg_rdx asm("rdx") = (uint64_t)pathlen; - register uint64_t reg_r10 asm("r10") = (uint64_t)type; - asm volatile("\tsyscall\n" - : "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi), "r"(reg_rdx), - "r"(reg_r10) - : "memory", "rcx", "r8", "r9", "r11"); - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_file_link(cloudabi_lookup_t fd1, - const char *path1, size_t path1len, - cloudabi_fd_t fd2, const char *path2, - size_t path2len) { - register uint64_t reg_rax asm("rax") = 20; - register uint64_t reg_rdi asm("rdi") = *(uint64_t *)&fd1; - register uint64_t reg_rsi asm("rsi") = (uint64_t)path1; - register uint64_t reg_rdx asm("rdx") = (uint64_t)path1len; - register uint64_t reg_r10 asm("r10") = (uint64_t)fd2; - register uint64_t reg_r8 asm("r8") = (uint64_t)path2; - register uint64_t reg_r9 asm("r9") = (uint64_t)path2len; - asm volatile("\tsyscall\n" - : "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi), "r"(reg_rdx), - "r"(reg_r10), "r"(reg_r8), "r"(reg_r9) - : "memory", "rcx", "r11"); - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_file_open(cloudabi_lookup_t dirfd, - const char *path, size_t pathlen, - cloudabi_oflags_t oflags, - const cloudabi_fdstat_t *fds, - cloudabi_fd_t *fd) { - register uint64_t reg_rax asm("rax") = 21; - register uint64_t reg_rdi asm("rdi") = *(uint64_t *)&dirfd; - register uint64_t reg_rsi asm("rsi") = (uint64_t)path; - register uint64_t reg_rdx asm("rdx") = (uint64_t)pathlen; - register uint64_t reg_r10 asm("r10") = (uint64_t)oflags; - register uint64_t reg_r8 asm("r8") = (uint64_t)fds; - register char okay; - asm volatile( - "\tsyscall\n" - "\tsetnc %0\n" - : "=r"(okay), "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi), "r"(reg_rdx), "r"(reg_r10), - "r"(reg_r8) - : "memory", "rcx", "r9", "r11"); - if (okay) { - *fd = (cloudabi_fd_t)reg_rax; - return 0; - } - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_file_readdir(cloudabi_fd_t fd, void *buf, - size_t nbyte, - cloudabi_dircookie_t cookie, - size_t *bufused) { - register uint64_t reg_rax asm("rax") = 22; - register uint64_t reg_rdi asm("rdi") = (uint64_t)fd; - register uint64_t reg_rsi asm("rsi") = (uint64_t)buf; - register uint64_t reg_rdx asm("rdx") = (uint64_t)nbyte; - register uint64_t reg_r10 asm("r10") = (uint64_t)cookie; - register char okay; - asm volatile( - "\tsyscall\n" - "\tsetnc %0\n" - : "=r"(okay), "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi), "r"(reg_rdx), "r"(reg_r10) - : "memory", "rcx", "r8", "r9", "r11"); - if (okay) { - *bufused = (size_t)reg_rax; - return 0; - } - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_file_readlink(cloudabi_fd_t fd, const char *path, - size_t pathlen, char *buf, - size_t bufsize, size_t *bufused) { - register uint64_t reg_rax asm("rax") = 23; - register uint64_t reg_rdi asm("rdi") = (uint64_t)fd; - register uint64_t reg_rsi asm("rsi") = (uint64_t)path; - register uint64_t reg_rdx asm("rdx") = (uint64_t)pathlen; - register uint64_t reg_r10 asm("r10") = (uint64_t)buf; - register uint64_t reg_r8 asm("r8") = (uint64_t)bufsize; - register char okay; - asm volatile( - "\tsyscall\n" - "\tsetnc %0\n" - : "=r"(okay), "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi), "r"(reg_rdx), "r"(reg_r10), - "r"(reg_r8) - : "memory", "rcx", "r9", "r11"); - if (okay) { - *bufused = (size_t)reg_rax; - return 0; - } - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_file_rename(cloudabi_fd_t oldfd, const char *old, - size_t oldlen, cloudabi_fd_t newfd, - const char *new, size_t newlen) { - register uint64_t reg_rax asm("rax") = 24; - register uint64_t reg_rdi asm("rdi") = (uint64_t)oldfd; - register uint64_t reg_rsi asm("rsi") = (uint64_t)old; - register uint64_t reg_rdx asm("rdx") = (uint64_t)oldlen; - register uint64_t reg_r10 asm("r10") = (uint64_t)newfd; - register uint64_t reg_r8 asm("r8") = (uint64_t) new; - register uint64_t reg_r9 asm("r9") = (uint64_t)newlen; - asm volatile("\tsyscall\n" - : "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi), "r"(reg_rdx), - "r"(reg_r10), "r"(reg_r8), "r"(reg_r9) - : "memory", "rcx", "r11"); - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_file_stat_fget(cloudabi_fd_t fd, - cloudabi_filestat_t *buf) { - register uint64_t reg_rax asm("rax") = 25; - register uint64_t reg_rdi asm("rdi") = (uint64_t)fd; - register uint64_t reg_rsi asm("rsi") = (uint64_t)buf; - asm volatile("\tsyscall\n" - : "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi) - : "memory", "rcx", "rdx", "r8", "r9", "r10", "r11"); - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_file_stat_fput(cloudabi_fd_t fd, - const cloudabi_filestat_t *buf, - cloudabi_fsflags_t flags) { - register uint64_t reg_rax asm("rax") = 26; - register uint64_t reg_rdi asm("rdi") = (uint64_t)fd; - register uint64_t reg_rsi asm("rsi") = (uint64_t)buf; - register uint64_t reg_rdx asm("rdx") = (uint64_t)flags; - asm volatile("\tsyscall\n" - : "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi), "r"(reg_rdx) - : "memory", "rcx", "r8", "r9", "r10", "r11"); - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_file_stat_get(cloudabi_lookup_t fd, - const char *path, size_t pathlen, - cloudabi_filestat_t *buf) { - register uint64_t reg_rax asm("rax") = 27; - register uint64_t reg_rdi asm("rdi") = *(uint64_t *)&fd; - register uint64_t reg_rsi asm("rsi") = (uint64_t)path; - register uint64_t reg_rdx asm("rdx") = (uint64_t)pathlen; - register uint64_t reg_r10 asm("r10") = (uint64_t)buf; - asm volatile("\tsyscall\n" - : "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi), "r"(reg_rdx), - "r"(reg_r10) - : "memory", "rcx", "r8", "r9", "r11"); - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_file_stat_put(cloudabi_lookup_t fd, - const char *path, size_t pathlen, - const cloudabi_filestat_t *buf, - cloudabi_fsflags_t flags) { - register uint64_t reg_rax asm("rax") = 28; - register uint64_t reg_rdi asm("rdi") = *(uint64_t *)&fd; - register uint64_t reg_rsi asm("rsi") = (uint64_t)path; - register uint64_t reg_rdx asm("rdx") = (uint64_t)pathlen; - register uint64_t reg_r10 asm("r10") = (uint64_t)buf; - register uint64_t reg_r8 asm("r8") = (uint64_t)flags; - asm volatile("\tsyscall\n" - : "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi), "r"(reg_rdx), - "r"(reg_r10), "r"(reg_r8) - : "memory", "rcx", "r9", "r11"); - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_file_symlink(const char *path1, size_t path1len, - cloudabi_fd_t fd, const char *path2, - size_t path2len) { - register uint64_t reg_rax asm("rax") = 29; - register uint64_t reg_rdi asm("rdi") = (uint64_t)path1; - register uint64_t reg_rsi asm("rsi") = (uint64_t)path1len; - register uint64_t reg_rdx asm("rdx") = (uint64_t)fd; - register uint64_t reg_r10 asm("r10") = (uint64_t)path2; - register uint64_t reg_r8 asm("r8") = (uint64_t)path2len; - asm volatile("\tsyscall\n" - : "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi), "r"(reg_rdx), - "r"(reg_r10), "r"(reg_r8) - : "memory", "rcx", "r9", "r11"); - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_file_unlink(cloudabi_fd_t fd, const char *path, - size_t pathlen, - cloudabi_ulflags_t flags) { - register uint64_t reg_rax asm("rax") = 30; - register uint64_t reg_rdi asm("rdi") = (uint64_t)fd; - register uint64_t reg_rsi asm("rsi") = (uint64_t)path; - register uint64_t reg_rdx asm("rdx") = (uint64_t)pathlen; - register uint64_t reg_r10 asm("r10") = (uint64_t)flags; - asm volatile("\tsyscall\n" - : "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi), "r"(reg_rdx), - "r"(reg_r10) - : "memory", "rcx", "r8", "r9", "r11"); - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_lock_unlock(_Atomic(cloudabi_lock_t) * lock, - cloudabi_scope_t scope) { - register uint64_t reg_rax asm("rax") = 31; - register uint64_t reg_rdi asm("rdi") = (uint64_t)lock; - register uint64_t reg_rsi asm("rsi") = (uint64_t)scope; - asm volatile("\tsyscall\n" - : "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi) - : "memory", "rcx", "rdx", "r8", "r9", "r10", "r11"); - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_mem_advise(void *addr, size_t len, - cloudabi_advice_t advice) { - register uint64_t reg_rax asm("rax") = 32; - register uint64_t reg_rdi asm("rdi") = (uint64_t)addr; - register uint64_t reg_rsi asm("rsi") = (uint64_t)len; - register uint64_t reg_rdx asm("rdx") = (uint64_t)advice; - asm volatile("\tsyscall\n" - : "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi), "r"(reg_rdx) - : "memory", "rcx", "r8", "r9", "r10", "r11"); - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_mem_lock(const void *addr, size_t len) { - register uint64_t reg_rax asm("rax") = 33; - register uint64_t reg_rdi asm("rdi") = (uint64_t)addr; - register uint64_t reg_rsi asm("rsi") = (uint64_t)len; - asm volatile("\tsyscall\n" - : "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi) - : "memory", "rcx", "rdx", "r8", "r9", "r10", "r11"); - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_mem_map(void *addr, size_t len, - cloudabi_mprot_t prot, - cloudabi_mflags_t flags, cloudabi_fd_t fd, - cloudabi_filesize_t off, void **mem) { - register uint64_t reg_rax asm("rax") = 34; - register uint64_t reg_rdi asm("rdi") = (uint64_t)addr; - register uint64_t reg_rsi asm("rsi") = (uint64_t)len; - register uint64_t reg_rdx asm("rdx") = (uint64_t)prot; - register uint64_t reg_r10 asm("r10") = (uint64_t)flags; - register uint64_t reg_r8 asm("r8") = (uint64_t)fd; - register uint64_t reg_r9 asm("r9") = (uint64_t)off; - register char okay; - asm volatile( - "\tsyscall\n" - "\tsetnc %0\n" - : "=r"(okay), "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi), "r"(reg_rdx), "r"(reg_r10), - "r"(reg_r8), "r"(reg_r9) - : "memory", "rcx", "r11"); - if (okay) { - *mem = (void *)reg_rax; - return 0; - } - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_mem_protect(void *addr, size_t len, - cloudabi_mprot_t prot) { - register uint64_t reg_rax asm("rax") = 35; - register uint64_t reg_rdi asm("rdi") = (uint64_t)addr; - register uint64_t reg_rsi asm("rsi") = (uint64_t)len; - register uint64_t reg_rdx asm("rdx") = (uint64_t)prot; - asm volatile("\tsyscall\n" - : "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi), "r"(reg_rdx) - : "memory", "rcx", "r8", "r9", "r10", "r11"); - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_mem_sync(void *addr, size_t len, - cloudabi_msflags_t flags) { - register uint64_t reg_rax asm("rax") = 36; - register uint64_t reg_rdi asm("rdi") = (uint64_t)addr; - register uint64_t reg_rsi asm("rsi") = (uint64_t)len; - register uint64_t reg_rdx asm("rdx") = (uint64_t)flags; - asm volatile("\tsyscall\n" - : "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi), "r"(reg_rdx) - : "memory", "rcx", "r8", "r9", "r10", "r11"); - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_mem_unlock(const void *addr, size_t len) { - register uint64_t reg_rax asm("rax") = 37; - register uint64_t reg_rdi asm("rdi") = (uint64_t)addr; - register uint64_t reg_rsi asm("rsi") = (uint64_t)len; - asm volatile("\tsyscall\n" - : "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi) - : "memory", "rcx", "rdx", "r8", "r9", "r10", "r11"); - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_mem_unmap(void *addr, size_t len) { - register uint64_t reg_rax asm("rax") = 38; - register uint64_t reg_rdi asm("rdi") = (uint64_t)addr; - register uint64_t reg_rsi asm("rsi") = (uint64_t)len; - asm volatile("\tsyscall\n" - : "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi) - : "memory", "rcx", "rdx", "r8", "r9", "r10", "r11"); - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_poll(const cloudabi_subscription_t *in, - cloudabi_event_t *out, size_t nsubscriptions, - size_t *nevents) { - register uint64_t reg_rax asm("rax") = 39; - register uint64_t reg_rdi asm("rdi") = (uint64_t)in; - register uint64_t reg_rsi asm("rsi") = (uint64_t)out; - register uint64_t reg_rdx asm("rdx") = (uint64_t)nsubscriptions; - register char okay; - asm volatile( - "\tsyscall\n" - "\tsetnc %0\n" - : "=r"(okay), "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi), "r"(reg_rdx) - : "memory", "rcx", "r8", "r9", "r10", "r11"); - if (okay) { - *nevents = (size_t)reg_rax; - return 0; - } - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_poll_fd(cloudabi_fd_t fd, - const cloudabi_subscription_t *in, - size_t nin, cloudabi_event_t *out, - size_t nout, - const cloudabi_subscription_t *timeout, - size_t *nevents) { - register uint64_t reg_rax asm("rax") = 40; - register uint64_t reg_rdi asm("rdi") = (uint64_t)fd; - register uint64_t reg_rsi asm("rsi") = (uint64_t)in; - register uint64_t reg_rdx asm("rdx") = (uint64_t)nin; - register uint64_t reg_r10 asm("r10") = (uint64_t)out; - register uint64_t reg_r8 asm("r8") = (uint64_t)nout; - register uint64_t reg_r9 asm("r9") = (uint64_t)timeout; - register char okay; - asm volatile( - "\tsyscall\n" - "\tsetnc %0\n" - : "=r"(okay), "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi), "r"(reg_rdx), "r"(reg_r10), - "r"(reg_r8), "r"(reg_r9) - : "memory", "rcx", "r11"); - if (okay) { - *nevents = (size_t)reg_rax; - return 0; - } - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_proc_exec(cloudabi_fd_t fd, const void *data, - size_t datalen, - const cloudabi_fd_t *fds, - size_t fdslen) { - register uint64_t reg_rax asm("rax") = 41; - register uint64_t reg_rdi asm("rdi") = (uint64_t)fd; - register uint64_t reg_rsi asm("rsi") = (uint64_t)data; - register uint64_t reg_rdx asm("rdx") = (uint64_t)datalen; - register uint64_t reg_r10 asm("r10") = (uint64_t)fds; - register uint64_t reg_r8 asm("r8") = (uint64_t)fdslen; - asm volatile("\tsyscall\n" - : "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi), "r"(reg_rdx), - "r"(reg_r10), "r"(reg_r8) - : "memory", "rcx", "r9", "r11"); - return reg_rax; -} - -_Noreturn void cloudabi_sys_proc_exit(cloudabi_exitcode_t rval) { - register uint64_t reg_rax asm("rax") = 42; - register uint64_t reg_rdi asm("rdi") = (uint64_t)rval; - asm volatile("\tsyscall\n" - : - : "r"(reg_rax), "r"(reg_rdi) - : "memory", "rcx", "rdx", "r8", "r9", "r10", "r11"); - for (;;) - ; -} - -cloudabi_errno_t cloudabi_sys_proc_fork(cloudabi_fd_t *fd, - cloudabi_tid_t *tid) { - register uint64_t reg_rax asm("rax") = 43; - register uint64_t reg_rdx asm("rdx"); - register char okay; - asm volatile( - "\tsyscall\n" - "\tsetnc %0\n" - : "=r"(okay), "=r"(reg_rax), "=r"(reg_rdx) - : "r"(reg_rax) - : "memory", "rcx", "r8", "r9", "r10", "r11"); - if (okay) { - *fd = (cloudabi_fd_t)reg_rax; - *tid = (cloudabi_tid_t)reg_rdx; - return 0; - } - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_proc_raise(cloudabi_signal_t sig) { - register uint64_t reg_rax asm("rax") = 44; - register uint64_t reg_rdi asm("rdi") = (uint64_t)sig; - asm volatile("\tsyscall\n" - : "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi) - : "memory", "rcx", "rdx", "r8", "r9", "r10", "r11"); - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_random_get(void *buf, size_t nbyte) { - register uint64_t reg_rax asm("rax") = 45; - register uint64_t reg_rdi asm("rdi") = (uint64_t)buf; - register uint64_t reg_rsi asm("rsi") = (uint64_t)nbyte; - asm volatile("\tsyscall\n" - : "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi) - : "memory", "rcx", "rdx", "r8", "r9", "r10", "r11"); - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_sock_accept(cloudabi_fd_t sock, - cloudabi_sockstat_t *buf, - cloudabi_fd_t *conn) { - register uint64_t reg_rax asm("rax") = 46; - register uint64_t reg_rdi asm("rdi") = (uint64_t)sock; - register uint64_t reg_rsi asm("rsi") = (uint64_t)buf; - register char okay; - asm volatile( - "\tsyscall\n" - "\tsetnc %0\n" - : "=r"(okay), "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi) - : "memory", "rcx", "rdx", "r8", "r9", "r10", "r11"); - if (okay) { - *conn = (cloudabi_fd_t)reg_rax; - return 0; - } - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_sock_bind(cloudabi_fd_t sock, cloudabi_fd_t fd, - const char *path, size_t pathlen) { - register uint64_t reg_rax asm("rax") = 47; - register uint64_t reg_rdi asm("rdi") = (uint64_t)sock; - register uint64_t reg_rsi asm("rsi") = (uint64_t)fd; - register uint64_t reg_rdx asm("rdx") = (uint64_t)path; - register uint64_t reg_r10 asm("r10") = (uint64_t)pathlen; - asm volatile("\tsyscall\n" - : "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi), "r"(reg_rdx), - "r"(reg_r10) - : "memory", "rcx", "r8", "r9", "r11"); - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_sock_connect(cloudabi_fd_t sock, cloudabi_fd_t fd, - const char *path, size_t pathlen) { - register uint64_t reg_rax asm("rax") = 48; - register uint64_t reg_rdi asm("rdi") = (uint64_t)sock; - register uint64_t reg_rsi asm("rsi") = (uint64_t)fd; - register uint64_t reg_rdx asm("rdx") = (uint64_t)path; - register uint64_t reg_r10 asm("r10") = (uint64_t)pathlen; - asm volatile("\tsyscall\n" - : "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi), "r"(reg_rdx), - "r"(reg_r10) - : "memory", "rcx", "r8", "r9", "r11"); - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_sock_listen(cloudabi_fd_t sock, - cloudabi_backlog_t backlog) { - register uint64_t reg_rax asm("rax") = 49; - register uint64_t reg_rdi asm("rdi") = (uint64_t)sock; - register uint64_t reg_rsi asm("rsi") = (uint64_t)backlog; - asm volatile("\tsyscall\n" - : "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi) - : "memory", "rcx", "rdx", "r8", "r9", "r10", "r11"); - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_sock_recv(cloudabi_fd_t sock, - const cloudabi_recv_in_t *in, - cloudabi_recv_out_t *out) { - register uint64_t reg_rax asm("rax") = 50; - register uint64_t reg_rdi asm("rdi") = (uint64_t)sock; - register uint64_t reg_rsi asm("rsi") = (uint64_t)in; - register uint64_t reg_rdx asm("rdx") = (uint64_t)out; - asm volatile("\tsyscall\n" - : "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi), "r"(reg_rdx) - : "memory", "rcx", "r8", "r9", "r10", "r11"); - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_sock_send(cloudabi_fd_t sock, - const cloudabi_send_in_t *in, - cloudabi_send_out_t *out) { - register uint64_t reg_rax asm("rax") = 51; - register uint64_t reg_rdi asm("rdi") = (uint64_t)sock; - register uint64_t reg_rsi asm("rsi") = (uint64_t)in; - register uint64_t reg_rdx asm("rdx") = (uint64_t)out; - asm volatile("\tsyscall\n" - : "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi), "r"(reg_rdx) - : "memory", "rcx", "r8", "r9", "r10", "r11"); - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_sock_shutdown(cloudabi_fd_t sock, - cloudabi_sdflags_t how) { - register uint64_t reg_rax asm("rax") = 52; - register uint64_t reg_rdi asm("rdi") = (uint64_t)sock; - register uint64_t reg_rsi asm("rsi") = (uint64_t)how; - asm volatile("\tsyscall\n" - : "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi) - : "memory", "rcx", "rdx", "r8", "r9", "r10", "r11"); - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_sock_stat_get(cloudabi_fd_t sock, - cloudabi_sockstat_t *buf, - cloudabi_ssflags_t flags) { - register uint64_t reg_rax asm("rax") = 53; - register uint64_t reg_rdi asm("rdi") = (uint64_t)sock; - register uint64_t reg_rsi asm("rsi") = (uint64_t)buf; - register uint64_t reg_rdx asm("rdx") = (uint64_t)flags; - asm volatile("\tsyscall\n" - : "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi), "r"(reg_rdx) - : "memory", "rcx", "r8", "r9", "r10", "r11"); - return reg_rax; -} - -cloudabi_errno_t cloudabi_sys_thread_create(cloudabi_threadattr_t *attr, - cloudabi_tid_t *tid) { - register uint64_t reg_rax asm("rax") = 54; - register uint64_t reg_rdi asm("rdi") = (uint64_t)attr; - register char okay; - asm volatile( - "\tsyscall\n" - "\tsetnc %0\n" - : "=r"(okay), "=r"(reg_rax) - : "r"(reg_rax), "r"(reg_rdi) - : "memory", "rcx", "rdx", "r8", "r9", "r10", "r11"); - if (okay) { - *tid = (cloudabi_tid_t)reg_rax; - return 0; - } - return reg_rax; -} - -_Noreturn void cloudabi_sys_thread_exit(_Atomic(cloudabi_lock_t) * lock, - cloudabi_scope_t scope) { - register uint64_t reg_rax asm("rax") = 55; - register uint64_t reg_rdi asm("rdi") = (uint64_t)lock; - register uint64_t reg_rsi asm("rsi") = (uint64_t)scope; - asm volatile("\tsyscall\n" - : - : "r"(reg_rax), "r"(reg_rdi), "r"(reg_rsi) - : "memory", "rcx", "rdx", "r8", "r9", "r10", "r11"); - for (;;) - ; -} - -cloudabi_errno_t cloudabi_sys_thread_yield(void) { - register uint64_t reg_rax asm("rax") = 56; - asm volatile("\tsyscall\n" - : "=r"(reg_rax) - : "r"(reg_rax) - : "memory", "rcx", "rdx", "r8", "r9", "r10", "r11"); - return reg_rax; -} |