11.7Srin/*	$NetBSD: sys_linux_component.c,v 1.7 2019/01/27 09:19:37 rin Exp $	*/
21.6Spgoyette
31.6Spgoyette#include <sys/cdefs.h>
41.7Srin__KERNEL_RCSID(0, "$NetBSD: sys_linux_component.c,v 1.7 2019/01/27 09:19:37 rin Exp $");
51.1Spooka
61.1Spooka#include <sys/param.h>
71.1Spooka#include <sys/proc.h>
81.1Spooka
91.1Spooka#include <compat/linux/common/linux_errno.h>
101.1Spooka
111.1Spooka#include <uvm/uvm_extern.h>
121.1Spooka
131.3Spooka#include <rump-sys/kern.h>
141.1Spooka
151.1Spooka#include "rump_linux_syscall.h"
161.1Spooka
171.1Spookaextern struct sysent rump_linux_sysent[];
181.4Spgoyetteextern const uint32_t rump_linux_sysent_nomodbits[];
191.1Spooka
201.1Spooka#ifdef __HAVE_SYSCALL_INTERN
211.1Spookastatic void
221.1Spookarumplinux_syscall_intern(struct proc *p)
231.1Spooka{
241.1Spooka
251.1Spooka	p->p_emuldata = __UNCONST(native_to_linux_errno);
261.1Spooka}
271.1Spooka#endif
281.1Spooka
291.1Spookastruct emul emul_rump_sys_linux = {
301.1Spooka	.e_name = "linux-rump",
311.1Spooka	.e_sysent = rump_linux_sysent,
321.4Spgoyette	.e_nomodbits = rump_linux_sysent_nomodbits,
331.1Spooka#ifndef __HAVE_MINIMAL_EMUL
341.1Spooka	.e_nsysent = RUMP_LINUX_SYS_NSYSENT,
351.1Spooka	.e_errno = native_to_linux_errno,
361.1Spooka#endif
371.1Spooka	.e_vm_default_addr = uvm_default_mapaddr,
381.1Spooka#ifdef __HAVE_SYSCALL_INTERN
391.1Spooka	.e_syscall_intern = rumplinux_syscall_intern,
401.1Spooka#endif
411.1Spooka};
421.1Spooka
431.1SpookaRUMP_COMPONENT(RUMP_COMPONENT_KERN)
441.1Spooka{
451.1Spooka	extern struct emul *emul_default;
461.1Spooka
471.1Spooka	emul_default = &emul_rump_sys_linux;
481.1Spooka}
491.1Spooka
501.1Spooka#include <compat/linux/common/linux_machdep.h>
511.1Spooka
521.1Spookadev_t
531.1Spookalinux_fakedev(dev_t in, int raw)
541.1Spooka{
551.1Spooka
561.1Spooka	/* I don't really think it matters what we return here */
571.1Spooka	return in;
581.1Spooka}
591.1Spooka
601.1Spooka/*
611.1Spooka * XXX: the linux emulation code is not split into factions
621.1Spooka */
631.1Spookavoid rumplinux__stub(void);
641.1Spookavoid rumplinux__stub(void) {panic("unavailable");}
651.1Spooka
661.1Spooka/* vm-related */
671.1Spooka__weak_alias(sys_mmap,rumplinux__stub);
681.1Spooka__weak_alias(vm_map_unlock,rumplinux__stub);
691.1Spooka__weak_alias(uvm_map_lookup_entry,rumplinux__stub);
701.1Spooka__weak_alias(sys_obreak,rumplinux__stub);
711.1Spooka__weak_alias(vm_map_lock,rumplinux__stub);
721.1Spooka__weak_alias(uvm_mremap,rumplinux__stub);
731.1Spooka
741.1Spooka/* signal.c */
751.1Spooka__weak_alias(sigaction1,rumplinux__stub);
761.1Spooka__weak_alias(kpsignal2,rumplinux__stub);
771.1Spooka__weak_alias(sys_kill,rumplinux__stub);
781.1Spooka__weak_alias(sigsuspend1,rumplinux__stub);
791.1Spooka__weak_alias(sigtimedwait1,rumplinux__stub);
801.1Spooka__weak_alias(lwp_find,rumplinux__stub);
811.1Spooka
821.1Spooka/* misc */
831.1Spooka__weak_alias(linux_machdepioctl,rumplinux__stub);
841.1Spooka__weak_alias(linux_ioctl_sg,rumplinux__stub);
851.1Spooka__weak_alias(oss_ioctl_mixer,rumplinux__stub);
861.1Spooka__weak_alias(oss_ioctl_sequencer,rumplinux__stub);
871.1Spooka__weak_alias(oss_ioctl_audio,rumplinux__stub);
881.1Spooka__weak_alias(rusage_to_rusage50,rumplinux__stub);
891.1Spooka__weak_alias(do_sys_wait,rumplinux__stub);
901.1Spooka
911.1Spooka/* arch-specific */
921.1Spooka__weak_alias(compat_offseterr,rumplinux__stub);
931.1Spooka__weak_alias(linux_sys_ptrace_arch,rumplinux__stub);
941.1Spooka
951.1Spooka#ifdef __i386__
961.1Spookaconst char *
971.1Spookalinux_get_uname_arch(void)
981.1Spooka{
991.1Spooka
1001.1Spooka	return MACHINE_ARCH;
1011.1Spooka}
1021.1Spooka#endif /* __i386__ */
103