diff options
author | nijtmans <nijtmans> | 2010-12-21 10:04:59 (GMT) |
---|---|---|
committer | nijtmans <nijtmans> | 2010-12-21 10:04:59 (GMT) |
commit | 0525618427137b6c0499f24f3f6bd351bd18bf36 (patch) | |
tree | 211ee33fd76e54ca8390071e3eaee209faf27d67 | |
parent | 50f1cae188944567a179bca10ddb10891ffd2dff (diff) | |
download | tcl-0525618427137b6c0499f24f3f6bd351bd18bf36.zip tcl-0525618427137b6c0499f24f3f6bd351bd18bf36.tar.gz tcl-0525618427137b6c0499f24f3f6bd351bd18bf36.tar.bz2 |
[Patch 3059922]: fixes for mingw64 - gcc4.5.1 tdm64-1: completed for all environments.
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | win/tclWin32Dll.c | 21 |
2 files changed, 23 insertions, 3 deletions
@@ -1,5 +1,10 @@ 2010-12-20 Jan Nijtmans <nijtmans@users.sf.net> + * win/tclWin32Dll.c: [Patch 3059922]: fixes for mingw64 - gcc4.5.1 + tdm64-1: completed for all environments. + +2010-12-20 Jan Nijtmans <nijtmans@users.sf.net> + * win/configure.in: Explicitely test for intrinsics support in compiler, before assuming only MSVC has it. * win/configure: (autoconf-2.59) diff --git a/win/tclWin32Dll.c b/win/tclWin32Dll.c index 1f06703..ac4a008 100644 --- a/win/tclWin32Dll.c +++ b/win/tclWin32Dll.c @@ -10,10 +10,13 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclWin32Dll.c,v 1.72 2010/12/19 18:14:47 nijtmans Exp $ + * RCS: @(#) $Id: tclWin32Dll.c,v 1.73 2010/12/21 10:04:59 nijtmans Exp $ */ #include "tclWinInt.h" +#if defined(HAVE_INTRIN_H) || (defined(_MSC_VER) && defined(_WIN64)) +# include <intrin.h> +#endif /* * The following data structures are used when loading the thunking library @@ -720,7 +723,12 @@ TclWinCPUID( { int status = TCL_ERROR; -#if defined(__GNUC__) +#if defined(HAVE_INTRIN_H) && defined(_WIN64) + + __cpuid(regsPtr, index); + status = TCL_OK; + +#elif defined(__GNUC__) # if defined(_WIN64) /* * Execute the CPUID instruction with the given index, and store results @@ -836,7 +844,13 @@ TclWinCPUID( status = registration.status; # endif /* !_WIN64 */ -#elif defined(_MSC_VER) && !defined(_WIN64) +#elif defined(_MSC_VER) +# if defined(_WIN64) + + __cpuid(regsPtr, index); + status = TCL_OK; + +# else /* * Define a structure in the stack frame to hold the registers. */ @@ -883,6 +897,7 @@ TclWinCPUID( /* do nothing */ } +# endif #else /* * Don't know how to do assembly code for this compiler and/or |