Messages in this thread Patch in this message | | | Subject | [2.6.6-BK] x86_64 has buggy ffs() implementation | From | Anton Altaparmakov <> | Date | Wed, 12 May 2004 14:43:37 +0100 |
| |
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; }
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |