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 [email protected]
with "unsubscribe freebsd-current" in the body of the message