[SCSI] ultrastor: clean up inline asm warnings
To: linux-kernel@vger.kernel.org Cc: bunk@kernel.org 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 <frederik.deweerdt@gmail.com> Cc: Adrian Bunk <trivial@kernel.org> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
This commit is contained in:
		
					parent
					
						
							
								93a38fa2dd
							
						
					
				
			
			
				commit
				
					
						1292500b15
					
				
			
		
					 1 changed files with 10 additions and 3 deletions
				
			
		|  | @ -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; | ||||
| } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Frederik Deweerdt
				Frederik Deweerdt