PERFORCE change 77417 for review
Peter Wemm
peter at FreeBSD.org
Tue May 24 21:56:02 GMT 2005
http://perforce.freebsd.org/chv.cgi?CH=77417
Change 77417 by peter at peter_melody on 2005/05/24 21:55:16
flesh out some more. These might work too.
Affected files ...
.. //depot/projects/hammer/sys/amd64/ia32/ia32_reg.c#4 edit
Differences ...
==== //depot/projects/hammer/sys/amd64/ia32/ia32_reg.c#4 (text+ko) ====
@@ -144,20 +144,53 @@
int
set_fpregs32(struct thread *td, struct fpreg32 *regs)
{
+ struct save87 *sv_87 = (struct save87 *)regs;
+ struct env87 *penv_87 = &sv_87->sv_env;
+ struct savefpu *sv_fpu = &td->td_pcb->pcb_save;
+ struct envxmm *penv_xmm = &sv_fpu->sv_env;
+ int i;
+
+ /* FPU control/status */
+ penv_xmm->en_cw = penv_87->en_cw;
+ penv_xmm->en_sw = penv_87->en_sw;
+ penv_xmm->en_tw = penv_87->en_tw;
+ penv_xmm->en_rip = penv_87->en_fip;
+ /* penv_87->en_fcs and en_fos ignored, see above */
+ penv_xmm->en_opcode = penv_87->en_opcode;
+ penv_xmm->en_rdp = penv_87->en_foo;
+
+ /* FPU registers */
+ for (i = 0; i < 8; ++i)
+ sv_fpu->sv_fp[i].fp_acc = sv_87->sv_ac[i];
+ for (i = 8; i < 16; ++i)
+ bzero(&sv_fpu->sv_fp[i].fp_acc, sizeof(sv_fpu->sv_fp[i].fp_acc));
- return (ENOSYS);
+ return (0);
}
int
fill_dbregs32(struct thread *td, struct dbreg32 *regs)
{
+ struct dbreg dr;
+ int err, i;
- return (ENOSYS);
+ err = fill_dbregs(td, &dr);
+ for (i = 0; i < 8; i++)
+ regs->dr[i] = dr.dr[i];
+ for (i = 8; i < 16; i++)
+ regs->dr[i] = 0;
+ return (err);
}
int
set_dbregs32(struct thread *td, struct dbreg32 *regs)
{
+ struct dbreg dr;
+ int i;
- return (ENOSYS);
+ for (i = 0; i < 8; i++)
+ dr.dr[i] = regs->dr[i];
+ for (i = 8; i < 16; i++)
+ dr.dr[i] = 0;
+ return (set_dbregs(td, &dr));
}
More information about the p4-projects
mailing list