1*6ad8aacfSmaxv /* $NetBSD: sunos32_exec_aout.c,v 1.12 2015/10/18 16:59:19 maxv Exp $ */
23fbaadb8Smrg
33fbaadb8Smrg /*
43fbaadb8Smrg * Copyright (c) 2001 Matthew R. Green
53fbaadb8Smrg * All rights reserved.
63fbaadb8Smrg *
73fbaadb8Smrg * Redistribution and use in source and binary forms, with or without
83fbaadb8Smrg * modification, are permitted provided that the following conditions
93fbaadb8Smrg * are met:
103fbaadb8Smrg * 1. Redistributions of source code must retain the above copyright
113fbaadb8Smrg * notice, this list of conditions and the following disclaimer.
123fbaadb8Smrg * 2. Redistributions in binary form must reproduce the above copyright
133fbaadb8Smrg * notice, this list of conditions and the following disclaimer in the
143fbaadb8Smrg * documentation and/or other materials provided with the distribution.
153fbaadb8Smrg *
163fbaadb8Smrg * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
173fbaadb8Smrg * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
183fbaadb8Smrg * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
193fbaadb8Smrg * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
203fbaadb8Smrg * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
213fbaadb8Smrg * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
223fbaadb8Smrg * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
233fbaadb8Smrg * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
243fbaadb8Smrg * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
253fbaadb8Smrg * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
263fbaadb8Smrg * SUCH DAMAGE.
273fbaadb8Smrg */
283fbaadb8Smrg
29dab6ef8bSlukem #include <sys/cdefs.h>
30*6ad8aacfSmaxv __KERNEL_RCSID(0, "$NetBSD: sunos32_exec_aout.c,v 1.12 2015/10/18 16:59:19 maxv Exp $");
31dab6ef8bSlukem
326a89288aSmrg #if defined(_KERNEL_OPT)
333fbaadb8Smrg #include "opt_execfmt.h"
343fbaadb8Smrg #endif
353fbaadb8Smrg
363fbaadb8Smrg #include <sys/param.h>
373fbaadb8Smrg #include <sys/systm.h>
383fbaadb8Smrg #include <sys/kernel.h>
393fbaadb8Smrg #include <sys/proc.h>
403fbaadb8Smrg #include <sys/mount.h>
413fbaadb8Smrg #include <sys/vnode.h>
423fbaadb8Smrg #include <sys/file.h>
433fbaadb8Smrg #include <sys/exec.h>
443fbaadb8Smrg
45a065e516Sdsl #include <compat/netbsd32/netbsd32.h>
46a065e516Sdsl #include <compat/netbsd32/netbsd32_exec.h>
473fbaadb8Smrg #include <compat/sunos32/sunos32.h>
483fbaadb8Smrg #include <compat/sunos32/sunos32_exec.h>
493fbaadb8Smrg #include <compat/sunos/sunos_exec.h>
503fbaadb8Smrg
513fbaadb8Smrg int
exec_sunos32_aout_makecmds(struct lwp * l,struct exec_package * epp)5228bae79bSdsl exec_sunos32_aout_makecmds(struct lwp *l, struct exec_package *epp)
533fbaadb8Smrg {
543fbaadb8Smrg struct sunos_exec *sunmag = epp->ep_hdr;
553fbaadb8Smrg int error = ENOEXEC;
563fbaadb8Smrg
57*6ad8aacfSmaxv if (epp->ep_hdrvalid < sizeof(struct sunos_exec))
58*6ad8aacfSmaxv return ENOEXEC;
599a0fda91Sbriggs if (!SUNOS_M_NATIVE(sunmag->a_machtype))
603fbaadb8Smrg return (ENOEXEC);
613fbaadb8Smrg
623fbaadb8Smrg switch (sunmag->a_magic) {
633fbaadb8Smrg case ZMAGIC:
6495e1ffb1Schristos error = netbsd32_exec_aout_prep_zmagic(l, epp);
653fbaadb8Smrg break;
663fbaadb8Smrg case NMAGIC:
6795e1ffb1Schristos error = netbsd32_exec_aout_prep_nmagic(l, epp);
683fbaadb8Smrg break;
693fbaadb8Smrg case OMAGIC:
7095e1ffb1Schristos error = netbsd32_exec_aout_prep_omagic(l, epp);
713fbaadb8Smrg break;
723fbaadb8Smrg }
733fbaadb8Smrg return error;
743fbaadb8Smrg }
75