Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=1292500b159c00a8fece072b004f154e6fda9f48
Commit:     1292500b159c00a8fece072b004f154e6fda9f48
Parent:     93a38fa2dd83fcaf65b2327fff65e364472388f9
Author:     Frederik Deweerdt <[EMAIL PROTECTED]>
AuthorDate: Wed Jan 16 17:19:08 2008 +0100
Committer:  James Bottomley <[EMAIL PROTECTED]>
CommitDate: Fri Jan 25 11:09:10 2008 -0600

    [SCSI] ultrastor: clean up inline asm warnings
    
    To: [EMAIL PROTECTED]
    Cc: [EMAIL PROTECTED]
    Subject: [trivial patch] scsi/ultrastor: clean up inline asm warnings
    
    Hi,
    
    Compiling latest mainline with gcc 4.2.1 spews the following warnings:
    
    drivers/scsi/ultrastor.c: In function 'find_and_clear_bit_16':
    drivers/scsi/ultrastor.c:303: warning: matching constraint does not allow a 
register
    drivers/scsi/ultrastor.c:302: warning: matching constraint does not allow a 
register
    drivers/scsi/ultrastor.c: At top level:
    drivers/scsi/ultrastor.c:1202: warning: matching constraint does not allow 
a register
    drivers/scsi/ultrastor.c:1202: warning: matching constraint does not allow 
a register
    drivers/scsi/ultrastor.c: In function 'ultrastor_queuecommand':
    drivers/scsi/ultrastor.c:698: warning: matching constraint does not allow a 
register
    drivers/scsi/ultrastor.c:698: warning: matching constraint does not allow a 
register
    drivers/scsi/ultrastor.c:698: warning: matching constraint does not allow a 
register
    drivers/scsi/ultrastor.c:698: warning: matching constraint does not allow a 
register
    drivers/scsi/ultrastor.c:698: warning: matching constraint does not allow a 
register
    drivers/scsi/ultrastor.c:698: warning: matching constraint does not allow a 
register
    drivers/scsi/ultrastor.c:698: warning: matching constraint does not allow a 
register
    drivers/scsi/ultrastor.c:302: warning: matching constraint does not allow a 
register
    drivers/scsi/ultrastor.c:302: warning: matching constraint does not allow a 
register
    
    The following patch fixes it by using the '+' operator on the (*field)
    operand, marking it as read-write to gcc. I diffed the two resulting .s,
    and gcc produced the same code. This was tested with gcc 4.2.1 and gcc 3.4.3
    
    Signed-off-by: Frederik Deweerdt <[EMAIL PROTECTED]>
    Cc: Adrian Bunk <[EMAIL PROTECTED]>
    Signed-off-by: James Bottomley <[EMAIL PROTECTED]>
---
 drivers/scsi/ultrastor.c |   13 ++++++++++---
 1 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/drivers/scsi/ultrastor.c b/drivers/scsi/ultrastor.c
index 1d3b029..75eca6b 100644
--- a/drivers/scsi/ultrastor.c
+++ b/drivers/scsi/ultrastor.c
@@ -298,9 +298,16 @@ static inline int find_and_clear_bit_16(unsigned long 
*field)
 {
   int rv;
 
-  if (*field == 0) panic("No free mscp");
-  asm("xorl %0,%0\n0:\tbsfw %1,%w0\n\tbtr %0,%1\n\tjnc 0b"
-      : "=&r" (rv), "=m" (*field) : "1" (*field));
+  if (*field == 0)
+    panic("No free mscp");
+
+  asm volatile (
+       "xorl %0,%0\n\t"
+       "0: bsfw %1,%w0\n\t"
+       "btr %0,%1\n\t"
+       "jnc 0b"
+       : "=&r" (rv), "=m" (*field) :);
+
   return rv;
 }
 
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to