Tcl Source Code

Check-in [794facf36b]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:[Bug 3601804]: platformCPUID segmentation fault on Darwin
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | core-8-4-branch
Files: files | file ages | folders
SHA1: 794facf36b5347a8bf4d060b2320c8ee3760f2d6
User & Date: jan.nijtmans 2013-01-26 16:50:22
Context
2013-01-30
19:04
(::platform::LibcVersion): See [Bug 3599098]: Fixed the RE extracting the version to avoid issues w... check-in: 2798119d9f user: andreask tags: core-8-4-branch
2013-01-26
16:53
[Bug 3601804]: platformCPUID segmentation fault on Darwin check-in: 2be066838a user: jan.nijtmans tags: core-8-5-branch
16:50
[Bug 3601804]: platformCPUID segmentation fault on Darwin check-in: 794facf36b user: jan.nijtmans tags: core-8-4-branch
2013-01-24
22:00
new version of cpuid, which doesn't use the edi register any more. Hopefully that works better on so... check-in: 2153733cd7 user: jan.nijtmans tags: core-8-4-branch
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to ChangeLog.






1
2
3
4
5
6
7





2013-01-16  Jan Nijtmans  <[email protected]>

	* Makefile.in: Enable win32 build with -DTCL_NO_DEPRECATED, just
	* generic/tcl.h: as the UNIX build. Define Tcl_EvalObj and
	* generic/tclDecls.h: Tcl_GlobalEvalObj as macros, even when
	* generic/tclBasic.c: TCL_NO_DEPRECATED is defined, so Tk
	can benefit from it too.
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
2013-01-26  Jan Nijtmans  <[email protected]>

	* unix/tclUnixCompat.c: [Bug 3601804]: platformCPUID segmentation
	fault on Darwin.

2013-01-16  Jan Nijtmans  <[email protected]>

	* Makefile.in: Enable win32 build with -DTCL_NO_DEPRECATED, just
	* generic/tcl.h: as the UNIX build. Define Tcl_EvalObj and
	* generic/tclDecls.h: Tcl_GlobalEvalObj as macros, even when
	* generic/tclBasic.c: TCL_NO_DEPRECATED is defined, so Tk
	can benefit from it too.

Changes to unix/tclUnixCompat.c.

689
690
691
692
693
694
695







696
697
698
699
700

701
702
703
704
705
706
707
    unsigned int index,		/* Which CPUID value to retrieve. */
    unsigned int *regsPtr)	/* Registers after the CPUID. */
{
    int status = TCL_ERROR;

    /* See: <http://en.wikipedia.org/wiki/CPUID> */
#if defined(HAVE_CPUID)







    __asm__ __volatile__("mov %%ebx, %%esi     \n\t" /* save %ebx */
                 "cpuid            \n\t"
                 "xchg %%esi, %%ebx   \n\t" /* restore the old %ebx */
                 : "=a"(regsPtr[0]), "=S"(regsPtr[1]), "=c"(regsPtr[2]), "=d"(regsPtr[3])
                 : "a"(index));

    status = TCL_OK;
#endif
    return status;
}

/*
 * Local Variables:







>
>
>
>
>
>
>





>







689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
    unsigned int index,		/* Which CPUID value to retrieve. */
    unsigned int *regsPtr)	/* Registers after the CPUID. */
{
    int status = TCL_ERROR;

    /* See: <http://en.wikipedia.org/wiki/CPUID> */
#if defined(HAVE_CPUID)
#if defined(__x86_64__) || defined(_M_AMD64) || defined (_M_X64)
    __asm__ __volatile__("movq %%rbx, %%rsi     \n\t" /* save %rbx */
                 "cpuid            \n\t"
                 "xchgq %%rsi, %%rbx   \n\t" /* restore the old %rbx */
                 : "=a"(regsPtr[0]), "=S"(regsPtr[1]), "=c"(regsPtr[2]), "=d"(regsPtr[3])
                 : "a"(index));
#else
    __asm__ __volatile__("mov %%ebx, %%esi     \n\t" /* save %ebx */
                 "cpuid            \n\t"
                 "xchg %%esi, %%ebx   \n\t" /* restore the old %ebx */
                 : "=a"(regsPtr[0]), "=S"(regsPtr[1]), "=c"(regsPtr[2]), "=d"(regsPtr[3])
                 : "a"(index));
#endif
    status = TCL_OK;
#endif
    return status;
}

/*
 * Local Variables: