diff --git a/sys/lkm/exec/Makefile b/sys/lkm/exec/Makefile index 16dd6f131210..2ad1ffc08684 100644 --- a/sys/lkm/exec/Makefile +++ b/sys/lkm/exec/Makefile @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.12 2002/02/10 15:46:28 mrg Exp $ +# $NetBSD: Makefile,v 1.13 2002/03/12 07:47:35 oki Exp $ .if ${MACHINE} == "i386" SUBDIR+= freebsd_aout freebsd_elf linux_elf svr4_elf @@ -22,7 +22,7 @@ SUBDIR+= hpux_aout .endif .if ${MACHINE} == "i386" -SUBDIR+= aout ibcs2_coff ibcs2_elf ibcs2_xout linux_aout +SUBDIR+= aout ibcs2_coff ibcs2_elf ibcs2_xout linux_aout pecoff .endif .if ${MACHINE_ARCH} == "m68k" diff --git a/sys/lkm/exec/pecoff/Makefile b/sys/lkm/exec/pecoff/Makefile new file mode 100644 index 000000000000..6c3dbe7566f1 --- /dev/null +++ b/sys/lkm/exec/pecoff/Makefile @@ -0,0 +1,16 @@ +# $NetBSD: Makefile,v 1.1 2002/03/12 07:47:36 oki Exp $ + +.include "../Makefile.inc" + +.PATH: $S/compat/pecoff + +CPPFLAGS+= -nostdinc -I$S -D_KERNEL -DCOMPAT_PECOFF + +MKMAN= no + +KMOD= exec_pecoff + +SRCS= lkminit_exec.c +SRCS+= pecoff_exec.c + +.include diff --git a/sys/lkm/exec/pecoff/lkminit_exec.c b/sys/lkm/exec/pecoff/lkminit_exec.c new file mode 100644 index 000000000000..c53b55525e4b --- /dev/null +++ b/sys/lkm/exec/pecoff/lkminit_exec.c @@ -0,0 +1,86 @@ +/* $NetBSD: lkminit_exec.c,v 1.1 2002/03/12 07:47:36 oki Exp $ */ + +/*- + * Copyright (c) 1996 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Michael Graff . + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the NetBSD + * Foundation, Inc. and its contributors. + * 4. Neither the name of The NetBSD Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include +__KERNEL_RCSID(0, "$NetBSD: lkminit_exec.c,v 1.1 2002/03/12 07:47:36 oki Exp $"); + +#include +#include +#include +#include +#include +#include +#include + +#include + +int exec_pecoff_lkmentry __P((struct lkm_table *, int, int)); + +extern const struct emul emul_netbsd; /* XXX */ + +static struct execsw exec_pecoff = + /* Win32/WinCE PE/COFF (native word size) */ + { sizeof(struct exec), + exec_pecoff_makecmds, + { NULL }, + &emul_netbsd, /* XXX emul_pecoff once it's different */ + EXECSW_PRIO_ANY, + howmany(sizeof(struct pecoff_args), sizeof(char *)), + pecoff_copyargs, + NULL, + coredump_netbsd }; + +/* + * declare the exec + */ +MOD_EXEC("exec_pecoff", -1, &exec_pecoff, "pecoff"); + +/* + * entry point + */ +int +exec_pecoff_lkmentry(lkmtp, cmd, ver) + struct lkm_table *lkmtp; + int cmd; + int ver; +{ + DISPATCH(lkmtp, cmd, ver, + lkm_nofunc, + lkm_nofunc, + lkm_nofunc); +}