1/*	$NetBSD: sys_linux_component.c,v 1.7 2019/01/27 09:19:37 rin Exp $	*/
2
3#include <sys/cdefs.h>
4__KERNEL_RCSID(0, "$NetBSD: sys_linux_component.c,v 1.7 2019/01/27 09:19:37 rin Exp $");
5
6#include <sys/param.h>
7#include <sys/proc.h>
8
9#include <compat/linux/common/linux_errno.h>
10
11#include <uvm/uvm_extern.h>
12
13#include <rump-sys/kern.h>
14
15#include "rump_linux_syscall.h"
16
17extern struct sysent rump_linux_sysent[];
18extern const uint32_t rump_linux_sysent_nomodbits[];
19
20#ifdef __HAVE_SYSCALL_INTERN
21static void
22rumplinux_syscall_intern(struct proc *p)
23{
24
25	p->p_emuldata = __UNCONST(native_to_linux_errno);
26}
27#endif
28
29struct emul emul_rump_sys_linux = {
30	.e_name = "linux-rump",
31	.e_sysent = rump_linux_sysent,
32	.e_nomodbits = rump_linux_sysent_nomodbits,
33#ifndef __HAVE_MINIMAL_EMUL
34	.e_nsysent = RUMP_LINUX_SYS_NSYSENT,
35	.e_errno = native_to_linux_errno,
36#endif
37	.e_vm_default_addr = uvm_default_mapaddr,
38#ifdef __HAVE_SYSCALL_INTERN
39	.e_syscall_intern = rumplinux_syscall_intern,
40#endif
41};
42
43RUMP_COMPONENT(RUMP_COMPONENT_KERN)
44{
45	extern struct emul *emul_default;
46
47	emul_default = &emul_rump_sys_linux;
48}
49
50#include <compat/linux/common/linux_machdep.h>
51
52dev_t
53linux_fakedev(dev_t in, int raw)
54{
55
56	/* I don't really think it matters what we return here */
57	return in;
58}
59
60/*
61 * XXX: the linux emulation code is not split into factions
62 */
63void rumplinux__stub(void);
64void rumplinux__stub(void) {panic("unavailable");}
65
66/* vm-related */
67__weak_alias(sys_mmap,rumplinux__stub);
68__weak_alias(vm_map_unlock,rumplinux__stub);
69__weak_alias(uvm_map_lookup_entry,rumplinux__stub);
70__weak_alias(sys_obreak,rumplinux__stub);
71__weak_alias(vm_map_lock,rumplinux__stub);
72__weak_alias(uvm_mremap,rumplinux__stub);
73
74/* signal.c */
75__weak_alias(sigaction1,rumplinux__stub);
76__weak_alias(kpsignal2,rumplinux__stub);
77__weak_alias(sys_kill,rumplinux__stub);
78__weak_alias(sigsuspend1,rumplinux__stub);
79__weak_alias(sigtimedwait1,rumplinux__stub);
80__weak_alias(lwp_find,rumplinux__stub);
81
82/* misc */
83__weak_alias(linux_machdepioctl,rumplinux__stub);
84__weak_alias(linux_ioctl_sg,rumplinux__stub);
85__weak_alias(oss_ioctl_mixer,rumplinux__stub);
86__weak_alias(oss_ioctl_sequencer,rumplinux__stub);
87__weak_alias(oss_ioctl_audio,rumplinux__stub);
88__weak_alias(rusage_to_rusage50,rumplinux__stub);
89__weak_alias(do_sys_wait,rumplinux__stub);
90
91/* arch-specific */
92__weak_alias(compat_offseterr,rumplinux__stub);
93__weak_alias(linux_sys_ptrace_arch,rumplinux__stub);
94
95#ifdef __i386__
96const char *
97linux_get_uname_arch(void)
98{
99
100	return MACHINE_ARCH;
101}
102#endif /* __i386__ */
103