The svr4 module is broken after the following change to svr4_machdep.c
rev 1.5.

----------------------------------------------------------------------
revision 1.5
date: 1999/06/01 18:20:23;  author: jlemon;  state: Exp;  lines: +0 -4
Unifdef VM86.

Reviewed by:    silence on on -current
----------------------------------------------------------------------

The problem is svr4_getcontext() and svr4_setcontext() now refers
to tf_vm86_xx fields which are defined in struct trapframe_vm68
but not in p->p_md.md_regs (struct trapframe).

int
svr4_setcontext(p, uc)
        struct proc *p;
        struct svr4_ucontext *uc;
{
        struct sigacts *psp = p->p_sigacts;
        register struct trapframe *tf;
        svr4_greg_t *r = uc->uc_mcontext.greg;
        struct svr4_sigaltstack *s = &uc->uc_stack;
        struct sigaltstack *sf = &psp->ps_sigstk;
        int mask;
[...]
        if ((uc->uc_flags & SVR4_UC_CPU) == 0)
                return 0;

        tf = p->p_md.md_regs;

        /*
         * Restore register context.
         */
        if (r[SVR4_X86_EFL] & PSL_VM) {
                tf->tf_vm86_gs = r[SVR4_X86_GS];
                tf->tf_vm86_ffs = r[SVR4_X86_FS];
                tf->tf_vm86_es = r[SVR4_X86_ES];
                tf->tf_vm86_ds = r[SVR4_X86_DS];
                set_vflags(p, r[SVR4_X86_EFL]); 
        } else  
        {
[...]


Kazu



To Unsubscribe: send mail to majord...@freebsd.org
with "unsubscribe freebsd-current" in the body of the message

Reply via email to