CVS: winex/server context_i386.c, 1.8, 1.9 mem_externs.h, 1.1, 1.2

[email protected]
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)&regs, &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)&regs, &sc))
          goto error;
 
-      memcpy (&sVal, &regs.fpu_fcw, 2);
+      memcpy (&sVal, &regs.DREG(fpu_fcw), 2);
       context->FloatSave.ControlWord = sVal;
 
-      memcpy (&sVal, &regs.fpu_fsw, 2);
+      memcpy (&sVal, &regs.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)&regs, &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)&regs, sc))
@@ -603,31 +612,31 @@
          goto error;
 
       sVal = context->FloatSave.ControlWord;
-      memcpy (&regs.fpu_fcw, &sVal, 2);
+      memcpy (&regs.DREG(fpu_fcw), &sVal, 2);
 
       sVal = context->FloatSave.StatusWord;
-      memcpy (&regs.fpu_fsw, &sVal, 2);
+      memcpy (&regs.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 */
 
 /*
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.