diff options
| author | Kimplul <kimi.h.kuparinen@gmail.com> | 2023-07-27 20:29:28 +0300 |
|---|---|---|
| committer | Kimplul <kimi.h.kuparinen@gmail.com> | 2023-07-27 20:29:28 +0300 |
| commit | 3212707a9ab549119ad0ad6441a07fe774c99f3b (patch) | |
| tree | 9df1e69c92dabfea37202008f77f8a100c0a7de4 /common/uapi/mem.c | |
| parent | a26fb216729ba7a7d0fbfc97c2082c9db512aa36 (diff) | |
| download | kmi-3212707a9ab549119ad0ad6441a07fe774c99f3b.tar.gz kmi-3212707a9ab549119ad0ad6441a07fe774c99f3b.zip | |
use nifty variable argument count trick
+ Found it in newlib. This allows the compiler to more effectively
optimize away unnecessary register operations. Applied to both kernel
and init.c for a slight speed increase.
I really should move init.c to some other repository though, the
binary files are starting to get annoying
Diffstat (limited to 'common/uapi/mem.c')
| -rw-r--r-- | common/uapi/mem.c | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/common/uapi/mem.c b/common/uapi/mem.c index 01bf470..d54390a 100644 --- a/common/uapi/mem.c +++ b/common/uapi/mem.c @@ -27,9 +27,9 @@ SYSCALL_DEFINE2(req_mem)(struct tcb *t, sys_arg_t size, sys_arg_t flags) vm_t start = 0; /** @todo expose flags to users */ if (!(start = alloc_uvmem(r, size, flags))) - return_args(t, SYS_RET1(ERR_OOMEM)); + return_args1(t, ERR_OOMEM); - return_args(t, SYS_RET2(OK, start)); + return_args2(t, OK, start); } /** @@ -46,9 +46,9 @@ SYSCALL_DEFINE2(req_page)(struct tcb *t, sys_arg_t size, sys_arg_t flags) struct tcb *r = get_cproc(t); vm_t start = 0; pm_t paddr = 0; size_t asize = size; if (!(start = alloc_uvpage(r, asize, flags, &asize, &paddr))) - return_args(t, SYS_RET1(ERR_OOMEM)); + return_args1(t, ERR_OOMEM); - return_args(t, SYS_RET4(OK, start, asize, paddr)); + return_args4(t, OK, start, asize, paddr); } /** @@ -67,9 +67,9 @@ SYSCALL_DEFINE3(req_fixmem)(struct tcb *t, sys_arg_t fixed, sys_arg_t size, struct tcb *r = get_cproc(t); vm_t start = 0; if (!(start = alloc_fixed_uvmem(r, fixed, size, flags))) - return_args(t, SYS_RET1(ERR_OOMEM)); + return_args1(t, ERR_OOMEM); - return_args(t, SYS_RET2(OK, start)); + return_args2(t, OK, start); } /** @@ -88,12 +88,12 @@ SYSCALL_DEFINE1(free_mem)(struct tcb *t, sys_arg_t start) /* try freeing normal user memory first, if that fails, try device * memory, otherwise just assume the address is borked. */ if (!(status = free_uvmem(r, vm_start))) - return_args(t, SYS_RET1(OK)); + return_args1(t, OK); if (!(status = free_devmem(r, vm_start))) - return_args(t, SYS_RET1(OK)); + return_args1(t, OK); - return_args(t, SYS_RET1(status)); + return_args1(t, status); } /** @@ -117,9 +117,9 @@ SYSCALL_DEFINE3(req_pmem)(struct tcb *t, sys_arg_t paddr, sys_arg_t size, struct tcb *r = get_cproc(t); vm_t start = 0; if (!(start = alloc_devmem(r, paddr, size, flags))) - return_args(t, SYS_RET1(ERR_OOMEM)); + return_args1(t, ERR_OOMEM); - return_args(t, SYS_RET2(OK, start)); + return_args2(t, OK, start); } /** @@ -143,16 +143,16 @@ SYSCALL_DEFINE4(req_sharedmem)(struct tcb *t, sys_arg_t tid, /** @todo check capability for shared memory */ struct tcb *u = get_tcb(tid); if (!u) - return_args(t, SYS_RET1(ERR_INVAL)); + return_args1(t, ERR_INVAL); struct tcb *s = get_cproc(t); struct tcb *c = get_rproc(u); vm_t sstart, cstart; if (alloc_shared_uvmem(s, c, size, sflags, cflags, &sstart, &cstart)) - return_args(t, SYS_RET1(ERR_OOMEM)); + return_args1(t, ERR_OOMEM); - return_args(t, SYS_RET3(OK, sstart, cstart)); + return_args3(t, OK, sstart, cstart); } /** \todo add some way to specify who gets to access the shared memory? */ |
