diff options
author | nijtmans@users.sourceforge.net <jan.nijtmans> | 2012-05-02 06:50:54 (GMT) |
---|---|---|
committer | nijtmans@users.sourceforge.net <jan.nijtmans> | 2012-05-02 06:50:54 (GMT) |
commit | 9665eecb70fd31b145d6e23864e3b927dc6e1528 (patch) | |
tree | 5362859f7163fe6a3d7add68da5cea7325f351cf /unix/tclUnixCompat.c | |
parent | 0dcb8e5b26fe462080958d3ef48deca1e8a47dee (diff) | |
parent | 315f7c42a1e9196e642cb46879b19ef16e449e2f (diff) | |
download | tcl-9665eecb70fd31b145d6e23864e3b927dc6e1528.zip tcl-9665eecb70fd31b145d6e23864e3b927dc6e1528.tar.gz tcl-9665eecb70fd31b145d6e23864e3b927dc6e1528.tar.bz2 |
TclWinCPUID now respects -fPIC compilation on 32-bit Linux
Diffstat (limited to 'unix/tclUnixCompat.c')
-rw-r--r-- | unix/tclUnixCompat.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/unix/tclUnixCompat.c b/unix/tclUnixCompat.c index 1c42056..5971272 100644 --- a/unix/tclUnixCompat.c +++ b/unix/tclUnixCompat.c @@ -991,12 +991,14 @@ TclWinCPUID( int status = TCL_ERROR; #ifdef HAVE_CPUID - /* disabled in emergency -- fails on linux */ -# if 0 - __asm__ __volatile__ ("cpuid":\ - "=a" (regsPtr[0]), "=b" (regsPtr[1]), "=c" (regsPtr[2]), "=d" (regsPtr[3]) : "a" (index)); + __asm__ __volatile__("pushl %%ebx \n\t" /* save %ebx */ + "cpuid \n\t" + "movl %%ebx, %1 \n\t" /* save what cpuid just put in %ebx */ + "popl %%ebx \n\t" /* restore the old %ebx */ + : "=a"(regsPtr[0]), "=r"(regsPtr[1]), "=c"(regsPtr[2]), "=d"(regsPtr[3]) + : "a"(index) + : "cc"); status = TCL_OK; -# endif #endif return status; } |