2008-01-21 Marcus Brinkmann <marcus@g10code.de>
authorMarcus Brinkmann <mb@g10code.com>
Mon, 21 Jan 2008 17:17:54 +0000 (17:17 +0000)
committerMarcus Brinkmann <mb@g10code.com>
Mon, 21 Jan 2008 17:17:54 +0000 (17:17 +0000)
* hwfeatures.c (detect_ia32_gnuc): Fix inline asm.

src/ChangeLog
src/hwfeatures.c

index c9d56fd..c6e08de 100644 (file)
@@ -1,3 +1,7 @@
+2008-01-21  Marcus Brinkmann  <marcus@g10code.de>
+
+       * hwfeatures.c (detect_ia32_gnuc): Fix inline asm.
+
 2007-12-11  Werner Koch  <wk@g10code.com>
 
        * visibility.c (gcry_md_hash_buffer): Don't use return vor a void
index 200da2c..4dd4e4f 100644 (file)
@@ -79,13 +79,12 @@ detect_ia32_gnuc (void)
     ("pushl %%ebx\n\t"           /* Save GOT register.  */
      "xorl  %%eax, %%eax\n\t"    /* 0 -> EAX.  */
      "cpuid\n\t"                 /* Get vendor ID.  */
-     "leal  %0, %%eax\n\t"       /* EBX,EDX,ECX -> VENDOR_ID.  */
-     "movl  %%ebx, (%%eax)\n\t"
-     "movl  %%edx, 4(%%eax)\n\t"
-     "movl  %%ecx, 8(%%eax)\n\t"
+     "movl  %%ebx, (%0)\n\t"     /* EBX,EDX,ECX -> VENDOR_ID.  */
+     "movl  %%edx, 4(%0)\n\t"
+     "movl  %%ecx, 8(%0)\n\t"
      "popl  %%ebx\n"
-     : "=m" (vendor_id)
      :
+     : "S" (&vendor_id[0])
      : "%eax", "%ecx", "%edx", "cc"
      );
   vendor_id[12] = 0;