All of lore.kernel.org
 help / color / mirror / Atom feed
* [2.6.6-BK] x86_64 has buggy ffs() implementation
@ 2004-05-12 13:43 Anton Altaparmakov
  2004-05-12 14:02 ` Andi Kleen
  2004-05-12 20:31 ` H. Peter Anvin
  0 siblings, 2 replies; 6+ messages in thread
From: Anton Altaparmakov @ 2004-05-12 13:43 UTC (permalink / raw)
  To: Andi Kleen, Andrew Morton, Linus Torvalds; +Cc: lkml, yuri, ntfs-dev

Hi Andi, Andrew, Linus,

x86_64 has incorrect include/asm-x86_64/bitops.h::ffs() implementation. 
It uses "g" instead of "rm" in the insline assembled bsfl instruction. 
(This was spotted by Yuri Per.)

bsfl does not accept constant values but only memory ones.  On i386 the
correct "rm" is used.

This causes NTFS build to fail as gcc optimizes a variable into a
constant and ffs() then fails to assemble.

Please apply below patch.  Thanks!

Best regards,

	Anton
-- 
Anton Altaparmakov <aia21 at cam.ac.uk> (replace at with @)
Unix Support, Computing Service, University of Cambridge, CB2 3QH, UK
Linux NTFS maintainer / IRC: #ntfs on irc.freenode.net
WWW: http://linux-ntfs.sf.net/ &
http://www-stu.christs.cam.ac.uk/~aia21/

--- bklinux-2.6/include/asm-x86_64/bitops.h.old	2004-05-12
14:40:32.524022336 +0100
+++ bklinux-2.6/include/asm-x86_64/bitops.h	2004-05-12
14:41:22.595410328 +0100
@@ -458,7 +458,7 @@ static __inline__ int ffs(int x)
 
 	__asm__("bsfl %1,%0\n\t"
 		"cmovzl %2,%0" 
-		: "=r" (r) : "g" (x), "r" (-1));
+		: "=r" (r) : "rm" (x), "r" (-1));
 	return r+1;
 }
 



^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2004-05-12 22:29 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-05-12 13:43 [2.6.6-BK] x86_64 has buggy ffs() implementation Anton Altaparmakov
2004-05-12 14:02 ` Andi Kleen
2004-05-12 20:31 ` H. Peter Anvin
2004-05-12 21:08   ` Anton Altaparmakov
2004-05-12 21:11   ` Gabriel Paubert
2004-05-12 22:29     ` H. Peter Anvin

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.