version 1.16, 2005/02/26 23:10:19 |
version 1.16.4.2, 2007/12/07 17:28:43 |
Line 57 __KERNEL_RCSID(0, "$NetBSD$"); |
|
Line 57 __KERNEL_RCSID(0, "$NetBSD$"); |
|
|
|
#include <compat/m68k4k/m68k4k_exec.h> |
#include <compat/m68k4k/m68k4k_exec.h> |
|
|
int exec_m68k4k_prep_zmagic __P((struct proc *, struct exec_package *)); |
int exec_m68k4k_prep_zmagic(struct lwp *, struct exec_package *); |
int exec_m68k4k_prep_nmagic __P((struct proc *, struct exec_package *)); |
int exec_m68k4k_prep_nmagic(struct lwp *, struct exec_package *); |
int exec_m68k4k_prep_omagic __P((struct proc *, struct exec_package *)); |
int exec_m68k4k_prep_omagic(struct lwp *, struct exec_package *); |
|
|
/* |
/* |
* exec_m68k4k_makecmds(): Check if it's an a.out-format executable |
* exec_m68k4k_makecmds(): Check if it's an a.out-format executable |
Line 75 int exec_m68k4k_prep_omagic __P((struct |
|
Line 75 int exec_m68k4k_prep_omagic __P((struct |
|
*/ |
*/ |
|
|
int |
int |
exec_m68k4k_makecmds(p, epp) |
exec_m68k4k_makecmds(l, epp) |
struct proc *p; |
struct lwp *l; |
struct exec_package *epp; |
struct exec_package *epp; |
{ |
{ |
u_long midmag, magic; |
u_long midmag, magic; |
Line 99 exec_m68k4k_makecmds(p, epp) |
|
Line 99 exec_m68k4k_makecmds(p, epp) |
|
|
|
switch (midmag) { |
switch (midmag) { |
case (MID_M68K4K << 16) | ZMAGIC: |
case (MID_M68K4K << 16) | ZMAGIC: |
error = exec_m68k4k_prep_zmagic(p, epp); |
error = exec_m68k4k_prep_zmagic(l, epp); |
break; |
break; |
case (MID_M68K4K << 16) | NMAGIC: |
case (MID_M68K4K << 16) | NMAGIC: |
error = exec_m68k4k_prep_nmagic(p, epp); |
error = exec_m68k4k_prep_nmagic(l, epp); |
break; |
break; |
case (MID_M68K4K << 16) | OMAGIC: |
case (MID_M68K4K << 16) | OMAGIC: |
error = exec_m68k4k_prep_omagic(p, epp); |
error = exec_m68k4k_prep_omagic(l, epp); |
break; |
break; |
default: |
default: |
error = ENOEXEC; |
error = ENOEXEC; |
Line 128 exec_m68k4k_makecmds(p, epp) |
|
Line 128 exec_m68k4k_makecmds(p, epp) |
|
*/ |
*/ |
|
|
int |
int |
exec_m68k4k_prep_zmagic(p, epp) |
exec_m68k4k_prep_zmagic(l, epp) |
struct proc *p; |
struct lwp *l; |
struct exec_package *epp; |
struct exec_package *epp; |
{ |
{ |
struct exec *execp = epp->ep_hdr; |
struct exec *execp = epp->ep_hdr; |
Line 160 exec_m68k4k_prep_zmagic(p, epp) |
|
Line 160 exec_m68k4k_prep_zmagic(p, epp) |
|
epp->ep_daddr + execp->a_data, NULLVP, 0, |
epp->ep_daddr + execp->a_data, NULLVP, 0, |
VM_PROT_READ|VM_PROT_WRITE|VM_PROT_EXECUTE); |
VM_PROT_READ|VM_PROT_WRITE|VM_PROT_EXECUTE); |
|
|
return (*epp->ep_esch->es_setup_stack)(p, epp); |
return (*epp->ep_esch->es_setup_stack)(l, epp); |
} |
} |
|
|
/* |
/* |
Line 168 exec_m68k4k_prep_zmagic(p, epp) |
|
Line 168 exec_m68k4k_prep_zmagic(p, epp) |
|
*/ |
*/ |
|
|
int |
int |
exec_m68k4k_prep_nmagic(p, epp) |
exec_m68k4k_prep_nmagic(l, epp) |
struct proc *p; |
struct lwp *l; |
struct exec_package *epp; |
struct exec_package *epp; |
{ |
{ |
struct exec *execp = epp->ep_hdr; |
struct exec *execp = epp->ep_hdr; |
Line 199 exec_m68k4k_prep_nmagic(p, epp) |
|
Line 199 exec_m68k4k_prep_nmagic(p, epp) |
|
NEW_VMCMD(&epp->ep_vmcmds, vmcmd_map_zero, bsize, baddr, |
NEW_VMCMD(&epp->ep_vmcmds, vmcmd_map_zero, bsize, baddr, |
NULLVP, 0, VM_PROT_READ|VM_PROT_WRITE|VM_PROT_EXECUTE); |
NULLVP, 0, VM_PROT_READ|VM_PROT_WRITE|VM_PROT_EXECUTE); |
|
|
return (*epp->ep_esch->es_setup_stack)(p, epp); |
return (*epp->ep_esch->es_setup_stack)(l, epp); |
} |
} |
|
|
/* |
/* |
Line 207 exec_m68k4k_prep_nmagic(p, epp) |
|
Line 207 exec_m68k4k_prep_nmagic(p, epp) |
|
*/ |
*/ |
|
|
int |
int |
exec_m68k4k_prep_omagic(p, epp) |
exec_m68k4k_prep_omagic(l, epp) |
struct proc *p; |
struct lwp *l; |
struct exec_package *epp; |
struct exec_package *epp; |
{ |
{ |
struct exec *execp = epp->ep_hdr; |
struct exec *execp = epp->ep_hdr; |
Line 243 exec_m68k4k_prep_omagic(p, epp) |
|
Line 243 exec_m68k4k_prep_omagic(p, epp) |
|
dsize = epp->ep_dsize + execp->a_text - roundup(execp->a_text, |
dsize = epp->ep_dsize + execp->a_text - roundup(execp->a_text, |
PAGE_SIZE); |
PAGE_SIZE); |
epp->ep_dsize = (dsize > 0) ? dsize : 0; |
epp->ep_dsize = (dsize > 0) ? dsize : 0; |
return (*epp->ep_esch->es_setup_stack)(p, epp); |
return (*epp->ep_esch->es_setup_stack)(l, epp); |
} |
} |