CVS: winex/server context_i386.c, 1.8, 1.9 mem_externs.h, 1.1, 1.2
[email protected] 27 Jun 2007 11:55:41 -0000
Newsgroups
gmane.comp.emulators.winex.cvs
Message-ID
<[email protected] >
Subject: winex/server context_i386.c,1.8,1.9 mem_externs.h,1.1,1.2Update of /var/lib/cvsd/cvsroot/winex/server
In directory agravaine:/tmp/cvs-serv22764/server
Modified Files:
context_i386.c mem_externs.h
Log Message:
- various changes & configure checks to build on Leopard (MacOS X 10.5)
Index: context_i386.c
===================================================================
RCS file: /var/lib/cvsd/cvsroot/winex/server/context_i386.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- context_i386.c 30 Mar 2007 15:55:03 -0000 1.8
+++ context_i386.c 27 Jun 2007 11:55:39 -0000 1.9
@@ -14,6 +14,9 @@
#include <sys/reg.h>
#endif
#include <unistd.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
#ifdef HAVE_SYS_PTRACE_H
# include <sys/ptrace.h>
#endif
@@ -417,8 +420,14 @@
file_set_error();
}
-#else /* linux || __sun__ || __FreeBSD__ */
-#ifdef __APPLE__
+
+#elif defined(__APPLE__)
+#ifdef MACH_X86_STATE_NEEDS_PREFIX
+#define DREG(a) __##a
+#else
+#define DREG(a) a
+#endif
+
/* retrieve a thread context */
static void get_thread_context (struct thread *thread, unsigned int flags,
CONTEXT *context)
@@ -434,30 +443,30 @@
if (flags & CONTEXT_INTEGER)
{
- context->Eax = regs.eax;
- context->Ebx = regs.ebx;
- context->Ecx = regs.ecx;
- context->Edx = regs.edx;
- context->Esi = regs.esi;
- context->Edi = regs.edi;
+ context->Eax = regs.DREG(eax);
+ context->Ebx = regs.DREG(ebx);
+ context->Ecx = regs.DREG(ecx);
+ context->Edx = regs.DREG(edx);
+ context->Esi = regs.DREG(esi);
+ context->Edi = regs.DREG(edi);
}
if (flags & CONTEXT_CONTROL)
{
- context->Ebp = regs.ebp;
- context->Esp = regs.esp;
- context->Eip = regs.eip;
- context->SegCs = regs.cs;
- context->SegSs = regs.ss;
- context->EFlags = regs.eflags;
+ context->Ebp = regs.DREG(ebp);
+ context->Esp = regs.DREG(esp);
+ context->Eip = regs.DREG(eip);
+ context->SegCs = regs.DREG(cs);
+ context->SegSs = regs.DREG(ss);
+ context->EFlags = regs.DREG(eflags);
}
if (flags & CONTEXT_SEGMENTS)
{
- context->SegDs = regs.ds;
- context->SegEs = regs.es;
- context->SegFs = regs.fs;
- context->SegGs = regs.gs;
+ context->SegDs = regs.DREG(ds);
+ context->SegEs = regs.DREG(es);
+ context->SegFs = regs.DREG(fs);
+ context->SegGs = regs.DREG(gs);
}
}
@@ -470,12 +479,12 @@
(thread_state_t)®s, &sc))
goto error;
- context->Dr0 = regs.dr0;
- context->Dr1 = regs.dr1;
- context->Dr2 = regs.dr2;
- context->Dr3 = regs.dr3;
- context->Dr6 = regs.dr6;
- context->Dr7 = regs.dr7;
+ context->Dr0 = regs.DREG(dr0);
+ context->Dr1 = regs.DREG(dr1);
+ context->Dr2 = regs.DREG(dr2);
+ context->Dr3 = regs.DREG(dr3);
+ context->Dr6 = regs.DREG(dr6);
+ context->Dr7 = regs.DREG(dr7);
}
if (flags & CONTEXT_FLOATING_POINT)
@@ -488,33 +497,33 @@
(thread_state_t)®s, &sc))
goto error;
- memcpy (&sVal, ®s.fpu_fcw, 2);
+ memcpy (&sVal, ®s.DREG(fpu_fcw), 2);
context->FloatSave.ControlWord = sVal;
- memcpy (&sVal, ®s.fpu_fsw, 2);
+ memcpy (&sVal, ®s.DREG(fpu_fsw), 2);
context->FloatSave.StatusWord = sVal;
- context->FloatSave.TagWord = regs.fpu_ftw;
- context->FloatSave.ErrorOffset = regs.fpu_ip;
- context->FloatSave.ErrorSelector = regs.fpu_cs;
- context->FloatSave.DataOffset = regs.fpu_dp;
- context->FloatSave.DataSelector = regs.fpu_ds;
+ context->FloatSave.TagWord = regs.DREG(fpu_ftw);
+ context->FloatSave.ErrorOffset = regs.DREG(fpu_ip);
+ context->FloatSave.ErrorSelector = regs.DREG(fpu_cs);
+ context->FloatSave.DataOffset = regs.DREG(fpu_dp);
+ context->FloatSave.DataSelector = regs.DREG(fpu_ds);
- memcpy (context->FloatSave.RegisterArea, regs.fpu_stmm0.mmst_reg, 10);
+ memcpy (context->FloatSave.RegisterArea, regs.DREG(fpu_stmm0).DREG(mmst_reg), 10);
memcpy (context->FloatSave.RegisterArea + 10,
- regs.fpu_stmm1.mmst_reg, 10);
+ regs.DREG(fpu_stmm1).DREG(mmst_reg), 10);
memcpy (context->FloatSave.RegisterArea + 20,
- regs.fpu_stmm2.mmst_reg, 10);
+ regs.DREG(fpu_stmm2).DREG(mmst_reg), 10);
memcpy (context->FloatSave.RegisterArea + 30,
- regs.fpu_stmm3.mmst_reg, 10);
+ regs.DREG(fpu_stmm3).DREG(mmst_reg), 10);
memcpy (context->FloatSave.RegisterArea + 40,
- regs.fpu_stmm4.mmst_reg, 10);
+ regs.DREG(fpu_stmm4).DREG(mmst_reg), 10);
memcpy (context->FloatSave.RegisterArea + 50,
- regs.fpu_stmm5.mmst_reg, 10);
+ regs.DREG(fpu_stmm5).DREG(mmst_reg), 10);
memcpy (context->FloatSave.RegisterArea + 60,
- regs.fpu_stmm6.mmst_reg, 10);
+ regs.DREG(fpu_stmm6).DREG(mmst_reg), 10);
memcpy (context->FloatSave.RegisterArea + 70,
- regs.fpu_stmm7.mmst_reg, 10);
+ regs.DREG(fpu_stmm7).DREG(mmst_reg), 10);
context->FloatSave.Cr0NpxState = 0; /* FIXME */
}
@@ -540,30 +549,30 @@
if (flags & CONTEXT_INTEGER)
{
- regs.eax = context->Eax;
- regs.ebx = context->Ebx;
- regs.ecx = context->Ecx;
- regs.edx = context->Edx;
- regs.esi = context->Esi;
- regs.edi = context->Edi;
+ regs.DREG(eax) = context->Eax;
+ regs.DREG(ebx) = context->Ebx;
+ regs.DREG(ecx) = context->Ecx;
+ regs.DREG(edx) = context->Edx;
+ regs.DREG(esi) = context->Esi;
+ regs.DREG(edi) = context->Edi;
}
if (flags & CONTEXT_CONTROL)
{
- regs.ebp = context->Ebp;
- regs.esp = context->Esp;
- regs.eip = context->Eip;
- regs.cs = context->SegCs;
- regs.ss = context->SegSs;
- regs.eflags = context->EFlags;
+ regs.DREG(ebp) = context->Ebp;
+ regs.DREG(esp) = context->Esp;
+ regs.DREG(eip) = context->Eip;
+ regs.DREG(cs) = context->SegCs;
+ regs.DREG(ss) = context->SegSs;
+ regs.DREG(eflags) = context->EFlags;
}
if (flags & CONTEXT_SEGMENTS)
{
- regs.ds = context->SegDs;
- regs.es = context->SegEs;
- regs.fs = context->SegFs;
- regs.gs = context->SegGs;
+ regs.DREG(ds) = context->SegDs;
+ regs.DREG(es) = context->SegEs;
+ regs.DREG(fs) = context->SegFs;
+ regs.DREG(gs) = context->SegGs;
}
if (thread_set_state (thread->thread_port, x86_THREAD_STATE32,
@@ -580,12 +589,12 @@
(thread_state_t)®s, &sc))
goto error;
- regs.dr0 = context->Dr0;
- regs.dr1 = context->Dr1;
- regs.dr2 = context->Dr2;
- regs.dr3 = context->Dr3;
- regs.dr6 = context->Dr6;
- regs.dr7 = context->Dr7;
+ regs.DREG(dr0) = context->Dr0;
+ regs.DREG(dr1) = context->Dr1;
+ regs.DREG(dr2) = context->Dr2;
+ regs.DREG(dr3) = context->Dr3;
+ regs.DREG(dr6) = context->Dr6;
+ regs.DREG(dr7) = context->Dr7;
if (thread_set_state (thread->thread_port, x86_DEBUG_STATE32,
(thread_state_t)®s, sc))
@@ -603,31 +612,31 @@
goto error;
sVal = context->FloatSave.ControlWord;
- memcpy (®s.fpu_fcw, &sVal, 2);
+ memcpy (®s.DREG(fpu_fcw), &sVal, 2);
sVal = context->FloatSave.StatusWord;
- memcpy (®s.fpu_fsw, &sVal, 2);
+ memcpy (®s.DREG(fpu_fsw), &sVal, 2);
- regs.fpu_ftw = context->FloatSave.TagWord;
- regs.fpu_ip = context->FloatSave.ErrorOffset;
- regs.fpu_cs = context->FloatSave.ErrorSelector;
- regs.fpu_dp = context->FloatSave.DataOffset;
- regs.fpu_ds = context->FloatSave.DataSelector;
+ regs.DREG(fpu_ftw) = context->FloatSave.TagWord;
+ regs.DREG(fpu_ip) = context->FloatSave.ErrorOffset;
+ regs.DREG(fpu_cs) = context->FloatSave.ErrorSelector;
+ regs.DREG(fpu_dp) = context->FloatSave.DataOffset;
+ regs.DREG(fpu_ds) = context->FloatSave.DataSelector;
- memcpy (regs.fpu_stmm0.mmst_reg, context->FloatSave.RegisterArea, 10);
- memcpy (regs.fpu_stmm1.mmst_reg,
+ memcpy (regs.DREG(fpu_stmm0).DREG(mmst_reg), context->FloatSave.RegisterArea, 10);
+ memcpy (regs.DREG(fpu_stmm1).DREG(mmst_reg),
context->FloatSave.RegisterArea + 10, 10);
- memcpy (regs.fpu_stmm2.mmst_reg,
+ memcpy (regs.DREG(fpu_stmm2).DREG(mmst_reg),
context->FloatSave.RegisterArea + 20, 10);
- memcpy (regs.fpu_stmm3.mmst_reg,
+ memcpy (regs.DREG(fpu_stmm3).DREG(mmst_reg),
context->FloatSave.RegisterArea + 30, 10);
- memcpy (regs.fpu_stmm4.mmst_reg,
+ memcpy (regs.DREG(fpu_stmm4).DREG(mmst_reg),
context->FloatSave.RegisterArea + 40, 10);
- memcpy (regs.fpu_stmm5.mmst_reg,
+ memcpy (regs.DREG(fpu_stmm5).DREG(mmst_reg),
context->FloatSave.RegisterArea + 50, 10);
- memcpy (regs.fpu_stmm6.mmst_reg,
+ memcpy (regs.DREG(fpu_stmm6).DREG(mmst_reg),
context->FloatSave.RegisterArea + 60, 10);
- memcpy (regs.fpu_stmm7.mmst_reg,
+ memcpy (regs.DREG(fpu_stmm7).DREG(mmst_reg),
context->FloatSave.RegisterArea + 70, 10);
if (thread_set_state (thread->thread_port, x86_FLOAT_STATE32,
@@ -642,8 +651,7 @@
#else /* __APPLE__ */
#error You must implement get/set_thread_context for your platform
-#endif /* linux || __sun__ || __FreeBSD__ */
-#endif /* __APPLE__ */
+#endif /* linux || __sun__ || __FreeBSD__ || __APPLE__ */
/* copy a context structure according to the flags */
static void copy_context( CONTEXT *to, const CONTEXT *from, int flags )
Index: mem_externs.h
===================================================================
RCS file: /var/lib/cvsd/cvsroot/winex/server/mem_externs.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- mem_externs.h 28 Apr 2004 12:56:42 -0000 1.1
+++ mem_externs.h 27 Jun 2007 11:55:39 -0000 1.2
@@ -2,6 +2,7 @@
#define EXTERNS_H__
/* Lots of ugliness as we cope with non-standardness */
+#include "config.h"
#ifdef STDHEADERS
/* if we have properly prototyped standard headers, use them */
@@ -11,6 +12,10 @@
# include <string.h>
# include <unistd.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+
#else /* ! STDHEADERS */
/*