Fix hwdetect assembler clobbers
authorJussi Kivilinna <jussi.kivilinna@mbnet.fi>
Fri, 16 Nov 2012 08:44:44 +0000 (10:44 +0200)
committerWerner Koch <wk@gnupg.org>
Wed, 21 Nov 2012 10:50:39 +0000 (11:50 +0100)
* src/hwfeatures.c (detect_x86_64_gnuc): Add missing %ebx assembler
clobbers.
(detect_x86_64_gnuc, detect_ia32_gnuc) [ENABLE_PADLOCK_SUPPORT]: Add
missing %ecx assembler clobbers.
--

detect_x86_64_gnuc() and detect_ia32_gnuc() have missing clobbers in
assembler statements. "%ebx" is missing in x86-64, probably because
copy-paste error (i386 code saves and restores %ebx to/from stack).
"%ecx" is missing from PadLock detection.

[v2]
 - add GNU style changelog

Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
src/hwfeatures.c

index cf80fe0..456c07a 100644 (file)
@@ -56,7 +56,7 @@ detect_x86_64_gnuc (void)
      "movl  %%ecx, 8(%0)\n\t"
      :
      : "S" (&vendor_id[0])
-     : "%eax", "%ecx", "%edx", "cc"
+     : "%eax", "%ebx", "%ecx", "%edx", "cc"
      );
   vendor_id[12] = 0;
 
@@ -105,7 +105,7 @@ detect_x86_64_gnuc (void)
          ".Lready%=:\n"
          : "+r" (hw_features)
          :
-         : "%eax", "%edx", "cc"
+         : "%eax", "%ebx", "%ecx", "%edx", "cc"
          );
     }
 #endif /*ENABLE_PADLOCK_SUPPORT*/
@@ -122,7 +122,7 @@ detect_x86_64_gnuc (void)
          ".Lno_aes%=:\n"
          : "+r" (hw_features)
          :
-         : "%eax", "%ecx", "%edx", "cc"
+         : "%eax", "%ebx", "%ecx", "%edx", "cc"
          );
     }
   else if (!strcmp (vendor_id, "AuthenticAMD"))
@@ -230,7 +230,7 @@ detect_ia32_gnuc (void)
          ".Lready%=:\n"
          : "+r" (hw_features)
          :
-         : "%eax", "%edx", "cc"
+         : "%eax", "%ecx", "%edx", "cc"
          );
     }
 #endif /*ENABLE_PADLOCK_SUPPORT*/