kernel: allow system call with 64-bit return val

This is subject to the constraint that such system calls must have a
return value which is "u64_t" or "s64_t".

So far all the relevant kernel calls just have zero or one arguments,
we can later add more _syscall_ret64_invokeN() APIs as needed.

Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
This commit is contained in:
Andrew Boie 2017-10-08 12:20:24 -07:00 committed by Andrew Boie
commit 3ff41b9484
3 changed files with 52 additions and 11 deletions

View file

@ -243,6 +243,21 @@ static inline u32_t _syscall_invoke10(u32_t arg1, u32_t arg2, u32_t arg3,
call_id);
}
static inline u64_t _syscall_ret64_invoke0(u32_t call_id)
{
u64_t ret;
_arch_syscall_invoke1((u32_t)&ret, call_id);
return ret;
}
static inline u64_t _syscall_ret64_invoke1(u32_t arg1, u32_t call_id)
{
u64_t ret;
_arch_syscall_invoke2(arg1, (u32_t)&ret, call_id);
return ret;
}
#endif /* CONFIG_USERSPACE */
#ifdef __cplusplus