87928e4
diff -up libgcrypt-1.4.4/random/rndhw.c.padlock libgcrypt-1.4.4/random/rndhw.c
87928e4
--- libgcrypt-1.4.4/random/rndhw.c.padlock	2008-09-03 12:04:43.000000000 +0200
87928e4
+++ libgcrypt-1.4.4/random/rndhw.c	2009-06-17 20:11:42.000000000 +0200
87928e4
@@ -41,7 +41,7 @@ static size_t
87928e4
 poll_padlock (void (*add)(const void*, size_t, enum random_origins),
87928e4
               enum random_origins origin, int fast)
87928e4
 {
87928e4
-  char buffer[64+8] __attribute__ ((aligned (8)));
87928e4
+  volatile char buffer[64+8] __attribute__ ((aligned (8)));
87928e4
   char *p;
87928e4
   unsigned int nbytes, status;
87928e4
   
87928e4
@@ -55,12 +55,11 @@ poll_padlock (void (*add)(const void*, s
87928e4
   nbytes = 0;
87928e4
   while (nbytes < 64)
87928e4
     {
87928e4
-      asm volatile 
87928e4
+      asm volatile
87928e4
         ("movl %1, %%edi\n\t"         /* Set buffer.  */
87928e4
          "xorl %%edx, %%edx\n\t"      /* Request up to 8 bytes.  */
87928e4
-         ".byte 0x0f, 0xa7, 0xc0\n\t" /* XSTORE RNG. */
87928e4
-         "movl %%eax, %0\n"           /* Return the status.  */
87928e4
-         : "=g" (status)
87928e4
+         ".byte 0x0f, 0xa7, 0xc0\n"   /* XSTORE RNG. */
87928e4
+         : "=a" (status)
87928e4
          : "g" (p)
87928e4
          : "%edx", "%edi", "cc"
87928e4
          );