Subject: new version of cpuid, which doesn't use the edi register any more. Hopefully that works better on some Darwin.

From: "jan.nijtmans" <[email-masked]>
Date: Thu, 24 Jan 2013 22:00:50 +0000

---
 unix/tclUnixCompat.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/unix/tclUnixCompat.c b/unix/tclUnixCompat.c
index 71bd846..5a3ccd4 100644
--- a/unix/tclUnixCompat.c
+++ b/unix/tclUnixCompat.c
@@ -693,12 +693,11 @@ TclWinCPUID(
 
     /* See: <http://en.wikipedia.org/wiki/CPUID> */
 #if defined(HAVE_CPUID)
-    __asm__ __volatile__("mov %%ebx, %%edi     \n\t" /* save %ebx */
+    __asm__ __volatile__("mov %%ebx, %%esi     \n\t" /* save %ebx */
                  "cpuid            \n\t"
-                 "mov %%ebx, %%esi   \n\t" /* save what cpuid just put in %ebx */
-                 "mov %%edi, %%ebx  \n\t" /* restore the old %ebx */
+                 "xchg %%esi, %%ebx   \n\t" /* restore the old %ebx */
                  : "=a"(regsPtr[0]), "=S"(regsPtr[1]), "=c"(regsPtr[2]), "=d"(regsPtr[3])
-                 : "a"(index) : "edi");
+                 : "a"(index));
     status = TCL_OK;
 #endif
     return status;
-- 
cgit v0.12