PERFORCE change 77421 for review
Peter Wemm
peter at FreeBSD.org
Tue May 24 22:44:02 GMT 2005
http://perforce.freebsd.org/chv.cgi?CH=77421
Change 77421 by peter at peter_melody on 2005/05/24 22:43:09
Commit something that actually works
Affected files ...
.. //depot/projects/hammer/sys/kern/sys_process.c#24 edit
Differences ...
==== //depot/projects/hammer/sys/kern/sys_process.c#24 (text+ko) ====
@@ -469,6 +469,9 @@
int proctree_locked = 0;
lwpid_t tid = 0, *buf;
pid_t saved_pid = pid;
+#ifdef COMPAT_IA32
+ int wrap32 = 0;
+#endif
curp = td->td_proc;
@@ -544,6 +547,11 @@
tid = td2->td_tid;
}
+#ifdef COMPAT_IA32
+ if (td->td_proc->p_sysent == &ia32_freebsd_sysvec &&
+ td2->td_proc->p_sysent == &ia32_freebsd_sysvec)
+ wrap32 = 1;
+#endif
/*
* Permissions check
*/
@@ -849,42 +857,72 @@
case PT_SETREGS:
_PHOLD(p);
- error = proc_write_regs(td2, addr);
+#ifdef COMPAT_IA32
+ if (wrap32)
+ error = proc_write_regs32(td2, addr);
+ else
+#endif
+ error = proc_write_regs(td2, addr);
_PRELE(p);
PROC_UNLOCK(p);
return (error);
case PT_GETREGS:
_PHOLD(p);
- error = proc_read_regs(td2, addr);
+#ifdef COMPAT_IA32
+ if (wrap32)
+ error = proc_read_regs32(td2, addr);
+ else
+#endif
+ error = proc_read_regs(td2, addr);
_PRELE(p);
PROC_UNLOCK(p);
return (error);
case PT_SETFPREGS:
_PHOLD(p);
- error = proc_write_fpregs(td2, addr);
+#ifdef COMPAT_IA32
+ if (wrap32)
+ error = proc_write_fpregs32(td2, addr);
+ else
+#endif
+ error = proc_write_fpregs(td2, addr);
_PRELE(p);
PROC_UNLOCK(p);
return (error);
case PT_GETFPREGS:
_PHOLD(p);
- error = proc_read_fpregs(td2, addr);
+#ifdef COMPAT_IA32
+ if (wrap32)
+ error = proc_read_fpregs32(td2, addr);
+ else
+#endif
+ error = proc_read_fpregs(td2, addr);
_PRELE(p);
PROC_UNLOCK(p);
return (error);
case PT_SETDBREGS:
_PHOLD(p);
- error = proc_write_dbregs(td2, addr);
+#ifdef COMPAT_IA32
+ if (wrap32)
+ error = proc_write_dbregs32(td2, addr);
+ else
+#endif
+ error = proc_write_dbregs(td2, addr);
_PRELE(p);
PROC_UNLOCK(p);
return (error);
case PT_GETDBREGS:
_PHOLD(p);
- error = proc_read_dbregs(td2, addr);
+#ifdef COMPAT_IA32
+ if (wrap32)
+ error = proc_read_dbregs32(td2, addr);
+ else
+#endif
+ error = proc_read_dbregs(td2, addr);
_PRELE(p);
PROC_UNLOCK(p);
return (error);
More information about the p4-projects
mailing list