#ifndef _AARCH64_LINUX_MACHDEP_H
#define _AARCH64_LINUX_MACHDEP_H
#include <aarch64/reg.h>
#include <compat/linux/common/linux_types.h>
#include <compat/linux/common/linux_signal.h>
#include <compat/linux/common/linux_siginfo.h>
struct linux_aarch64_ctx {
uint32_t magic;
uint32_t size;
};
#define FPSIMD_MAGIC 0x46508001
struct fpsimd_context {
struct linux_aarch64_ctx head;
uint32_t fpsr;
uint32_t fpcr;
union fpelem vregs[32];
};
struct linux_sigcontext {
uint64_t fault_address;
uint64_t regs[31];
uint64_t sp;
uint64_t pc;
uint64_t pstate;
uint8_t __reserved[4096] __attribute__((__aligned__(16)));
};
struct linux_ucontext {
unsigned long luc_flags;
struct linux_ucontext *luc_link;
linux_stack_t luc_stack;
linux_sigset_t luc_sigmask;
uint8_t __reserved[1024 / 8 - sizeof(linux_sigset_t)];
struct linux_sigcontext luc_mcontext;
};
struct linux_rt_sigframe {
struct linux_siginfo info;
struct linux_ucontext uc;
};
struct linux_sys_open_args {
syscallarg(const char *) path;
syscallarg(int) flags;
syscallarg(linux_umode_t) mode;
};
int linux_sys_open(struct lwp *, const struct linux_sys_open_args *, register_t *);
struct linux_sys_eventfd_args {
syscallarg(unsigned int) initval;
};
int linux_sys_eventfd(struct lwp *, const struct linux_sys_eventfd_args *, register_t *);
struct linux_sys_llseek_args {
syscallarg(int) fd;
syscallarg(u_int32_t) ohigh;
syscallarg(u_int32_t) olow;
syscallarg(void *) res;
syscallarg(int) whence;
};
int linux_sys_llseek(struct lwp *, const struct linux_sys_llseek_args *, register_t *);
struct linux_sys_unlink_args {
syscallarg(const char *) path;
};
int linux_sys_unlink(struct lwp *, const struct linux_sys_unlink_args *, register_t *);
struct linux_sys_mknod_args {
syscallarg(const char *) path;
syscallarg(linux_umode_t) mode;
syscallarg(unsigned) dev;
};
int linux_sys_mknod(struct lwp *, const struct linux_sys_mknod_args *, register_t *);
struct linux_sys_alarm_args {
syscallarg(unsigned int) secs;
};
int linux_sys_alarm(struct lwp *, const struct linux_sys_alarm_args *, register_t *);
int linux_sys_pause(struct lwp *, const void *, register_t *);
#ifdef _KERNEL
__BEGIN_DECLS
void linux_syscall_intern(struct proc *);
__END_DECLS
#endif
#if BYTE_ORDER != BIG_ENDIAN
#define LINUX_UNAME_ARCH "aarch64"
#else
#define LINUX_UNAME_ARCH "aarch64_be"
#endif
#define LINUX_LARGEFILE64
#endif